ly-front/public/dep/mars3d/Cesium/index.js

16286 lines
3.9 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @license
* Cesium - https://github.com/CesiumGS/cesium
* Version 1.127
*
* Copyright 2011-2022 Cesium Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Columbus View (Pat. Pend.)
*
* Portions licensed separately.
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
*/
var _Ee=Object.create;var uZ=Object.defineProperty;var gEe=Object.getOwnPropertyDescriptor;var yEe=Object.getOwnPropertyNames;var xEe=Object.getPrototypeOf,bEe=Object.prototype.hasOwnProperty;var _1=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Yu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var TEe=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of yEe(t))!bEe.call(e,o)&&o!==n&&uZ(e,o,{get:()=>t[o],enumerable:!(i=gEe(t,o))||i.enumerable});return e};var Hr=(e,t,n)=>(n=e!=null?_Ee(xEe(e)):{},TEe(t||!e||!e.__esModule?uZ(n,"default",{value:e,enumerable:!0}):n,e));var g1=Yu((lvt,dZ)=>{var ap=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};ap.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};ap.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};ap.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};ap.prototype.random_int31=function(){return this.random_int()>>>1};ap.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};ap.prototype.random=function(){return this.random_int()*(1/4294967296)};ap.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};ap.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};dZ.exports=ap});var SZ=Yu((gT,yT)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof gT=="object"&&gT&&!gT.nodeType&&gT,n=typeof yT=="object"&&yT&&!yT.nodeType&&yT,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,p=128,g="-",m=/^xn--/,x=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,T={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=s-a,A=Math.floor,E=String.fromCharCode,v;function D(V){throw new RangeError(T[V])}function R(V,G){for(var k=V.length,W=[];k--;)W[k]=G(V[k]);return W}function O(V,G){var k=V.split("@"),W="";k.length>1&&(W=k[0]+"@",V=k[1]),V=V.replace(b,".");var q=V.split("."),J=R(q,G).join(".");return W+J}function M(V){for(var G=[],k=0,W=V.length,q,J;k<W;)q=V.charCodeAt(k++),q>=55296&&q<=56319&&k<W?(J=V.charCodeAt(k++),(J&64512)==56320?G.push(((q&1023)<<10)+(J&1023)+65536):(G.push(q),k--)):G.push(q);return G}function N(V){return R(V,function(G){var k="";return G>65535&&(G-=65536,k+=E(G>>>10&1023|55296),G=56320|G&1023),k+=E(G),k}).join("")}function _(V){return V-48<10?V-22:V-65<26?V-65:V-97<26?V-97:s}function S(V,G){return V+22+75*(V<26)-((G!=0)<<5)}function w(V,G,k){var W=0;for(V=k?A(V/f):V>>1,V+=A(V/G);V>C*c>>1;W+=s)V=A(V/C);return A(W+(C+1)*V/(V+u))}function I(V){var G=[],k=V.length,W,q=0,J=p,j=h,K,Q,he,ye,re,_e,be,we,De;for(K=V.lastIndexOf(g),K<0&&(K=0),Q=0;Q<K;++Q)V.charCodeAt(Q)>=128&&D("not-basic"),G.push(V.charCodeAt(Q));for(he=K>0?K+1:0;he<k;){for(ye=q,re=1,_e=s;he>=k&&D("invalid-input"),be=_(V.charCodeAt(he++)),(be>=s||be>A((r-q)/re))&&D("overflow"),q+=be*re,we=_e<=j?a:_e>=j+c?c:_e-j,!(be<we);_e+=s)De=s-we,re>A(r/De)&&D("overflow"),re*=De;W=G.length+1,j=w(q-ye,W,ye==0),A(q/W)>r-J&&D("overflow"),J+=A(q/W),q%=W,G.splice(q++,0,J)}return N(G)}function L(V){var G,k,W,q,J,j,K,Q,he,ye,re,_e=[],be,we,De,Me;for(V=M(V),be=V.length,G=p,k=0,J=h,j=0;j<be;++j)re=V[j],re<128&&_e.push(E(re));for(W=q=_e.length,q&&_e.push(g);W<be;){for(K=r,j=0;j<be;++j)re=V[j],re>=G&&re<K&&(K=re);for(we=W+1,K-G>A((r-k)/we)&&D("overflow"),k+=(K-G)*we,G=K,j=0;j<be;++j)if(re=V[j],re<G&&++k>r&&D("overflow"),re==G){for(Q=k,he=s;ye=he<=J?a:he>=J+c?c:he-J,!(Q<ye);he+=s)Me=Q-ye,De=s-ye,_e.push(E(S(ye+Me%De,0))),Q=A(Me/De);_e.push(E(S(Q,0))),J=w(k,we,W==q),k=0,++W}++k,++G}return _e.join("")}function B(V){return O(V,function(G){return m.test(G)?I(G.slice(4).toLowerCase()):G})}function H(V){return O(V,function(G){return x.test(G)?"xn--"+L(G):G})}if(o={version:"1.3.2",ucs2:{decode:M,encode:N},decode:I,encode:L,toASCII:H,toUnicode:B},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(yT.exports==t)n.exports=o;else for(v in o)o.hasOwnProperty(v)&&(t[v]=o[v]);else e.punycode=o})(gT)});var wZ=Yu((vZ,v1)=>{/*!
* URI.js - Mutating URLs
* IPv6 Support
*
* Version: 1.19.11
*
* Author: Rodney Rehm
* Web: http://medialize.github.io/URI.js/
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
*/(function(e,t){"use strict";typeof v1=="object"&&v1.exports?v1.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(vZ,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var p=0;p<3&&(f[0]==="0"&&f.length>1);p++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,x=0,b=-1,T=!1;for(h=0;h<c;h++)T?s[h]==="0"?x+=1:(T=!1,x>m&&(g=b,m=x)):s[h]==="0"&&(T=!0,b=h,x=1);x>m&&(g=b,m=x),m>1&&s.splice(g,m,""),a=s.length;var C="";for(s[0]===""&&(C=":"),h=0;h<a&&(C+=s[h],h!==a-1);h++)C+=":";return s[a-1]===""&&(C+=":"),C}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var IZ=Yu((DZ,w1)=>{/*!
* URI.js - Mutating URLs
* Second Level Domain (SLD) Support
*
* Version: 1.19.11
*
* Author: Rodney Rehm
* Web: http://medialize.github.io/URI.js/
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
*/(function(e,t){"use strict";typeof w1=="object"&&w1.exports?w1.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(DZ,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var $l=Yu((PZ,D1)=>{/*!
* URI.js - Mutating URLs
*
* Version: 1.19.11
*
* Author: Rodney Rehm
* Web: http://medialize.github.io/URI.js/
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
*/(function(e,t){"use strict";typeof D1=="object"&&D1.exports?D1.exports=t(SZ(),wZ(),IZ()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(PZ,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(S,w){var I=arguments.length>=1,L=arguments.length>=2;if(!(this instanceof r))return I?L?new r(S,w):new r(S):new r;if(S===void 0){if(I)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?S=location.href+"":S=""}if(S===null&&I)throw new TypeError("null is not a valid argument for URI");return this.href(S),w!==void 0?this.absoluteTo(w):this}function s(S){return/^[0-9]+$/.test(S)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(S){return S.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(S){return S===void 0?"Undefined":String(Object.prototype.toString.call(S)).slice(8,-1)}function h(S){return f(S)==="Array"}function p(S,w){var I={},L,B;if(f(w)==="RegExp")I=null;else if(h(w))for(L=0,B=w.length;L<B;L++)I[w[L]]=!0;else I[w]=!0;for(L=0,B=S.length;L<B;L++){var H=I&&I[S[L]]!==void 0||!I&&w.test(S[L]);H&&(S.splice(L,1),B--,L--)}return S}function g(S,w){var I,L;if(h(w)){for(I=0,L=w.length;I<L;I++)if(!g(S,w[I]))return!1;return!0}var B=f(w);for(I=0,L=S.length;I<L;I++)if(B==="RegExp"){if(typeof S[I]=="string"&&S[I].match(w))return!0}else if(S[I]===w)return!0;return!1}function m(S,w){if(!h(S)||!h(w)||S.length!==w.length)return!1;S.sort(),w.sort();for(var I=0,L=S.length;I<L;I++)if(S[I]!==w[I])return!1;return!0}function x(S){var w=/^\/+|\/+$/g;return S.replace(w,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(S){if(!(!S||!S.nodeName)){var w=S.nodeName.toLowerCase();if(!(w==="input"&&S.type!=="image"))return r.domAttributes[w]}};function b(S){return escape(S)}function T(S){return encodeURIComponent(S).replace(/[!'()*]/g,b).replace(/\*/g,"%2A")}r.encode=T,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=T,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(S,w){var I=r.encode(S+"");return w===void 0&&(w=r.escapeQuerySpace),w?I.replace(/%20/g,"+"):I},r.decodeQuery=function(S,w){S+="",w===void 0&&(w=r.escapeQuerySpace);try{return r.decode(w?S.replace(/\+/g,"%20"):S)}catch{return S}};var C={encode:"encode",decode:"decode"},A,E=function(S,w){return function(I){try{return r[w](I+"").replace(r.characters[S][w].expression,function(L){return r.characters[S][w].map[L]})}catch{return I}}};for(A in C)r[A+"PathSegment"]=E("pathname",C[A]),r[A+"UrnPathSegment"]=E("urnpath",C[A]);var v=function(S,w,I){return function(L){var B;I?B=function(k){return r[w](r[I](k))}:B=r[w];for(var H=(L+"").split(S),V=0,G=H.length;V<G;V++)H[V]=B(H[V]);return H.join(S)}};r.decodePath=v("/","decodePathSegment"),r.decodeUrnPath=v(":","decodeUrnPathSegment"),r.recodePath=v("/","encodePathSegment","decode"),r.recodeUrnPath=v(":","encodeUrnPathSegment","decode"),r.encodeReserved=E("reserved","encode"),r.parse=function(S,w){var I;return w||(w={preventInvalidHostname:r.preventInvalidHostname}),S=S.replace(r.leading_whitespace_expression,""),S=S.replace(r.ascii_tab_whitespace,""),I=S.indexOf("#"),I>-1&&(w.fragment=S.substring(I+1)||null,S=S.substring(0,I)),I=S.indexOf("?"),I>-1&&(w.query=S.substring(I+1)||null,S=S.substring(0,I)),S=S.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),S=S.replace(/^[/\\]{2,}/i,"//"),S.substring(0,2)==="//"?(w.protocol=null,S=S.substring(2),S=r.parseAuthority(S,w)):(I=S.indexOf(":"),I>-1&&(w.protocol=S.substring(0,I)||null,w.protocol&&!w.protocol.match(r.protocol_expression)?w.protocol=void 0:S.substring(I+1,I+3).replace(/\\/g,"/")==="//"?(S=S.substring(I+3),S=r.parseAuthority(S,w)):(S=S.substring(I+1),w.urn=!0))),w.path=S,w},r.parseHost=function(S,w){S||(S=""),S=S.replace(/\\/g,"/");var I=S.indexOf("/"),L,B;if(I===-1&&(I=S.length),S.charAt(0)==="[")L=S.indexOf("]"),w.hostname=S.substring(1,L)||null,w.port=S.substring(L+2,I)||null,w.port==="/"&&(w.port=null);else{var H=S.indexOf(":"),V=S.indexOf("/"),G=S.indexOf(":",H+1);G!==-1&&(V===-1||G<V)?(w.hostname=S.substring(0,I)||null,w.port=null):(B=S.substring(0,I).split(":"),w.hostname=B[0]||null,w.port=B[1]||null)}return w.hostname&&S.substring(I).charAt(0)!=="/"&&(I++,S="/"+S),w.preventInvalidHostname&&r.ensureValidHostname(w.hostname,w.protocol),w.port&&r.ensureValidPort(w.port),S.substring(I)||"/"},r.parseAuthority=function(S,w){return S=r.parseUserinfo(S,w),r.parseHost(S,w)},r.parseUserinfo=function(S,w){var I=S,L=S.indexOf("\\");L!==-1&&(S=S.replace(/\\/g,"/"));var B=S.indexOf("/"),H=S.lastIndexOf("@",B>-1?B:S.length-1),V;return H>-1&&(B===-1||H<B)?(V=S.substring(0,H).split(":"),w.username=V[0]?r.decode(V[0]):null,V.shift(),w.password=V[0]?r.decode(V.join(":")):null,S=I.substring(H+1)):(w.username=null,w.password=null),S},r.parseQuery=function(S,w){if(!S)return{};if(S=S.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!S)return{};for(var I={},L=S.split("&"),B=L.length,H,V,G,k=0;k<B;k++)H=L[k].split("="),V=r.decodeQuery(H.shift(),w),G=H.length?r.decodeQuery(H.join("="),w):null,V!=="__proto__"&&(c.call(I,V)?((typeof I[V]=="string"||I[V]===null)&&(I[V]=[I[V]]),I[V].push(G)):I[V]=G);return I},r.build=function(S){var w="",I=!1;return S.protocol&&(w+=S.protocol+":"),!S.urn&&(w||S.hostname)&&(w+="//",I=!0),w+=r.buildAuthority(S)||"",typeof S.path=="string"&&(S.path.charAt(0)!=="/"&&I&&(w+="/"),w+=S.path),typeof S.query=="string"&&S.query&&(w+="?"+S.query),typeof S.fragment=="string"&&S.fragment&&(w+="#"+S.fragment),w},r.buildHost=function(S){var w="";if(S.hostname)r.ip6_expression.test(S.hostname)?w+="["+S.hostname+"]":w+=S.hostname;else return"";return S.port&&(w+=":"+S.port),w},r.buildAuthority=function(S){return r.buildUserinfo(S)+r.buildHost(S)},r.buildUserinfo=function(S){var w="";return S.username&&(w+=r.encode(S.username)),S.password&&(w+=":"+r.encode(S.password)),w&&(w+="@"),w},r.buildQuery=function(S,w,I){var L="",B,H,V,G;for(H in S)if(H!=="__proto__"&&c.call(S,H))if(h(S[H]))for(B={},V=0,G=S[H].length;V<G;V++)S[H][V]!==void 0&&B[S[H][V]+""]===void 0&&(L+="&"+r.buildQueryParameter(H,S[H][V],I),w!==!0&&(B[S[H][V]+""]=!0));else S[H]!==void 0&&(L+="&"+r.buildQueryParameter(H,S[H],I));return L.substring(1)},r.buildQueryParameter=function(S,w,I){return r.encodeQuery(S,I)+(w!==null?"="+r.encodeQuery(w,I):"")},r.addQuery=function(S,w,I){if(typeof w=="object")for(var L in w)c.call(w,L)&&r.addQuery(S,L,w[L]);else if(typeof w=="string"){if(S[w]===void 0){S[w]=I;return}else typeof S[w]=="string"&&(S[w]=[S[w]]);h(I)||(I=[I]),S[w]=(S[w]||[]).concat(I)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(S,w,I){if(typeof w=="object")for(var L in w)c.call(w,L)&&r.setQuery(S,L,w[L]);else if(typeof w=="string")S[w]=I===void 0?null:I;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(S,w,I){var L,B,H;if(h(w))for(L=0,B=w.length;L<B;L++)S[w[L]]=void 0;else if(f(w)==="RegExp")for(H in S)w.test(H)&&(S[H]=void 0);else if(typeof w=="object")for(H in w)c.call(w,H)&&r.removeQuery(S,H,w[H]);else if(typeof w=="string")I!==void 0?f(I)==="RegExp"?!h(S[w])&&I.test(S[w])?S[w]=void 0:S[w]=p(S[w],I):S[w]===String(I)&&(!h(I)||I.length===1)?S[w]=void 0:h(S[w])&&(S[w]=p(S[w],I)):S[w]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(S,w,I,L){switch(f(w)){case"String":break;case"RegExp":for(var B in S)if(c.call(S,B)&&w.test(B)&&(I===void 0||r.hasQuery(S,B,I)))return!0;return!1;case"Object":for(var H in w)if(c.call(w,H)&&!r.hasQuery(S,H,w[H]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(I)){case"Undefined":return w in S;case"Boolean":var V=!!(h(S[w])?S[w].length:S[w]);return I===V;case"Function":return!!I(S[w],w,S);case"Array":if(!h(S[w]))return!1;var G=L?g:m;return G(S[w],I);case"RegExp":return h(S[w])?L?g(S[w],I):!1:!!(S[w]&&S[w].match(I));case"Number":I=String(I);case"String":return h(S[w])?L?g(S[w],I):!1:S[w]===I;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var S=[],w=[],I=0,L=0;L<arguments.length;L++){var B=new r(arguments[L]);S.push(B);for(var H=B.segment(),V=0;V<H.length;V++)typeof H[V]=="string"&&w.push(H[V]),H[V]&&I++}if(!w.length||!I)return new r("");var G=new r("").segment(w);return(S[0].path()===""||S[0].path().slice(0,1)==="/")&&G.path("/"+G.path()),G.normalize()},r.commonPath=function(S,w){var I=Math.min(S.length,w.length),L;for(L=0;L<I;L++)if(S.charAt(L)!==w.charAt(L)){L--;break}return L<1?S.charAt(0)===w.charAt(0)&&S.charAt(0)==="/"?"/":"":((S.charAt(L)!=="/"||w.charAt(L)!=="/")&&(L=S.substring(0,L).lastIndexOf("/")),S.substring(0,L+1))},r.withinString=function(S,w,I){I||(I={});var L=I.start||r.findUri.start,B=I.end||r.findUri.end,H=I.trim||r.findUri.trim,V=I.parens||r.findUri.parens,G=/[a-z0-9-]=["']?$/i;for(L.lastIndex=0;;){var k=L.exec(S);if(!k)break;var W=k.index;if(I.ignoreHtml){var q=S.slice(Math.max(W-3,0),W);if(q&&G.test(q))continue}for(var J=W+S.slice(W).search(B),j=S.slice(W,J),K=-1;;){var Q=V.exec(j);if(!Q)break;var he=Q.index+Q[0].length;K=Math.max(K,he)}if(K>-1?j=j.slice(0,K)+j.slice(K).replace(H,""):j=j.replace(H,""),!(j.length<=k[0].length)&&!(I.ignore&&I.ignore.test(j))){J=W+j.length;var ye=w(j,W,J,S);if(ye===void 0){L.lastIndex=J;continue}ye=String(ye),S=S.slice(0,W)+ye+S.slice(J),L.lastIndex=W+ye.length}}return L.lastIndex=0,S},r.ensureValidHostname=function(S,w){var I=!!S,L=!!w,B=!1;if(L&&(B=g(r.hostProtocols,w)),B&&!I)throw new TypeError("Hostname cannot be empty, if protocol is "+w);if(S&&S.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+S+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(S).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+S+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(S){if(S){var w=Number(S);if(!(s(w)&&w>0&&w<65536))throw new TypeError('Port "'+S+'" is not a valid port')}},r.noConflict=function(S){if(S){var w={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(w.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(w.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(w.SecondLevelDomains=i.SecondLevelDomains.noConflict()),w}else i.URI===this&&(i.URI=o);return this},a.build=function(S){return S===!0?this._deferred_build=!0:(S===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function D(S){return function(w,I){return w===void 0?this._parts[S]||"":(this._parts[S]=w||null,this.build(!I),this)}}function R(S,w){return function(I,L){return I===void 0?this._parts[S]||"":(I!==null&&(I=I+"",I.charAt(0)===w&&(I=I.substring(1))),this._parts[S]=I,this.build(!L),this)}}a.protocol=D("protocol"),a.username=D("username"),a.password=D("password"),a.hostname=D("hostname"),a.port=D("port"),a.query=R("query","?"),a.fragment=R("fragment","#"),a.search=function(S,w){var I=this.query(S,w);return typeof I=="string"&&I.length?"?"+I:I},a.hash=function(S,w){var I=this.fragment(S,w);return typeof I=="string"&&I.length?"#"+I:I},a.pathname=function(S,w){if(S===void 0||S===!0){var I=this._parts.path||(this._parts.hostname?"/":"");return S?(this._parts.urn?r.decodeUrnPath:r.decodePath)(I):I}else return this._parts.urn?this._parts.path=S?r.recodeUrnPath(S):"":this._parts.path=S?r.recodePath(S):"/",this.build(!w),this},a.path=a.pathname,a.href=function(S,w){var I;if(S===void 0)return this.toString();this._string="",this._parts=r._parts();var L=S instanceof r,B=typeof S=="object"&&(S.hostname||S.path||S.pathname);if(S.nodeName){var H=r.getDomAttribute(S);S=S[H]||"",B=!1}if(!L&&B&&S.pathname!==void 0&&(S=S.toString()),typeof S=="string"||S instanceof String)this._parts=r.parse(String(S),this._parts);else if(L||B){var V=L?S._parts:S;for(I in V)I!=="query"&&c.call(this._parts,I)&&(this._parts[I]=V[I]);V.query&&this.query(V.query,!1)}else throw new TypeError("invalid input");return this.build(!w),this},a.is=function(S){var w=!1,I=!1,L=!1,B=!1,H=!1,V=!1,G=!1,k=!this._parts.urn;switch(this._parts.hostname&&(k=!1,I=r.ip4_expression.test(this._parts.hostname),L=r.ip6_expression.test(this._parts.hostname),w=I||L,B=!w,H=B&&n&&n.has(this._parts.hostname),V=B&&r.idn_expression.test(this._parts.hostname),G=B&&r.punycode_expression.test(this._parts.hostname)),S.toLowerCase()){case"relative":return k;case"absolute":return!k;case"domain":case"name":return B;case"sld":return H;case"ip":return w;case"ip4":case"ipv4":case"inet4":return I;case"ip6":case"ipv6":case"inet6":return L;case"idn":return V;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return G}return null};var O=a.protocol,M=a.port,N=a.hostname;a.protocol=function(S,w){if(S&&(S=S.replace(/:(\/\/)?$/,""),!S.match(r.protocol_expression)))throw new TypeError('Protocol "'+S+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return O.call(this,S,w)},a.scheme=a.protocol,a.port=function(S,w){return this._parts.urn?S===void 0?"":this:(S!==void 0&&(S===0&&(S=null),S&&(S+="",S.charAt(0)===":"&&(S=S.substring(1)),r.ensureValidPort(S))),M.call(this,S,w))},a.hostname=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S!==void 0){var I={preventInvalidHostname:this._parts.preventInvalidHostname},L=r.parseHost(S,I);if(L!=="/")throw new TypeError('Hostname "'+S+'" contains characters other than [A-Z0-9.-]');S=I.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(S,this._parts.protocol)}return N.call(this,S,w)},a.origin=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0){var I=this.protocol(),L=this.authority();return L?(I?I+"://":"")+this.authority():""}else{var B=r(S);return this.protocol(B.protocol()).authority(B.authority()).build(!w),this}},a.host=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var I=r.parseHost(S,this._parts);if(I!=="/")throw new TypeError('Hostname "'+S+'" contains characters other than [A-Z0-9.-]');return this.build(!w),this},a.authority=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var I=r.parseAuthority(S,this._parts);if(I!=="/")throw new TypeError('Hostname "'+S+'" contains characters other than [A-Z0-9.-]');return this.build(!w),this},a.userinfo=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0){var I=r.buildUserinfo(this._parts);return I&&I.substring(0,I.length-1)}else return S[S.length-1]!=="@"&&(S+="@"),r.parseUserinfo(S,this._parts),this.build(!w),this},a.resource=function(S,w){var I;return S===void 0?this.path()+this.search()+this.hash():(I=r.parse(S),this._parts.path=I.path,this._parts.query=I.query,this._parts.fragment=I.fragment,this.build(!w),this)},a.subdomain=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0){if(!this._parts.hostname||this.is("IP"))return"";var I=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,I)||""}else{var L=this._parts.hostname.length-this.domain().length,B=this._parts.hostname.substring(0,L),H=new RegExp("^"+u(B));if(S&&S.charAt(S.length-1)!=="."&&(S+="."),S.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return S&&r.ensureValidHostname(S,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(H,S),this.build(!w),this}},a.domain=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(typeof S=="boolean"&&(w=S,S=void 0),S===void 0){if(!this._parts.hostname||this.is("IP"))return"";var I=this._parts.hostname.match(/\./g);if(I&&I.length<2)return this._parts.hostname;var L=this._parts.hostname.length-this.tld(w).length-1;return L=this._parts.hostname.lastIndexOf(".",L-1)+1,this._parts.hostname.substring(L)||""}else{if(!S)throw new TypeError("cannot set domain empty");if(S.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(S,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=S;else{var B=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(B,S)}return this.build(!w),this}},a.tld=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(typeof S=="boolean"&&(w=S,S=void 0),S===void 0){if(!this._parts.hostname||this.is("IP"))return"";var I=this._parts.hostname.lastIndexOf("."),L=this._parts.hostname.substring(I+1);return w!==!0&&n&&n.list[L.toLowerCase()]&&n.get(this._parts.hostname)||L}else{var B;if(S)if(S.match(/[^a-zA-Z0-9-]/))if(n&&n.is(S))B=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(B,S);else throw new TypeError('TLD "'+S+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");B=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(B,S)}else throw new TypeError("cannot set TLD empty");return this.build(!w),this}},a.directory=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0||S===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var I=this._parts.path.length-this.filename().length-1,L=this._parts.path.substring(0,I)||(this._parts.hostname?"/":"");return S?r.decodePath(L):L}else{var B=this._parts.path.length-this.filename().length,H=this._parts.path.substring(0,B),V=new RegExp("^"+u(H));return this.is("relative")||(S||(S="/"),S.charAt(0)!=="/"&&(S="/"+S)),S&&S.charAt(S.length-1)!=="/"&&(S+="/"),S=r.recodePath(S),this._parts.path=this._parts.path.replace(V,S),this.build(!w),this}},a.filename=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(typeof S!="string"){if(!this._parts.path||this._parts.path==="/")return"";var I=this._parts.path.lastIndexOf("/"),L=this._parts.path.substring(I+1);return S?r.decodePathSegment(L):L}else{var B=!1;S.charAt(0)==="/"&&(S=S.substring(1)),S.match(/\.?\//)&&(B=!0);var H=new RegExp(u(this.filename())+"$");return S=r.recodePath(S),this._parts.path=this._parts.path.replace(H,S),B?this.normalizePath(w):this.build(!w),this}},a.suffix=function(S,w){if(this._parts.urn)return S===void 0?"":this;if(S===void 0||S===!0){if(!this._parts.path||this._parts.path==="/")return"";var I=this.filename(),L=I.lastIndexOf("."),B,H;return L===-1?"":(B=I.substring(L+1),H=/^[a-z0-9%]+$/i.test(B)?B:"",S?r.decodePathSegment(H):H)}else{S.charAt(0)==="."&&(S=S.substring(1));var V=this.suffix(),G;if(V)S?G=new RegExp(u(V)+"$"):G=new RegExp(u("."+V)+"$");else{if(!S)return this;this._parts.path+="."+r.recodePath(S)}return G&&(S=r.recodePath(S),this._parts.path=this._parts.path.replace(G,S)),this.build(!w),this}},a.segment=function(S,w,I){var L=this._parts.urn?":":"/",B=this.path(),H=B.substring(0,1)==="/",V=B.split(L);if(S!==void 0&&typeof S!="number"&&(I=w,w=S,S=void 0),S!==void 0&&typeof S!="number")throw new Error('Bad segment "'+S+'", must be 0-based integer');if(H&&V.shift(),S<0&&(S=Math.max(V.length+S,0)),w===void 0)return S===void 0?V:V[S];if(S===null||V[S]===void 0)if(h(w)){V=[];for(var G=0,k=w.length;G<k;G++)!w[G].length&&(!V.length||!V[V.length-1].length)||(V.length&&!V[V.length-1].length&&V.pop(),V.push(x(w[G])))}else(w||typeof w=="string")&&(w=x(w),V[V.length-1]===""?V[V.length-1]=w:V.push(w));else w?V[S]=x(w):V.splice(S,1);return H&&V.unshift(""),this.path(V.join(L),I)},a.segmentCoded=function(S,w,I){var L,B,H;if(typeof S!="number"&&(I=w,w=S,S=void 0),w===void 0){if(L=this.segment(S,w,I),!h(L))L=L!==void 0?r.decode(L):void 0;else for(B=0,H=L.length;B<H;B++)L[B]=r.decode(L[B]);return L}if(!h(w))w=typeof w=="string"||w instanceof String?r.encode(w):w;else for(B=0,H=w.length;B<H;B++)w[B]=r.encode(w[B]);return this.segment(S,w,I)};var _=a.query;return a.query=function(S,w){if(S===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof S=="function"){var I=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),L=S.call(this,I);return this._parts.query=r.buildQuery(L||I,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!w),this}else return S!==void 0&&typeof S!="string"?(this._parts.query=r.buildQuery(S,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!w),this):_.call(this,S,w)},a.setQuery=function(S,w,I){var L=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof S=="string"||S instanceof String)L[S]=w!==void 0?w:null;else if(typeof S=="object")for(var B in S)c.call(S,B)&&(L[B]=S[B]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(L,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof S!="string"&&(I=w),this.build(!I),this},a.addQuery=function(S,w,I){var L=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(L,S,w===void 0?null:w),this._parts.query=r.buildQuery(L,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof S!="string"&&(I=w),this.build(!I),this},a.removeQuery=function(S,w,I){var L=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(L,S,w),this._parts.query=r.buildQuery(L,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof S!="string"&&(I=w),this.build(!I),this},a.hasQuery=function(S,w,I){var L=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(L,S,w,I)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(S){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!S)),this},a.normalizeHostname=function(S){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!S)),this},a.normalizePort=function(S){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!S)),this},a.normalizePath=function(S){var w=this._parts.path;if(!w)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!S),this;if(this._parts.path==="/")return this;w=r.recodePath(w);var I,L="",B,H;for(w.charAt(0)!=="/"&&(I=!0,w="/"+w),(w.slice(-3)==="/.."||w.slice(-2)==="/.")&&(w+="/"),w=w.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),I&&(L=w.substring(1).match(/^(\.\.\/)+/)||"",L&&(L=L[0]));B=w.search(/\/\.\.(\/|$)/),B!==-1;){if(B===0){w=w.substring(3);continue}H=w.substring(0,B).lastIndexOf("/"),H===-1&&(H=B),w=w.substring(0,H)+w.substring(B+3)}return I&&this.is("relative")&&(w=L+w.substring(1)),this._parts.path=w,this.build(!S),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(S){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!S)),this},a.normalizeFragment=function(S){return this._parts.fragment||(this._parts.fragment=null,this.build(!S)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var S=r.encode,w=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=S,r.decode=w}return this},a.unicode=function(){var S=r.encode,w=r.decode;r.encode=T,r.decode=unescape;try{this.normalize()}finally{r.encode=S,r.decode=w}return this},a.readable=function(){var S=this.clone();S.username("").password("").normalize();var w="";if(S._parts.protocol&&(w+=S._parts.protocol+"://"),S._parts.hostname&&(S.is("punycode")&&e?(w+=e.toUnicode(S._parts.hostname),S._parts.port&&(w+=":"+S._parts.port)):w+=S.host()),S._parts.hostname&&S._parts.path&&S._parts.path.charAt(0)!=="/"&&(w+="/"),w+=S.path(!0),S._parts.query){for(var I="",L=0,B=S._parts.query.split("&"),H=B.length;L<H;L++){var V=(B[L]||"").split("=");I+="&"+r.decodeQuery(V[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),V[1]!==void 0&&(I+="="+r.decodeQuery(V[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}w+="?"+I.substring(1)}return w+=r.decodeQuery(S.hash(),!0),w},a.absoluteTo=function(S){var w=this.clone(),I=["protocol","username","password","hostname","port"],L,B,H;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(S instanceof r||(S=new r(S)),w._parts.protocol||(w._parts.protocol=S._parts.protocol,this._parts.hostname))return w;for(B=0;H=I[B];B++)w._parts[H]=S._parts[H];return w._parts.path?(w._parts.path.substring(-2)===".."&&(w._parts.path+="/"),w.path().charAt(0)!=="/"&&(L=S.directory(),L=L||(S.path().indexOf("/")===0?"/":""),w._parts.path=(L?L+"/":"")+w._parts.path,w.normalizePath())):(w._parts.path=S._parts.path,w._parts.query||(w._parts.query=S._parts.query)),w.build(),w},a.relativeTo=function(S){var w=this.clone().normalize(),I,L,B,H,V;if(w._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(S=new r(S).normalize(),I=w._parts,L=S._parts,H=w.path(),V=S.path(),H.charAt(0)!=="/")throw new Error("URI is already relative");if(V.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(I.protocol===L.protocol&&(I.protocol=null),I.username!==L.username||I.password!==L.password||I.protocol!==null||I.username!==null||I.password!==null)return w.build();if(I.hostname===L.hostname&&I.port===L.port)I.hostname=null,I.port=null;else return w.build();if(H===V)return I.path="",w.build();if(B=r.commonPath(H,V),!B)return w.build();var G=L.path.substring(B.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return I.path=G+I.path.substring(B.length)||"./",w.build()},a.equals=function(S){var w=this.clone(),I=new r(S),L={},B={},H={},V,G,k;if(w.normalize(),I.normalize(),w.toString()===I.toString())return!0;if(V=w.query(),G=I.query(),w.query(""),I.query(""),w.toString()!==I.toString()||V.length!==G.length)return!1;L=r.parseQuery(V,this._parts.escapeQuerySpace),B=r.parseQuery(G,this._parts.escapeQuerySpace);for(k in L)if(c.call(L,k)){if(h(L[k])){if(!m(L[k],B[k]))return!1}else if(L[k]!==B[k])return!1;H[k]=!0}for(k in B)if(c.call(B,k)&&!H[k])return!1;return!0},a.preventInvalidHostname=function(S){return this._parts.preventInvalidHostname=!!S,this},a.duplicateQueryParameters=function(S){return this._parts.duplicateQueryParameters=!!S,this},a.escapeQuerySpace=function(S){return this._parts.escapeQuerySpace=!!S,this},r})});var Sae=Yu((gSn,Eae)=>{"use strict";Eae.exports=T9e;var iD=1e20;function T9e(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,p,g,m,x;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(p=e,h=p.getContext("2d"),r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(p=e.canvas,h=e,r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,x=Math.floor(u.length/f);m<x;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var b=Array(r*s),T=Array(r*s),C=Array(a),A=Array(a),E=Array(a+1),v=Array(a);for(m=0,x=r*s;m<x;m++){var D=c[m];b[m]=D===1?0:D===0?iD:Math.pow(Math.max(0,.5-D),2),T[m]=D===1?iD:D===0?0:Math.pow(Math.max(0,D-.5),2)}Cae(b,r,s,C,A,v,E),Cae(T,r,s,C,A,v,E);var R=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,x=r*s;m<x;m++)R[m]=Math.min(Math.max(1-((b[m]-T[m])/i+n),0),1);return R}function Cae(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(Aae(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(Aae(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function Aae(e,t,n,i,o){n[0]=0,i[0]=-iD,i[1]=+iD;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+iD}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var Pae=Yu((LSn,DB)=>{function R9e(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,p=12,g=13,m=14,x=15,b=16,T=17,C=0,A=1,E=2,v=3,D=4;function R(_,S){return 55296<=_.charCodeAt(S)&&_.charCodeAt(S)<=56319&&56320<=_.charCodeAt(S+1)&&_.charCodeAt(S+1)<=57343}function O(_,S){S===void 0&&(S=0);var w=_.charCodeAt(S);if(55296<=w&&w<=56319&&S<_.length-1){var I=w,L=_.charCodeAt(S+1);return 56320<=L&&L<=57343?(I-55296)*1024+(L-56320)+65536:I}if(56320<=w&&w<=57343&&S>=1){var I=_.charCodeAt(S-1),L=w;return 55296<=I&&I<=56319?(I-55296)*1024+(L-56320)+65536:L}return w}function M(_,S,w){var I=[_].concat(S).concat([w]),L=I[I.length-2],B=w,H=I.lastIndexOf(m);if(H>1&&I.slice(1,H).every(function(k){return k==i})&&[i,g,T].indexOf(_)==-1)return E;var V=I.lastIndexOf(o);if(V>0&&I.slice(1,V).every(function(k){return k==o})&&[p,o].indexOf(L)==-1)return I.filter(function(k){return k==o}).length%2==1?v:D;if(L==e&&B==t)return C;if(L==n||L==e||L==t)return B==m&&S.every(function(k){return k==i})?E:A;if(B==n||B==e||B==t)return A;if(L==s&&(B==s||B==a||B==u||B==f))return C;if((L==u||L==a)&&(B==a||B==c))return C;if((L==f||L==c)&&B==c)return C;if(B==i||B==x)return C;if(B==r)return C;if(L==p)return C;var G=I.indexOf(i)!=-1?I.lastIndexOf(i)-1:I.length-2;return[g,T].indexOf(I[G])!=-1&&I.slice(G+1,-1).every(function(k){return k==i})&&B==m||L==x&&[b,T].indexOf(B)!=-1?C:S.indexOf(o)!=-1?E:L==o&&B==o?C:A}this.nextBreak=function(_,S){if(S===void 0&&(S=0),S<0)return 0;if(S>=_.length-1)return _.length;for(var w=N(O(_,S)),I=[],L=S+1;L<_.length;L++)if(!R(_,L-1)){var B=N(O(_,L));if(M(w,I,B))return L;I.push(B)}return _.length},this.splitGraphemes=function(_){for(var S=[],w=0,I;(I=this.nextBreak(_,w))<_.length;)S.push(_.slice(w,I)),w=I;return w<_.length&&S.push(_.slice(w)),S},this.iterateGraphemes=function(_){var S=0,w={next:function(){var I,L;return(L=this.nextBreak(_,S))<_.length?(I=_.slice(S,L),S=L,{value:I,done:!1}):S<_.length?(I=_.slice(S),S=_.length,{value:I,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(w[Symbol.iterator]=function(){return w}),w},this.countGraphemes=function(_){for(var S=0,w=0,I;(I=this.nextBreak(_,w))<_.length;)w=I,S++;return w<_.length&&S++,S};function N(_){return 1536<=_&&_<=1541||_==1757||_==1807||_==2274||_==3406||_==69821||70082<=_&&_<=70083||_==72250||72326<=_&&_<=72329||_==73030?p:_==13?e:_==10?t:0<=_&&_<=9||11<=_&&_<=12||14<=_&&_<=31||127<=_&&_<=159||_==173||_==1564||_==6158||_==8203||8206<=_&&_<=8207||_==8232||_==8233||8234<=_&&_<=8238||8288<=_&&_<=8292||_==8293||8294<=_&&_<=8303||55296<=_&&_<=57343||_==65279||65520<=_&&_<=65528||65529<=_&&_<=65531||113824<=_&&_<=113827||119155<=_&&_<=119162||_==917504||_==917505||917506<=_&&_<=917535||917632<=_&&_<=917759||918e3<=_&&_<=921599?n:768<=_&&_<=879||1155<=_&&_<=1159||1160<=_&&_<=1161||1425<=_&&_<=1469||_==1471||1473<=_&&_<=1474||1476<=_&&_<=1477||_==1479||1552<=_&&_<=1562||1611<=_&&_<=1631||_==1648||1750<=_&&_<=1756||1759<=_&&_<=1764||1767<=_&&_<=1768||1770<=_&&_<=1773||_==1809||1840<=_&&_<=1866||1958<=_&&_<=1968||2027<=_&&_<=2035||2070<=_&&_<=2073||2075<=_&&_<=2083||2085<=_&&_<=2087||2089<=_&&_<=2093||2137<=_&&_<=2139||2260<=_&&_<=2273||2275<=_&&_<=2306||_==2362||_==2364||2369<=_&&_<=2376||_==2381||2385<=_&&_<=2391||2402<=_&&_<=2403||_==2433||_==2492||_==2494||2497<=_&&_<=2500||_==2509||_==2519||2530<=_&&_<=2531||2561<=_&&_<=2562||_==2620||2625<=_&&_<=2626||2631<=_&&_<=2632||2635<=_&&_<=2637||_==2641||2672<=_&&_<=2673||_==2677||2689<=_&&_<=2690||_==2748||2753<=_&&_<=2757||2759<=_&&_<=2760||_==2765||2786<=_&&_<=2787||2810<=_&&_<=2815||_==2817||_==2876||_==2878||_==2879||2881<=_&&_<=2884||_==2893||_==2902||_==2903||2914<=_&&_<=2915||_==2946||_==3006||_==3008||_==3021||_==3031||_==3072||3134<=_&&_<=3136||3142<=_&&_<=3144||3146<=_&&_<=3149||3157<=_&&_<=3158||3170<=_&&_<=3171||_==3201||_==3260||_==3263||_==3266||_==3270||3276<=_&&_<=3277||3285<=_&&_<=3286||3298<=_&&_<=3299||3328<=_&&_<=3329||3387<=_&&_<=3388||_==3390||3393<=_&&_<=3396||_==3405||_==3415||3426<=_&&_<=3427||_==3530||_==3535||3538<=_&&_<=3540||_==3542||_==3551||_==3633||3636<=_&&_<=3642||3655<=_&&_<=3662||_==3761||3764<=_&&_<=3769||3771<=_&&_<=3772||3784<=_&&_<=3789||3864<=_&&_<=3865||_==3893||_==3895||_==3897||3953<=_&&_<=3966||3968<=_&&_<=3972||3974<=_&&_<=3975||3981<=_&&_<=3991||3993<=_&&_<=4028||_==4038||4141<=_&&_<=4144||4146<=_&&_<=4151||4153<=_&&_<=4154||4157<=_&&_<=4158||4184<=_&&_<=4185||4190<=_&&_<=4192||4209<=_&&_<=4212||_==4226||4229<=_&&_<=4230||_==4237||_==4253||4957<=_&&_<=4959||5906<=_&&_<=5908||5938<=_&&_<=5940||5970<=_&&_<=5971||6002<=_&&_<=6003||6068<=_&&_<=6069||6071<=_&&_<=6077||_==6086||6089<=_&&_<=6099||_==6109||6155<=_&&_<=6157||6277<=_&&_<=6278||_==6313||6432<=_&&_<=6434||6439<=_&&_<=6440||_==6450||6457<=_&&_<=6459||6679<=_&&_<=6680||_==6683||_==6742||6744<=_&&_<=6750||_==6752||_==6754||6757<=_&&_<=6764||6771<=_&&_<=6780||_==6783||6832<=_&&_<=6845||_==6846||6912<=_&&_<=6915||_==6964||6966<=_&&_<=6970||_==6972||_==6978||7019<=_&&_<=7027||7040<=_&&_<=7041||7074<=_&&_<=7077||7080<=_&&_<=7081||7083<=_&&_<=7085||_==7142||7144<=_&&_<=7145||_==7149||7151<=_&&_<=7153||7212<=_&&_<=7219||7222<=_&&_<=7223||7376<=_&&_<=7378||7380<=_&&_<=7392||7394<=_&&_<=7400||_==7405||_==7412||7416<=_&&_<=7417||7616<=_&&_<=7673||7675<=_&&_<=7679||_==8204||8400<=_&&_<=8412||8413<=_&&_<=8416||_==8417||8418<=_&&_<=8420||8421<=_&&_<=8432||11503<=_&&_<=11505||_==11647||11744<=_&&_<=11775||12330<=_&&_<=12333||12334<=_&&_<=12335||12441<=_&&_<=12442||_==42607||42608<=_&&_<=42610||42612<=_&&_<=42621||42654<=_&&_<=42655||42736<=_&&_<=42737||_==43010||_==43014||_==43019||43045<=_&&_<=43046||43204<=_&&_<=43205||43232<=_&&_<=43249||43302<=_&&_<=43309||43335<=_&&_<=43345||43392<=_&&_<=43394||_==43443||43446<=_&&_<=43449||_==43452||_==43493||43561<=_&&_<=43566||43569<=_&&_<=43570||43573<=_&&_<=43574||_==43587||_==43596||_==43644||_==43696||43698<=_&&_<=43700||43703<=_&&_<=43704||43710<=_&&_<=43711||_==43713||43756<=_&&_<=43757||_==43766||_==44005||_==44008||_==44013||_==64286||65024<=_&&_<=65039||65056<=_&&_<=65071||65438<=_&&_<=65439||_==66045||_==66272||66422<=_&&_<=66426||68097<=_&&_<=68099||68101<=_&&_<=68102||68108<=_&&_<=68111||68152<=_&&_<=68154||_==68159||68325<=_&&_<=68326||_==69633||69688<=_&&_<=69702||69759<=_&&_<=69761||69811<=_&&_<=69814||69817<=_&&_<=69818||69888<=_&&_<=69890||69927<=_&&_<=69931||69933<=_&&_<=69940||_==70003||70016<=_&&_<=70017||70070<=_&&_<=70078||70090<=_&&_<=70092||70191<=_&&_<=70193||_==70196||70198<=_&&_<=70199||_==70206||_==70367||70371<=_&&_<=70378||70400<=_&&_<=70401||_==70460||_==70462||_==70464||_==70487||70502<=_&&_<=70508||70512<=_&&_<=70516||70712<=_&&_<=70719||70722<=_&&_<=70724||_==70726||_==70832||70835<=_&&_<=70840||_==70842||_==70845||70847<=_&&_<=70848||70850<=_&&_<=70851||_==71087||71090<=_&&_<=71093||71100<=_&&_<=71101||71103<=_&&_<=71104||71132<=_&&_<=71133||71219<=_&&_<=71226||_==71229||71231<=_&&_<=71232||_==71339||_==71341||71344<=_&&_<=71349||_==71351||71453<=_&&_<=71455||71458<=_&&_<=71461||71463<=_&&_<=71467||72193<=_&&_<=72198||72201<=_&&_<=72202||72243<=_&&_<=72248||72251<=_&&_<=72254||_==72263||72273<=_&&_<=72278||72281<=_&&_<=72283||72330<=_&&_<=72342||72344<=_&&_<=72345||72752<=_&&_<=72758||72760<=_&&_<=72765||_==72767||72850<=_&&_<=72871||72874<=_&&_<=72880||72882<=_&&_<=72883||72885<=_&&_<=72886||73009<=_&&_<=73014||_==73018||73020<=_&&_<=73021||73023<=_&&_<=73029||_==73031||92912<=_&&_<=92916||92976<=_&&_<=92982||94095<=_&&_<=94098||113821<=_&&_<=113822||_==119141||119143<=_&&_<=119145||119150<=_&&_<=119154||119163<=_&&_<=119170||119173<=_&&_<=119179||119210<=_&&_<=119213||119362<=_&&_<=119364||121344<=_&&_<=121398||121403<=_&&_<=121452||_==121461||_==121476||121499<=_&&_<=121503||121505<=_&&_<=121519||122880<=_&&_<=122886||122888<=_&&_<=122904||122907<=_&&_<=122913||122915<=_&&_<=122916||122918<=_&&_<=122922||125136<=_&&_<=125142||125252<=_&&_<=125258||917536<=_&&_<=917631||917760<=_&&_<=917999?i:127462<=_&&_<=127487?o:_==2307||_==2363||2366<=_&&_<=2368||2377<=_&&_<=2380||2382<=_&&_<=2383||2434<=_&&_<=2435||2495<=_&&_<=2496||2503<=_&&_<=2504||2507<=_&&_<=2508||_==2563||2622<=_&&_<=2624||_==2691||2750<=_&&_<=2752||_==2761||2763<=_&&_<=2764||2818<=_&&_<=2819||_==2880||2887<=_&&_<=2888||2891<=_&&_<=2892||_==3007||3009<=_&&_<=3010||3014<=_&&_<=3016||3018<=_&&_<=3020||3073<=_&&_<=3075||3137<=_&&_<=3140||3202<=_&&_<=3203||_==3262||3264<=_&&_<=3265||3267<=_&&_<=3268||3271<=_&&_<=3272||3274<=_&&_<=3275||3330<=_&&_<=3331||3391<=_&&_<=3392||3398<=_&&_<=3400||3402<=_&&_<=3404||3458<=_&&_<=3459||3536<=_&&_<=3537||3544<=_&&_<=3550||3570<=_&&_<=3571||_==3635||_==3763||3902<=_&&_<=3903||_==3967||_==4145||4155<=_&&_<=4156||4182<=_&&_<=4183||_==4228||_==6070||6078<=_&&_<=6085||6087<=_&&_<=6088||6435<=_&&_<=6438||6441<=_&&_<=6443||6448<=_&&_<=6449||6451<=_&&_<=6456||6681<=_&&_<=6682||_==6741||_==6743||6765<=_&&_<=6770||_==6916||_==6965||_==6971||6973<=_&&_<=6977||6979<=_&&_<=6980||_==7042||_==7073||7078<=_&&_<=7079||_==7082||_==7143||7146<=_&&_<=7148||_==7150||7154<=_&&_<=7155||7204<=_&&_<=7211||7220<=_&&_<=7221||_==7393||7410<=_&&_<=7411||_==7415||43043<=_&&_<=43044||_==43047||43136<=_&&_<=43137||43188<=_&&_<=43203||43346<=_&&_<=43347||_==43395||43444<=_&&_<=43445||43450<=_&&_<=43451||43453<=_&&_<=43456||43567<=_&&_<=43568||43571<=_&&_<=43572||_==43597||_==43755||43758<=_&&_<=43759||_==43765||44003<=_&&_<=44004||44006<=_&&_<=44007||44009<=_&&_<=44010||_==44012||_==69632||_==69634||_==69762||69808<=_&&_<=69810||69815<=_&&_<=69816||_==69932||_==70018||70067<=_&&_<=70069||70079<=_&&_<=70080||70188<=_&&_<=70190||70194<=_&&_<=70195||_==70197||70368<=_&&_<=70370||70402<=_&&_<=70403||_==70463||70465<=_&&_<=70468||70471<=_&&_<=70472||70475<=_&&_<=70477||70498<=_&&_<=70499||70709<=_&&_<=70711||70720<=_&&_<=70721||_==70725||70833<=_&&_<=70834||_==70841||70843<=_&&_<=70844||_==70846||_==70849||71088<=_&&_<=71089||71096<=_&&_<=71099||_==71102||71216<=_&&_<=71218||71227<=_&&_<=71228||_==71230||_==71340||71342<=_&&_<=71343||_==71350||71456<=_&&_<=71457||_==71462||72199<=_&&_<=72200||_==72249||72279<=_&&_<=72280||_==72343||_==72751||_==72766||_==72873||_==72881||_==72884||94033<=_&&_<=94078||_==119142||_==119149?r:4352<=_&&_<=4447||43360<=_&&_<=43388?s:4448<=_&&_<=4519||55216<=_&&_<=55238?a:4520<=_&&_<=4607||55243<=_&&_<=55291?c:_==44032||_==44060||_==44088||_==44116||_==44144||_==44172||_==44200||_==44228||_==44256||_==44284||_==44312||_==44340||_==44368||_==44396||_==44424||_==44452||_==44480||_==44508||_==44536||_==44564||_==44592||_==44620||_==44648||_==44676||_==44704||_==44732||_==44760||_==44788||_==44816||_==44844||_==44872||_==44900||_==44928||_==44956||_==44984||_==45012||_==45040||_==45068||_==45096||_==45124||_==45152||_==45180||_==45208||_==45236||_==45264||_==45292||_==45320||_==45348||_==45376||_==45404||_==45432||_==45460||_==45488||_==45516||_==45544||_==45572||_==45600||_==45628||_==45656||_==45684||_==45712||_==45740||_==45768||_==45796||_==45824||_==45852||_==45880||_==45908||_==45936||_==45964||_==45992||_==46020||_==46048||_==46076||_==46104||_==46132||_==46160||_==46188||_==46216||_==46244||_==46272||_==46300||_==46328||_==46356||_==46384||_==46412||_==46440||_==46468||_==46496||_==46524||_==46552||_==46580||_==46608||_==46636||_==46664||_==46692||_==46720||_==46748||_==46776||_==46804||_==46832||_==46860||_==46888||_==46916||_==46944||_==46972||_==47e3||_==47028||_==47056||_==47084||_==47112||_==47140||_==47168||_==47196||_==47224||_==47252||_==47280||_==47308||_==47336||_==47364||_==47392||_==47420||_==47448||_==47476||_==47504||_==47532||_==47560||_==47588||_==47616||_==47644||_==47672||_==47700||_==47728||_==47756||_==47784||_==47812||_==47840||_==47868||_==47896||_==47924||_==47952||_==47980||_==48008||_==48036||_==48064||_==48092||_==48120||_==48148||_==48176||_==48204||_==48232||_==48260||_==48288||_==48316||_==48344||_==48372||_==48400||_==48428||_==48456||_==48484||_==48512||_==48540||_==48568||_==48596||_==48624||_==48652||_==48680||_==48708||_==48736||_==48764||_==48792||_==48820||_==48848||_==48876||_==48904||_==48932||_==48960||_==48988||_==49016||_==49044||_==49072||_==49100||_==49128||_==49156||_==49184||_==49212||_==49240||_==49268||_==49296||_==49324||_==49352||_==49380||_==49408||_==49436||_==49464||_==49492||_==49520||_==49548||_==49576||_==49604||_==49632||_==49660||_==49688||_==49716||_==49744||_==49772||_==49800||_==49828||_==49856||_==49884||_==49912||_==49940||_==49968||_==49996||_==50024||_==50052||_==50080||_==50108||_==50136||_==50164||_==50192||_==50220||_==50248||_==50276||_==50304||_==50332||_==50360||_==50388||_==50416||_==50444||_==50472||_==50500||_==50528||_==50556||_==50584||_==50612||_==50640||_==50668||_==50696||_==50724||_==50752||_==50780||_==50808||_==50836||_==50864||_==50892||_==50920||_==50948||_==50976||_==51004||_==51032||_==51060||_==51088||_==51116||_==51144||_==51172||_==51200||_==51228||_==51256||_==51284||_==51312||_==51340||_==51368||_==51396||_==51424||_==51452||_==51480||_==51508||_==51536||_==51564||_==51592||_==51620||_==51648||_==51676||_==51704||_==51732||_==51760||_==51788||_==51816||_==51844||_==51872||_==51900||_==51928||_==51956||_==51984||_==52012||_==52040||_==52068||_==52096||_==52124||_==52152||_==52180||_==52208||_==52236||_==52264||_==52292||_==52320||_==52348||_==52376||_==52404||_==52432||_==52460||_==52488||_==52516||_==52544||_==52572||_==52600||_==52628||_==52656||_==52684||_==52712||_==52740||_==52768||_==52796||_==52824||_==52852||_==52880||_==52908||_==52936||_==52964||_==52992||_==53020||_==53048||_==53076||_==53104||_==53132||_==53160||_==53188||_==53216||_==53244||_==53272||_==53300||_==53328||_==53356||_==53384||_==53412||_==53440||_==53468||_==53496||_==53524||_==53552||_==53580||_==53608||_==53636||_==53664||_==53692||_==53720||_==53748||_==53776||_==53804||_==53832||_==53860||_==53888||_==53916||_==53944||_==53972||_==54e3||_==54028||_==54056||_==54084||_==54112||_==54140||_==54168||_==54196||_==54224||_==54252||_==54280||_==54308||_==54336||_==54364||_==54392||_==54420||_==54448||_==54476||_==54504||_==54532||_==54560||_==54588||_==54616||_==54644||_==54672||_==54700||_==54728||_==54756||_==54784||_==54812||_==54840||_==54868||_==54896||_==54924||_==54952||_==54980||_==55008||_==55036||_==55064||_==55092||_==55120||_==55148||_==55176?u:44033<=_&&_<=44059||44061<=_&&_<=44087||44089<=_&&_<=44115||44117<=_&&_<=44143||44145<=_&&_<=44171||44173<=_&&_<=44199||44201<=_&&_<=44227||44229<=_&&_<=44255||44257<=_&&_<=44283||44285<=_&&_<=44311||44313<=_&&_<=44339||44341<=_&&_<=44367||44369<=_&&_<=44395||44397<=_&&_<=44423||44425<=_&&_<=44451||44453<=_&&_<=44479||44481<=_&&_<=44507||44509<=_&&_<=44535||44537<=_&&_<=44563||44565<=_&&_<=44591||44593<=_&&_<=44619||44621<=_&&_<=44647||44649<=_&&_<=44675||44677<=_&&_<=44703||44705<=_&&_<=44731||44733<=_&&_<=44759||44761<=_&&_<=44787||44789<=_&&_<=44815||44817<=_&&_<=44843||44845<=_&&_<=44871||44873<=_&&_<=44899||44901<=_&&_<=44927||44929<=_&&_<=44955||44957<=_&&_<=44983||44985<=_&&_<=45011||45013<=_&&_<=45039||45041<=_&&_<=45067||45069<=_&&_<=45095||45097<=_&&_<=45123||45125<=_&&_<=45151||45153<=_&&_<=45179||45181<=_&&_<=45207||45209<=_&&_<=45235||45237<=_&&_<=45263||45265<=_&&_<=45291||45293<=_&&_<=45319||45321<=_&&_<=45347||45349<=_&&_<=45375||45377<=_&&_<=45403||45405<=_&&_<=45431||45433<=_&&_<=45459||45461<=_&&_<=45487||45489<=_&&_<=45515||45517<=_&&_<=45543||45545<=_&&_<=45571||45573<=_&&_<=45599||45601<=_&&_<=45627||45629<=_&&_<=45655||45657<=_&&_<=45683||45685<=_&&_<=45711||45713<=_&&_<=45739||45741<=_&&_<=45767||45769<=_&&_<=45795||45797<=_&&_<=45823||45825<=_&&_<=45851||45853<=_&&_<=45879||45881<=_&&_<=45907||45909<=_&&_<=45935||45937<=_&&_<=45963||45965<=_&&_<=45991||45993<=_&&_<=46019||46021<=_&&_<=46047||46049<=_&&_<=46075||46077<=_&&_<=46103||46105<=_&&_<=46131||46133<=_&&_<=46159||46161<=_&&_<=46187||46189<=_&&_<=46215||46217<=_&&_<=46243||46245<=_&&_<=46271||46273<=_&&_<=46299||46301<=_&&_<=46327||46329<=_&&_<=46355||46357<=_&&_<=46383||46385<=_&&_<=46411||46413<=_&&_<=46439||46441<=_&&_<=46467||46469<=_&&_<=46495||46497<=_&&_<=46523||46525<=_&&_<=46551||46553<=_&&_<=46579||46581<=_&&_<=46607||46609<=_&&_<=46635||46637<=_&&_<=46663||46665<=_&&_<=46691||46693<=_&&_<=46719||46721<=_&&_<=46747||46749<=_&&_<=46775||46777<=_&&_<=46803||46805<=_&&_<=46831||46833<=_&&_<=46859||46861<=_&&_<=46887||46889<=_&&_<=46915||46917<=_&&_<=46943||46945<=_&&_<=46971||46973<=_&&_<=46999||47001<=_&&_<=47027||47029<=_&&_<=47055||47057<=_&&_<=47083||47085<=_&&_<=47111||47113<=_&&_<=47139||47141<=_&&_<=47167||47169<=_&&_<=47195||47197<=_&&_<=47223||47225<=_&&_<=47251||47253<=_&&_<=47279||47281<=_&&_<=47307||47309<=_&&_<=47335||47337<=_&&_<=47363||47365<=_&&_<=47391||47393<=_&&_<=47419||47421<=_&&_<=47447||47449<=_&&_<=47475||47477<=_&&_<=47503||47505<=_&&_<=47531||47533<=_&&_<=47559||47561<=_&&_<=47587||47589<=_&&_<=47615||47617<=_&&_<=47643||47645<=_&&_<=47671||47673<=_&&_<=47699||47701<=_&&_<=47727||47729<=_&&_<=47755||47757<=_&&_<=47783||47785<=_&&_<=47811||47813<=_&&_<=47839||47841<=_&&_<=47867||47869<=_&&_<=47895||47897<=_&&_<=47923||47925<=_&&_<=47951||47953<=_&&_<=47979||47981<=_&&_<=48007||48009<=_&&_<=48035||48037<=_&&_<=48063||48065<=_&&_<=48091||48093<=_&&_<=48119||48121<=_&&_<=48147||48149<=_&&_<=48175||48177<=_&&_<=48203||48205<=_&&_<=48231||48233<=_&&_<=48259||48261<=_&&_<=48287||48289<=_&&_<=48315||48317<=_&&_<=48343||48345<=_&&_<=48371||48373<=_&&_<=48399||48401<=_&&_<=48427||48429<=_&&_<=48455||48457<=_&&_<=48483||48485<=_&&_<=48511||48513<=_&&_<=48539||48541<=_&&_<=48567||48569<=_&&_<=48595||48597<=_&&_<=48623||48625<=_&&_<=48651||48653<=_&&_<=48679||48681<=_&&_<=48707||48709<=_&&_<=48735||48737<=_&&_<=48763||48765<=_&&_<=48791||48793<=_&&_<=48819||48821<=_&&_<=48847||48849<=_&&_<=48875||48877<=_&&_<=48903||48905<=_&&_<=48931||48933<=_&&_<=48959||48961<=_&&_<=48987||48989<=_&&_<=49015||49017<=_&&_<=49043||49045<=_&&_<=49071||49073<=_&&_<=49099||49101<=_&&_<=49127||49129<=_&&_<=49155||49157<=_&&_<=49183||49185<=_&&_<=49211||49213<=_&&_<=49239||49241<=_&&_<=49267||49269<=_&&_<=49295||49297<=_&&_<=49323||49325<=_&&_<=49351||49353<=_&&_<=49379||49381<=_&&_<=49407||49409<=_&&_<=49435||49437<=_&&_<=49463||49465<=_&&_<=49491||49493<=_&&_<=49519||49521<=_&&_<=49547||49549<=_&&_<=49575||49577<=_&&_<=49603||49605<=_&&_<=49631||49633<=_&&_<=49659||49661<=_&&_<=49687||49689<=_&&_<=49715||49717<=_&&_<=49743||49745<=_&&_<=49771||49773<=_&&_<=49799||49801<=_&&_<=49827||49829<=_&&_<=49855||49857<=_&&_<=49883||49885<=_&&_<=49911||49913<=_&&_<=49939||49941<=_&&_<=49967||49969<=_&&_<=49995||49997<=_&&_<=50023||50025<=_&&_<=50051||50053<=_&&_<=50079||50081<=_&&_<=50107||50109<=_&&_<=50135||50137<=_&&_<=50163||50165<=_&&_<=50191||50193<=_&&_<=50219||50221<=_&&_<=50247||50249<=_&&_<=50275||50277<=_&&_<=50303||50305<=_&&_<=50331||50333<=_&&_<=50359||50361<=_&&_<=50387||50389<=_&&_<=50415||50417<=_&&_<=50443||50445<=_&&_<=50471||50473<=_&&_<=50499||50501<=_&&_<=50527||50529<=_&&_<=50555||50557<=_&&_<=50583||50585<=_&&_<=50611||50613<=_&&_<=50639||50641<=_&&_<=50667||50669<=_&&_<=50695||50697<=_&&_<=50723||50725<=_&&_<=50751||50753<=_&&_<=50779||50781<=_&&_<=50807||50809<=_&&_<=50835||50837<=_&&_<=50863||50865<=_&&_<=50891||50893<=_&&_<=50919||50921<=_&&_<=50947||50949<=_&&_<=50975||50977<=_&&_<=51003||51005<=_&&_<=51031||51033<=_&&_<=51059||51061<=_&&_<=51087||51089<=_&&_<=51115||51117<=_&&_<=51143||51145<=_&&_<=51171||51173<=_&&_<=51199||51201<=_&&_<=51227||51229<=_&&_<=51255||51257<=_&&_<=51283||51285<=_&&_<=51311||51313<=_&&_<=51339||51341<=_&&_<=51367||51369<=_&&_<=51395||51397<=_&&_<=51423||51425<=_&&_<=51451||51453<=_&&_<=51479||51481<=_&&_<=51507||51509<=_&&_<=51535||51537<=_&&_<=51563||51565<=_&&_<=51591||51593<=_&&_<=51619||51621<=_&&_<=51647||51649<=_&&_<=51675||51677<=_&&_<=51703||51705<=_&&_<=51731||51733<=_&&_<=51759||51761<=_&&_<=51787||51789<=_&&_<=51815||51817<=_&&_<=51843||51845<=_&&_<=51871||51873<=_&&_<=51899||51901<=_&&_<=51927||51929<=_&&_<=51955||51957<=_&&_<=51983||51985<=_&&_<=52011||52013<=_&&_<=52039||52041<=_&&_<=52067||52069<=_&&_<=52095||52097<=_&&_<=52123||52125<=_&&_<=52151||52153<=_&&_<=52179||52181<=_&&_<=52207||52209<=_&&_<=52235||52237<=_&&_<=52263||52265<=_&&_<=52291||52293<=_&&_<=52319||52321<=_&&_<=52347||52349<=_&&_<=52375||52377<=_&&_<=52403||52405<=_&&_<=52431||52433<=_&&_<=52459||52461<=_&&_<=52487||52489<=_&&_<=52515||52517<=_&&_<=52543||52545<=_&&_<=52571||52573<=_&&_<=52599||52601<=_&&_<=52627||52629<=_&&_<=52655||52657<=_&&_<=52683||52685<=_&&_<=52711||52713<=_&&_<=52739||52741<=_&&_<=52767||52769<=_&&_<=52795||52797<=_&&_<=52823||52825<=_&&_<=52851||52853<=_&&_<=52879||52881<=_&&_<=52907||52909<=_&&_<=52935||52937<=_&&_<=52963||52965<=_&&_<=52991||52993<=_&&_<=53019||53021<=_&&_<=53047||53049<=_&&_<=53075||53077<=_&&_<=53103||53105<=_&&_<=53131||53133<=_&&_<=53159||53161<=_&&_<=53187||53189<=_&&_<=53215||53217<=_&&_<=53243||53245<=_&&_<=53271||53273<=_&&_<=53299||53301<=_&&_<=53327||53329<=_&&_<=53355||53357<=_&&_<=53383||53385<=_&&_<=53411||53413<=_&&_<=53439||53441<=_&&_<=53467||53469<=_&&_<=53495||53497<=_&&_<=53523||53525<=_&&_<=53551||53553<=_&&_<=53579||53581<=_&&_<=53607||53609<=_&&_<=53635||53637<=_&&_<=53663||53665<=_&&_<=53691||53693<=_&&_<=53719||53721<=_&&_<=53747||53749<=_&&_<=53775||53777<=_&&_<=53803||53805<=_&&_<=53831||53833<=_&&_<=53859||53861<=_&&_<=53887||53889<=_&&_<=53915||53917<=_&&_<=53943||53945<=_&&_<=53971||53973<=_&&_<=53999||54001<=_&&_<=54027||54029<=_&&_<=54055||54057<=_&&_<=54083||54085<=_&&_<=54111||54113<=_&&_<=54139||54141<=_&&_<=54167||54169<=_&&_<=54195||54197<=_&&_<=54223||54225<=_&&_<=54251||54253<=_&&_<=54279||54281<=_&&_<=54307||54309<=_&&_<=54335||54337<=_&&_<=54363||54365<=_&&_<=54391||54393<=_&&_<=54419||54421<=_&&_<=54447||54449<=_&&_<=54475||54477<=_&&_<=54503||54505<=_&&_<=54531||54533<=_&&_<=54559||54561<=_&&_<=54587||54589<=_&&_<=54615||54617<=_&&_<=54643||54645<=_&&_<=54671||54673<=_&&_<=54699||54701<=_&&_<=54727||54729<=_&&_<=54755||54757<=_&&_<=54783||54785<=_&&_<=54811||54813<=_&&_<=54839||54841<=_&&_<=54867||54869<=_&&_<=54895||54897<=_&&_<=54923||54925<=_&&_<=54951||54953<=_&&_<=54979||54981<=_&&_<=55007||55009<=_&&_<=55035||55037<=_&&_<=55063||55065<=_&&_<=55091||55093<=_&&_<=55119||55121<=_&&_<=55147||55149<=_&&_<=55175||55177<=_&&_<=55203?f:_==9757||_==9977||9994<=_&&_<=9997||_==127877||127938<=_&&_<=127940||_==127943||127946<=_&&_<=127948||128066<=_&&_<=128067||128070<=_&&_<=128080||_==128110||128112<=_&&_<=128120||_==128124||128129<=_&&_<=128131||128133<=_&&_<=128135||_==128170||128372<=_&&_<=128373||_==128378||_==128400||128405<=_&&_<=128406||128581<=_&&_<=128583||128587<=_&&_<=128591||_==128675||128692<=_&&_<=128694||_==128704||_==128716||129304<=_&&_<=129308||129310<=_&&_<=129311||_==129318||129328<=_&&_<=129337||129341<=_&&_<=129342||129489<=_&&_<=129501?g:127995<=_&&_<=127999?m:_==8205?x:_==9792||_==9794||9877<=_&&_<=9878||_==9992||_==10084||_==127752||_==127806||_==127859||_==127891||_==127908||_==127912||_==127979||_==127981||_==128139||128187<=_&&_<=128188||_==128295||_==128300||_==128488||_==128640||_==128658?b:128102<=_&&_<=128105?T:h}return this}typeof DB<"u"&&DB.exports&&(DB.exports=R9e)});var _de=Yu((N7,F7)=>{(function(e,t){typeof N7=="object"&&typeof F7<"u"?F7.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self).RBush=t()})(N7,function(){"use strict";function e(b,T,C,A,E){(function v(D,R,O,M,N){for(;M>O;){if(M-O>600){var _=M-O+1,S=R-O+1,w=Math.log(_),I=.5*Math.exp(2*w/3),L=.5*Math.sqrt(w*I*(_-I)/_)*(S-_/2<0?-1:1),B=Math.max(O,Math.floor(R-S*I/_+L)),H=Math.min(M,Math.floor(R+(_-S)*I/_+L));v(D,R,B,H,N)}var V=D[R],G=O,k=M;for(t(D,O,R),N(D[M],V)>0&&t(D,O,M);G<k;){for(t(D,G,k),G++,k--;N(D[G],V)<0;)G++;for(;N(D[k],V)>0;)k--}N(D[O],V)===0?t(D,O,k):t(D,++k,M),k<=R&&(O=k+1),R<=k&&(M=k-1)}})(b,T,C||0,A||b.length-1,E||n)}function t(b,T,C){var A=b[T];b[T]=b[C],b[C]=A}function n(b,T){return b<T?-1:b>T?1:0}var i=function(b){b===void 0&&(b=9),this._maxEntries=Math.max(4,b),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(b,T,C){if(!C)return T.indexOf(b);for(var A=0;A<T.length;A++)if(C(b,T[A]))return A;return-1}function r(b,T){s(b,0,b.children.length,T,b)}function s(b,T,C,A,E){E||(E=m(null)),E.minX=1/0,E.minY=1/0,E.maxX=-1/0,E.maxY=-1/0;for(var v=T;v<C;v++){var D=b.children[v];a(E,b.leaf?A(D):D)}return E}function a(b,T){return b.minX=Math.min(b.minX,T.minX),b.minY=Math.min(b.minY,T.minY),b.maxX=Math.max(b.maxX,T.maxX),b.maxY=Math.max(b.maxY,T.maxY),b}function c(b,T){return b.minX-T.minX}function u(b,T){return b.minY-T.minY}function f(b){return(b.maxX-b.minX)*(b.maxY-b.minY)}function h(b){return b.maxX-b.minX+(b.maxY-b.minY)}function p(b,T){return b.minX<=T.minX&&b.minY<=T.minY&&T.maxX<=b.maxX&&T.maxY<=b.maxY}function g(b,T){return T.minX<=b.maxX&&T.minY<=b.maxY&&T.maxX>=b.minX&&T.maxY>=b.minY}function m(b){return{children:b,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function x(b,T,C,A,E){for(var v=[T,C];v.length;)if(!((C=v.pop())-(T=v.pop())<=A)){var D=T+Math.ceil((C-T)/A/2)*A;e(b,D,T,C,E),v.push(T,D,D,C)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(b){var T=this.data,C=[];if(!g(b,T))return C;for(var A=this.toBBox,E=[];T;){for(var v=0;v<T.children.length;v++){var D=T.children[v],R=T.leaf?A(D):D;g(b,R)&&(T.leaf?C.push(D):p(b,R)?this._all(D,C):E.push(D))}T=E.pop()}return C},i.prototype.collides=function(b){var T=this.data;if(!g(b,T))return!1;for(var C=[];T;){for(var A=0;A<T.children.length;A++){var E=T.children[A],v=T.leaf?this.toBBox(E):E;if(g(b,v)){if(T.leaf||p(b,v))return!0;C.push(E)}}T=C.pop()}return!1},i.prototype.load=function(b){if(!b||!b.length)return this;if(b.length<this._minEntries){for(var T=0;T<b.length;T++)this.insert(b[T]);return this}var C=this._build(b.slice(),0,b.length-1,0);if(this.data.children.length)if(this.data.height===C.height)this._splitRoot(this.data,C);else{if(this.data.height<C.height){var A=this.data;this.data=C,C=A}this._insert(C,this.data.height-C.height-1,!0)}else this.data=C;return this},i.prototype.insert=function(b){return b&&this._insert(b,this.data.height-1),this},i.prototype.clear=function(){return this.data=m([]),this},i.prototype.remove=function(b,T){if(!b)return this;for(var C,A,E,v=this.data,D=this.toBBox(b),R=[],O=[];v||R.length;){if(v||(v=R.pop(),A=R[R.length-1],C=O.pop(),E=!0),v.leaf){var M=o(b,v.children,T);if(M!==-1)return v.children.splice(M,1),R.push(v),this._condense(R),this}E||v.leaf||!p(v,D)?A?(C++,v=A.children[C],E=!1):v=null:(R.push(v),O.push(C),C=0,A=v,v=v.children[0])}return this},i.prototype.toBBox=function(b){return b},i.prototype.compareMinX=function(b,T){return b.minX-T.minX},i.prototype.compareMinY=function(b,T){return b.minY-T.minY},i.prototype.toJSON=function(){return this.data},i.prototype.fromJSON=function(b){return this.data=b,this},i.prototype._all=function(b,T){for(var C=[];b;)b.leaf?T.push.apply(T,b.children):C.push.apply(C,b.children),b=C.pop();return T},i.prototype._build=function(b,T,C,A){var E,v=C-T+1,D=this._maxEntries;if(v<=D)return r(E=m(b.slice(T,C+1)),this.toBBox),E;A||(A=Math.ceil(Math.log(v)/Math.log(D)),D=Math.ceil(v/Math.pow(D,A-1))),(E=m([])).leaf=!1,E.height=A;var R=Math.ceil(v/D),O=R*Math.ceil(Math.sqrt(D));x(b,T,C,O,this.compareMinX);for(var M=T;M<=C;M+=O){var N=Math.min(M+O-1,C);x(b,M,N,R,this.compareMinY);for(var _=M;_<=N;_+=R){var S=Math.min(_+R-1,N);E.children.push(this._build(b,_,S,A-1))}}return r(E,this.toBBox),E},i.prototype._chooseSubtree=function(b,T,C,A){for(;A.push(T),!T.leaf&&A.length-1!==C;){for(var E=1/0,v=1/0,D=void 0,R=0;R<T.children.length;R++){var O=T.children[R],M=f(O),N=(_=b,S=O,(Math.max(S.maxX,_.maxX)-Math.min(S.minX,_.minX))*(Math.max(S.maxY,_.maxY)-Math.min(S.minY,_.minY))-M);N<v?(v=N,E=M<E?M:E,D=O):N===v&&M<E&&(E=M,D=O)}T=D||T.children[0]}var _,S;return T},i.prototype._insert=function(b,T,C){var A=C?b:this.toBBox(b),E=[],v=this._chooseSubtree(A,this.data,T,E);for(v.children.push(b),a(v,A);T>=0&&E[T].children.length>this._maxEntries;)this._split(E,T),T--;this._adjustParentBBoxes(A,E,T)},i.prototype._split=function(b,T){var C=b[T],A=C.children.length,E=this._minEntries;this._chooseSplitAxis(C,E,A);var v=this._chooseSplitIndex(C,E,A),D=m(C.children.splice(v,C.children.length-v));D.height=C.height,D.leaf=C.leaf,r(C,this.toBBox),r(D,this.toBBox),T?b[T-1].children.push(D):this._splitRoot(C,D)},i.prototype._splitRoot=function(b,T){this.data=m([b,T]),this.data.height=b.height+1,this.data.leaf=!1,r(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(b,T,C){for(var A,E,v,D,R,O,M,N=1/0,_=1/0,S=T;S<=C-T;S++){var w=s(b,0,S,this.toBBox),I=s(b,S,C,this.toBBox),L=(E=w,v=I,D=void 0,R=void 0,O=void 0,M=void 0,D=Math.max(E.minX,v.minX),R=Math.max(E.minY,v.minY),O=Math.min(E.maxX,v.maxX),M=Math.min(E.maxY,v.maxY),Math.max(0,O-D)*Math.max(0,M-R)),B=f(w)+f(I);L<N?(N=L,A=S,_=B<_?B:_):L===N&&B<_&&(_=B,A=S)}return A||C-T},i.prototype._chooseSplitAxis=function(b,T,C){var A=b.leaf?this.compareMinX:c,E=b.leaf?this.compareMinY:u;this._allDistMargin(b,T,C,A)<this._allDistMargin(b,T,C,E)&&b.children.sort(A)},i.prototype._allDistMargin=function(b,T,C,A){b.children.sort(A);for(var E=this.toBBox,v=s(b,0,T,E),D=s(b,C-T,C,E),R=h(v)+h(D),O=T;O<C-T;O++){var M=b.children[O];a(v,b.leaf?E(M):M),R+=h(v)}for(var N=C-T-1;N>=T;N--){var _=b.children[N];a(D,b.leaf?E(_):_),R+=h(D)}return R},i.prototype._adjustParentBBoxes=function(b,T,C){for(var A=C;A>=0;A--)a(T[A],b)},i.prototype._condense=function(b){for(var T=b.length-1,C=void 0;T>=0;T--)b[T].children.length===0?T>0?(C=b[T-1].children).splice(C.indexOf(b[T]),1):this.clear():r(b[T],this.toBBox)},i})});var _$=Yu((exports,module)=>{/*!
* protobuf.js v7.4.0 (c) 2016, daniel wirtz
* compiled thu, 22 aug 2024 20:30:39 utc
* licensed under the bsd-3-clause license
* see: https://github.com/dcodeio/protobuf.js for details
*/(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,p){s[a]=function(m){if(u)if(u=!1,m)p(m);else{for(var x=new Array(arguments.length-1),b=0;b<x.length;)x[b++]=arguments[b];h.apply(null,x)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,p(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var p=null,g=[],m=0,x=0,b;f<h;){var T=u[f++];switch(x){case 0:g[m++]=o[T>>2],b=(T&3)<<4,x=1;break;case 1:g[m++]=o[b|T>>4],b=(T&15)<<2,x=2;break;case 2:g[m++]=o[b|T>>6],g[m++]=o[T&63],x=0;break}m>8191&&((p||(p=[])).push(String.fromCharCode.apply(String,g)),m=0)}return x&&(g[m++]=o[b],g[m++]=61,x===1&&(g[m++]=61)),p?(m&&p.push(String.fromCharCode.apply(String,g.slice(0,m))),p.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var p=h,g=0,m,x=0;x<u.length;){var b=u.charCodeAt(x++);if(b===61&&g>1)break;if((b=r[b])===undefined)throw Error(a);switch(g){case 0:m=b,g=1;break;case 1:f[h++]=m<<2|(b&48)>>4,m=b,g=2;break;case 2:f[h++]=(m&15)<<4|(b&60)>>2,m=b,g=3;break;case 3:f[h++]=(m&3)<<6|b,g=0;break}}if(g===1)throw Error(a);return h-p},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function p(b,T,C){u[0]=b,T[C]=f[0],T[C+1]=f[1],T[C+2]=f[2],T[C+3]=f[3]}function g(b,T,C){u[0]=b,T[C]=f[3],T[C+1]=f[2],T[C+2]=f[1],T[C+3]=f[0]}c.writeFloatLE=h?p:g,c.writeFloatBE=h?g:p;function m(b,T){return f[0]=b[T],f[1]=b[T+1],f[2]=b[T+2],f[3]=b[T+3],u[0]}function x(b,T){return f[3]=b[T],f[2]=b[T+1],f[1]=b[T+2],f[0]=b[T+3],u[0]}c.readFloatLE=h?m:x,c.readFloatBE=h?x:m}():function(){function u(h,p,g,m){var x=p<0?1:0;if(x&&(p=-p),p===0)h(1/p>0?0:2147483648,g,m);else if(isNaN(p))h(2143289344,g,m);else if(p>34028234663852886e22)h((x<<31|2139095040)>>>0,g,m);else if(p<11754943508222875e-54)h((x<<31|Math.round(p/1401298464324817e-60))>>>0,g,m);else{var b=Math.floor(Math.log(p)/Math.LN2),T=Math.round(p*Math.pow(2,-b)*8388608)&8388607;h((x<<31|b+127<<23|T)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,p,g){var m=h(p,g),x=(m>>31)*2+1,b=m>>>23&255,T=m&8388607;return b===255?T?NaN:x*(1/0):b===0?x*1401298464324817e-60*T:x*Math.pow(2,b-150)*(T+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function p(b,T,C){u[0]=b,T[C]=f[0],T[C+1]=f[1],T[C+2]=f[2],T[C+3]=f[3],T[C+4]=f[4],T[C+5]=f[5],T[C+6]=f[6],T[C+7]=f[7]}function g(b,T,C){u[0]=b,T[C]=f[7],T[C+1]=f[6],T[C+2]=f[5],T[C+3]=f[4],T[C+4]=f[3],T[C+5]=f[2],T[C+6]=f[1],T[C+7]=f[0]}c.writeDoubleLE=h?p:g,c.writeDoubleBE=h?g:p;function m(b,T){return f[0]=b[T],f[1]=b[T+1],f[2]=b[T+2],f[3]=b[T+3],f[4]=b[T+4],f[5]=b[T+5],f[6]=b[T+6],f[7]=b[T+7],u[0]}function x(b,T){return f[7]=b[T],f[6]=b[T+1],f[5]=b[T+2],f[4]=b[T+3],f[3]=b[T+4],f[2]=b[T+5],f[1]=b[T+6],f[0]=b[T+7],u[0]}c.readDoubleLE=h?m:x,c.readDoubleBE=h?x:m}():function(){function u(h,p,g,m,x,b){var T=m<0?1:0;if(T&&(m=-m),m===0)h(0,x,b+p),h(1/m>0?0:2147483648,x,b+g);else if(isNaN(m))h(0,x,b+p),h(2146959360,x,b+g);else if(m>17976931348623157e292)h(0,x,b+p),h((T<<31|2146435072)>>>0,x,b+g);else{var C;if(m<22250738585072014e-324)C=m/5e-324,h(C>>>0,x,b+p),h((T<<31|C/4294967296)>>>0,x,b+g);else{var A=Math.floor(Math.log(m)/Math.LN2);A===1024&&(A=1023),C=m*Math.pow(2,-A),h(C*4503599627370496>>>0,x,b+p),h((T<<31|A+1023<<20|C*1048576&1048575)>>>0,x,b+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,p,g,m,x){var b=h(m,x+p),T=h(m,x+g),C=(T>>31)*2+1,A=T>>>20&2047,E=4294967296*(T&1048575)+b;return A===2047?E?NaN:C*(1/0):A===0?C*5e-324*E:C*Math.pow(2,A-1075)*(E+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(p){if(p<1||p>c)return o(p);f+p>a&&(u=o(a),f=0);var g=r.call(u,f,f+=p);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,p;s<a;)p=r[s++],p<128?f[h++]=p:p>191&&p<224?f[h++]=(p&31)<<6|r[s++]&63:p>239&&p<365?(p=((p&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(p>>10),f[h++]=56320+(p&1023)):f[h++]=(p&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,x){return RangeError("index out of range: "+m.pos+" + "+(x||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(x){if(x instanceof Uint8Array||Array.isArray(x))return new c(x);throw Error("illegal buffer")}:function(x){if(Array.isArray(x))return new c(x);throw Error("illegal buffer")},f=function(){return i.Buffer?function(b){return(c.create=function(C){return i.Buffer.isBuffer(C)?new o(C):u(C)})(b)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var x=4294967295;return function(){if(x=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(x=(x|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(x=(x|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(x=(x|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(x=(x|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return x;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return x}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var x=this.uint32();return x>>>1^-(x&1)|0};function h(){var m=new r(0,0),x=0;if(this.len-this.pos>4){for(;x<4;++x)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<x*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;x=0}else{for(;x<3;++x){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<x*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<x*7)>>>0,m}if(this.len-this.pos>4){for(;x<5;++x)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<x*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;x<5;++x){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<x*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function p(m,x){return(m[x-4]|m[x-3]<<8|m[x-2]<<16|m[x-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(p(this.buf,this.pos+=4),p(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var x=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,x},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var x=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,x},c.prototype.bytes=function(){var x=this.uint32(),b=this.pos,T=this.pos+x;if(T>this.len)throw a(this,x);if(this.pos+=x,Array.isArray(this.buf))return this.buf.slice(b,T);if(b===T){var C=i.Buffer;return C?C.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,b,T)},c.prototype.string=function(){var x=this.bytes();return s.read(x,0,x.length)},c.prototype.skip=function(x){if(typeof x=="number"){if(this.pos+x>this.len)throw a(this,x);this.pos+=x}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var x=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[x](!1)},uint64:function(){return h.call(this)[x](!0)},sint64:function(){return h.call(this).zzDecode()[x](!1)},fixed64:function(){return g.call(this)[x](!0)},sfixed64:function(){return g.call(this)[x](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(x){return h.emit("error",x,s),f(x)}return h.emit("data",m,s),f(null,m)})}catch(p){return h.emit("error",p,s),setTimeout(function(){f(p)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,p=(u-h)/4294967296>>>0;return f&&(p=~p>>>0,h=~h>>>0,++h>4294967295&&(h=0,++p>4294967295&&(p=0))),new o(h,p)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(A,E,v){this.fn=A,this.len=E,this.next=undefined,this.val=v}function u(){}function f(A){this.head=A.head,this.tail=A.tail,this.len=A.len,this.next=A.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var p=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=p(),h.alloc=function(E){return new i.Array(E)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(E,v,D){return this.tail=this.tail.next=new c(E,v,D),this.len+=v,this};function g(A,E,v){E[v]=A&255}function m(A,E,v){for(;A>127;)E[v++]=A&127|128,A>>>=7;E[v]=A}function x(A,E){this.len=A,this.next=undefined,this.val=E}x.prototype=Object.create(c.prototype),x.prototype.fn=m,h.prototype.uint32=function(E){return this.len+=(this.tail=this.tail.next=new x((E=E>>>0)<128?1:E<16384?2:E<2097152?3:E<268435456?4:5,E)).len,this},h.prototype.int32=function(E){return E<0?this._push(b,10,r.fromNumber(E)):this.uint32(E)},h.prototype.sint32=function(E){return this.uint32((E<<1^E>>31)>>>0)};function b(A,E,v){for(;A.hi;)E[v++]=A.lo&127|128,A.lo=(A.lo>>>7|A.hi<<25)>>>0,A.hi>>>=7;for(;A.lo>127;)E[v++]=A.lo&127|128,A.lo=A.lo>>>7;E[v++]=A.lo}h.prototype.uint64=function(E){var v=r.from(E);return this._push(b,v.length(),v)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(E){var v=r.from(E).zzEncode();return this._push(b,v.length(),v)},h.prototype.bool=function(E){return this._push(g,1,E?1:0)};function T(A,E,v){E[v]=A&255,E[v+1]=A>>>8&255,E[v+2]=A>>>16&255,E[v+3]=A>>>24}h.prototype.fixed32=function(E){return this._push(T,4,E>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(E){var v=r.from(E);return this._push(T,4,v.lo)._push(T,4,v.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(E){return this._push(i.float.writeFloatLE,4,E)},h.prototype.double=function(E){return this._push(i.float.writeDoubleLE,8,E)};var C=i.Array.prototype.set?function(E,v,D){v.set(E,D)}:function(E,v,D){for(var R=0;R<E.length;++R)v[D+R]=E[R]};h.prototype.bytes=function(E){var v=E.length>>>0;if(!v)return this._push(g,1,0);if(i.isString(E)){var D=h.alloc(v=s.length(E));s.decode(E,D,0),E=D}return this.uint32(v)._push(C,v,E)},h.prototype.string=function(E){var v=a.length(E);return v?this.uint32(v)._push(a.write,v,E):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var E=this.head,v=this.tail,D=this.len;return this.reset().uint32(D),D&&(this.tail.next=E.next,this.tail=v,this.len+=D),this},h.prototype.finish=function(){for(var E=this.head.next,v=this.constructor.alloc(this.len),D=0;E;)E.fn(E.val,v,D),D+=E.len,E=E.next;return v},h._configure=function(A){o=A,h.create=p(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var zCe=Yu((uzi,N8)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var p=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,p),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,x=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),b={width:g.width,height:g.height,pixelData:x.resultPixels,minValue:x.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return x.resultMask&&(b.maskData=x.resultMask),h.returnEncodedMask&&g.mask&&(b.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(b.fileInfo=s(g),h.computeUsedBitDepths&&(b.fileInfo.bitDepths=a(g))),b};var r=function(f,h,p,g,m){var x=0,b=f.pixels.numBlocksX,T=f.pixels.numBlocksY,C=Math.floor(f.width/b),A=Math.floor(f.height/T),E=2*f.maxZError,v=Number.MAX_VALUE,D;p=p||(f.mask?f.mask.bitset:null);var R,O;R=new h(f.width*f.height),m&&p&&(O=new Uint8Array(f.width*f.height));for(var M=new Float32Array(C*A),N,_,S=0;S<=T;S++){var w=S!==T?A:f.height%T;if(w!==0)for(var I=0;I<=b;I++){var L=I!==b?C:f.width%b;if(L!==0){var B=S*f.width*A+I*C,H=f.width-L,V=f.pixels.blocks[x],G,k,W;V.encoding<2?(V.encoding===0?G=V.rawData:(u(V.stuffedData,V.bitsPerPixel,V.numValidPixels,V.offset,E,M,f.pixels.maxValue),G=M),k=0):V.encoding===2?W=0:W=V.offset;var q;if(p)for(_=0;_<w;_++){for(B&7&&(q=p[B>>3],q<<=B&7),N=0;N<L;N++)B&7||(q=p[B>>3]),q&128?(O&&(O[B]=1),D=V.encoding<2?G[k++]:W,v=v>D?D:v,R[B++]=D):(O&&(O[B]=0),R[B++]=g),q<<=1;B+=H}else if(V.encoding<2)for(_=0;_<w;_++){for(N=0;N<L;N++)D=G[k++],v=v>D?D:v,R[B++]=D;B+=H}else for(v=v>W?W:v,_=0;_<w;_++){for(N=0;N<L;N++)R[B++]=W;B+=H}if(V.encoding===1&&k!==V.numValidPixels)throw"Block and Mask do not match";x++}}}return{resultPixels:R,resultMask:O,minValue:v}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,p={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?p.float32=!0:m.encoding===1?p[m.bitsPerPixel]=!0:p[0]=!0}return Object.keys(p)},c=function(f,h,p){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var x=new DataView(f,h,24);if(g.fileVersion=x.getInt32(0,!0),g.imageType=x.getInt32(4,!0),g.height=x.getUint32(8,!0),g.width=x.getUint32(12,!0),g.maxZError=x.getFloat64(16,!0),h+=24,!p)if(x=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=x.getUint32(0,!0),g.mask.numBlocksX=x.getUint32(4,!0),g.mask.numBytes=x.getUint32(8,!0),g.mask.maxValue=x.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var b=new Uint8Array(Math.ceil(g.width*g.height/8));x=new DataView(f,h,g.mask.numBytes);var T=x.getInt16(0,!0),C=2,A=0;do{if(T>0)for(;T--;)b[A++]=x.getUint8(C++);else{var E=x.getUint8(C++);for(T=-T;T--;)b[A++]=E}T=x.getInt16(C,!0),C+=2}while(C<g.mask.numBytes);if(T!==-32768||A<b.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=b,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));x=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=x.getUint32(0,!0),g.pixels.numBlocksX=x.getUint32(4,!0),g.pixels.numBytes=x.getUint32(8,!0),g.pixels.maxValue=x.getFloat32(12,!0),h+=16;var v=g.pixels.numBlocksX,D=g.pixels.numBlocksY,R=v+(g.width%v>0?1:0),O=D+(g.height%D>0?1:0);g.pixels.blocks=new Array(R*O);for(var M=0,N=0;N<O;N++)for(var _=0;_<R;_++){var S=0,w=f.byteLength-h;x=new DataView(f,h,Math.min(10,w));var I={};g.pixels.blocks[M++]=I;var L=x.getUint8(0);if(S++,I.encoding=L&63,I.encoding>3)throw"Invalid block encoding ("+I.encoding+")";if(I.encoding===2){h++;continue}if(L!==0&&L!==2){if(L>>=6,I.offsetType=L,L===2)I.offset=x.getInt8(1),S++;else if(L===1)I.offset=x.getInt16(1,!0),S+=2;else if(L===0)I.offset=x.getFloat32(1,!0),S+=4;else throw"Invalid block offset type";if(I.encoding===1)if(L=x.getUint8(S),S++,I.bitsPerPixel=L&63,L>>=6,I.numValidPixelsType=L,L===2)I.numValidPixels=x.getUint8(S),S++;else if(L===1)I.numValidPixels=x.getUint16(S,!0),S+=2;else if(L===0)I.numValidPixels=x.getUint32(S,!0),S+=4;else throw"Invalid valid pixel count type"}if(h+=S,I.encoding!==3){var B,H;if(I.encoding===0){var V=(g.pixels.numBytes-1)/4;if(V!==Math.floor(V))throw"uncompressed block has invalid length";B=new ArrayBuffer(V*4),H=new Uint8Array(B),H.set(new Uint8Array(f,h,V*4));var G=new Float32Array(B);I.rawData=G,h+=V*4}else if(I.encoding===1){var k=Math.ceil(I.numValidPixels*I.bitsPerPixel/8),W=Math.ceil(k/4);B=new ArrayBuffer(W*4),H=new Uint8Array(B),H.set(new Uint8Array(f,h,k)),I.stuffedData=new Uint32Array(B),h+=k}}}return g.eofOffset=h,g},u=function(f,h,p,g,m,x,b){var T=(1<<h)-1,C=0,A,E=0,v,D,R=Math.ceil((b-g)/m),O=f.length*4-Math.ceil(h*p/8);for(f[f.length-1]<<=8*O,A=0;A<p;A++){if(E===0&&(D=f[C++],E=32),E>=h)v=D>>>E-h&T,E-=h;else{var M=h-E;v=(D&T)<<M&T,D=f[C++],E=32-M,v+=D>>>E}x[A]=v<R?g+v*m:b}return x};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,p,g,m,x){var b=(1<<f)-1,T=0,C,A=0,E,v,D,R,O=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*O,p)for(C=0;C<h;C++)A===0&&(v=c[T++],A=32),A>=f?(E=v>>>A-f&b,A-=f):(D=f-A,E=(v&b)<<D&b,v=c[T++],A=32-D,E+=v>>>A),u[C]=p[E];else for(R=Math.ceil((x-g)/m),C=0;C<h;C++)A===0&&(v=c[T++],A=32),A>=f?(E=v>>>A-f&b,A-=f):(D=f-A,E=(v&b)<<D&b,v=c[T++],A=32-D,E+=v>>>A),u[C]=E<R?g+E*m:x},unstuffLUT:function(c,u,f,h,p,g){var m=(1<<u)-1,x=0,b=0,T=0,C=0,A=0,E,v=[],D=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*D;var R=Math.ceil((g-h)/p);for(b=0;b<f;b++)C===0&&(E=c[x++],C=32),C>=u?(A=E>>>C-u&m,C-=u):(T=u-C,A=(E&m)<<T&m,E=c[x++],C=32-T,A+=E>>>C),v[b]=A<R?h+A*p:g;return v.unshift(h),v},unstuff2:function(c,u,f,h,p,g,m,x){var b=(1<<f)-1,T=0,C,A=0,E=0,v,D,R;if(p)for(C=0;C<h;C++)A===0&&(D=c[T++],A=32,E=0),A>=f?(v=D>>>E&b,A-=f,E+=f):(R=f-A,v=D>>>E&b,D=c[T++],A=32-R,v|=(D&(1<<R)-1)<<f-R,E=R),u[C]=p[v];else{var O=Math.ceil((x-g)/m);for(C=0;C<h;C++)A===0&&(D=c[T++],A=32,E=0),A>=f?(v=D>>>E&b,A-=f,E+=f):(R=f-A,v=D>>>E&b,D=c[T++],A=32-R,v|=(D&(1<<R)-1)<<f-R,E=R),u[C]=v<O?g+v*m:x}return u},unstuffLUT2:function(c,u,f,h,p,g){var m=(1<<u)-1,x=0,b=0,T=0,C=0,A=0,E=0,v,D=[],R=Math.ceil((g-h)/p);for(b=0;b<f;b++)C===0&&(v=c[x++],C=32,E=0),C>=u?(A=v>>>E&m,C-=u,E+=u):(T=u-C,A=v>>>E&m,v=c[x++],C=32-T,A|=(v&(1<<T)-1)<<u-T,E=T),D[b]=A<R?h+A*p:g;return D.unshift(h),D},originalUnstuff:function(c,u,f,h){var p=(1<<f)-1,g=0,m,x=0,b,T,C,A=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*A,m=0;m<h;m++)x===0&&(T=c[g++],x=32),x>=f?(b=T>>>x-f&p,x-=f):(C=f-x,b=(T&p)<<C&p,T=c[g++],x=32-C,b+=T>>>x),u[m]=b;return u},originalUnstuff2:function(c,u,f,h){var p=(1<<f)-1,g=0,m,x=0,b=0,T,C,A;for(m=0;m<h;m++)x===0&&(C=c[g++],x=32,b=0),x>=f?(T=C>>>b&p,x-=f,b+=f):(A=f-x,T=C>>>b&p,C=c[g++],x=32-A,T|=(C&(1<<A)-1)<<f-A,b=A),u[m]=T;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,p=Math.floor(h/2),g=0;p;){var m=p>=359?359:p;p-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),p={};if(p.fileIdentifierString=String.fromCharCode.apply(null,h),p.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+p.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);p.fileVersion=m,f+=4,m>=3&&(p.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),p.height=g.getUint32(0,!0),p.width=g.getUint32(4,!0),f+=8,m>=4?(p.numDims=g.getUint32(8,!0),f+=4):p.numDims=1,g=new DataView(c,f,40),p.numValidPixel=g.getUint32(0,!0),p.microBlockSize=g.getInt32(4,!0),p.blobSize=g.getInt32(8,!0),p.imageType=g.getInt32(12,!0),p.maxZError=g.getFloat64(16,!0),p.zMin=g.getFloat64(24,!0),p.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=p,u.ptr=f;var x,b;if(m>=3&&(b=m>=4?52:48,x=this.computeChecksumFletcher32(new Uint8Array(c,f-b,p.blobSize-14)),x!==p.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),p=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,p),m=this.readSubArray(c,u.ptr+p,h,p);u.ptr+=2*p;var x,b=!0;for(x=0;x<f.numDims;x++)if(g[x]!==m[x]){b=!1;break}return f.minValues=g,f.maxValues=m,b},readSubArray:function(c,u,f,h){var p;if(f===Uint8Array)p=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),p=new f(g)}return p},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,p=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),x={};if(x.numBytes=m.getUint32(0,!0),f+=4,(g===0||p===g)&&x.numBytes!==0)throw"invalid mask";var b,T;if(g===0)b=new Uint8Array(Math.ceil(p/8)),x.bitset=b,T=new Uint8Array(p),u.pixels.resultMask=T,f+=x.numBytes;else if(x.numBytes>0){b=new Uint8Array(Math.ceil(p/8)),m=new DataView(c,f,x.numBytes);var C=m.getInt16(0,!0),A=2,E=0,v=0;do{if(C>0)for(;C--;)b[E++]=m.getUint8(A++);else for(v=m.getUint8(A++),C=-C;C--;)b[E++]=v;C=m.getInt16(A,!0),A+=2}while(A<x.numBytes);if(C!==-32768||E<b.length)throw"Unexpected end of mask RLE encoding";T=new Uint8Array(p);var D=0,R=0;for(R=0;R<p;R++)R&7?(D=b[R>>3],D<<=R&7):D=b[R>>3],D&128&&(T[R]=1);u.pixels.resultMask=T,x.bitset=b,f+=x.numBytes}return u.ptr=f,u.mask=x,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,p=u.headerInfo,g=p.numDims,m=p.width*p.height,x=p.imageType,b=p.numValidPixel*r.getDataTypeSize(x)*g,T,C=u.pixels.resultMask;if(f===Uint8Array)T=new Uint8Array(c,h,b);else{var A=new ArrayBuffer(b),E=new Uint8Array(A);E.set(new Uint8Array(c,h,b)),T=new f(A)}if(T.length===m*g)u.pixels.resultPixels=T;else{u.pixels.resultPixels=new f(m*g);var v=0,D=0,R=0,O=0;if(g>1)for(R=0;R<g;R++)for(O=R*m,D=0;D<m;D++)C[D]&&(u.pixels.resultPixels[O+D]=T[v++]);else for(D=0;D<m;D++)C[D]&&(u.pixels.resultPixels[D]=T[v++])}return h+=b,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var p=h.getInt32(0,!0);if(p<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),x=h.getInt32(12,!0);if(m>=x)return!1;var b=new Uint32Array(x-m);r.decodeBits(c,u,b);var T=[],C,A,E,v;for(C=m;C<x;C++)A=C-(C<g?0:g),T[A]={first:b[C-m],second:null};var D=c.byteLength-u.ptr,R=Math.ceil(D/4),O=new ArrayBuffer(R*4),M=new Uint8Array(O);M.set(new Uint8Array(c,u.ptr,D));var N=new Uint32Array(O),_=0,S,w=0;for(S=N[0],C=m;C<x;C++)A=C-(C<g?0:g),v=T[A].first,v>0&&(T[A].second=S<<_>>>32-v,32-_>=v?(_+=v,_===32&&(_=0,w++,S=N[w])):(_+=v-32,w++,S=N[w],T[A].second|=S>>>32-_));var I=0,L=0,B=new s;for(C=0;C<T.length;C++)T[C]!==void 0&&(I=Math.max(I,T[C].first));I>=f?L=f:L=I,I>=30&&console.log("WARning, large NUM LUT BITS IS "+I);var H=[],V,G,k,W,q,J;for(C=m;C<x;C++)if(A=C-(C<g?0:g),v=T[A].first,v>0)if(V=[v,A],v<=L)for(G=T[A].second<<L-v,k=1<<L-v,E=0;E<k;E++)H[G|E]=V;else for(G=T[A].second,J=B,W=v-1;W>=0;W--)q=G>>>W&1,q?(J.right||(J.right=new s),J=J.right):(J.left||(J.left=new s),J=J.left),W===0&&!J.val&&(J.val=V[1]);return{decodeLut:H,numBitsLUTQick:L,numBitsLUT:I,tree:B,stuffedData:N,srcPtr:w,bitPos:_}},readHuffman:function(c,u,f){var h=u.headerInfo,p=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,x=m*g,b=this.readHuffmanTree(c,u),T=b.decodeLut,C=b.tree,A=b.stuffedData,E=b.srcPtr,v=b.bitPos,D=b.numBitsLUTQick,R=b.numBitsLUT,O=u.headerInfo.imageType===0?128:0,M,N,_,S=u.pixels.resultMask,w,I,L,B,H,V,G,k=0;v>0&&(E++,v=0);var W=A[E],q=u.encodeMode===1,J=new f(x*p),j=J,K;for(K=0;K<h.numDims;K++){if(p>1&&(j=new f(J.buffer,x*K,x),k=0),u.headerInfo.numValidPixel===m*g)for(V=0,B=0;B<g;B++)for(H=0;H<m;H++,V++){if(N=0,w=W<<v>>>32-D,I=w,32-v<D&&(w|=A[E+1]>>>64-v-D,I=w),T[I])N=T[I][1],v+=T[I][0];else for(w=W<<v>>>32-R,I=w,32-v<R&&(w|=A[E+1]>>>64-v-R,I=w),M=C,G=0;G<R;G++)if(L=w>>>R-G-1&1,M=L?M.right:M.left,!(M.left||M.right)){N=M.val,v=v+G+1;break}v>=32&&(v-=32,E++,W=A[E]),_=N-O,q?(H>0?_+=k:B>0?_+=j[V-m]:_+=k,_&=255,j[V]=_,k=_):j[V]=_}else for(V=0,B=0;B<g;B++)for(H=0;H<m;H++,V++)if(S[V]){if(N=0,w=W<<v>>>32-D,I=w,32-v<D&&(w|=A[E+1]>>>64-v-D,I=w),T[I])N=T[I][1],v+=T[I][0];else for(w=W<<v>>>32-R,I=w,32-v<R&&(w|=A[E+1]>>>64-v-R,I=w),M=C,G=0;G<R;G++)if(L=w>>>R-G-1&1,M=L?M.right:M.left,!(M.left||M.right)){N=M.val,v=v+G+1;break}v>=32&&(v-=32,E++,W=A[E]),_=N-O,q?(H>0&&S[V-1]?_+=k:B>0&&S[V-m]?_+=j[V-m]:_+=k,_&=255,j[V]=_,k=_):j[V]=_}u.ptr=u.ptr+(E+1)*4+(v>0?4:0)}u.pixels.resultPixels=J},decodeBits:function(c,u,f,h,p){{var g=u.headerInfo,m=g.fileVersion,x=0,b=new DataView(c,u.ptr,5),T=b.getUint8(0);x++;var C=T>>6,A=C===0?4:3-C,E=(T&32)>0,v=T&31,D=0;if(A===1)D=b.getUint8(x),x++;else if(A===2)D=b.getUint16(x,!0),x+=2;else if(A===4)D=b.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type";var R=2*g.maxZError,O,M,N,_,S,w,I,L,B,H,V=g.numDims>1?g.maxValues[p]:g.zMax;if(E){for(u.counter.lut++,L=b.getUint8(x),B=v,x++,_=Math.ceil((L-1)*v/8),S=Math.ceil(_/4),M=new ArrayBuffer(S*4),N=new Uint8Array(M),u.ptr+=x,N.set(new Uint8Array(c,u.ptr,_)),I=new Uint32Array(M),u.ptr+=_,H=0;L-1>>>H;)H++;_=Math.ceil(D*H/8),S=Math.ceil(_/4),M=new ArrayBuffer(S*4),N=new Uint8Array(M),N.set(new Uint8Array(c,u.ptr,_)),O=new Uint32Array(M),u.ptr+=_,m>=3?w=o.unstuffLUT2(I,v,L-1,h,R,V):w=o.unstuffLUT(I,v,L-1,h,R,V),m>=3?o.unstuff2(O,f,H,D,w):o.unstuff(O,f,H,D,w)}else u.counter.bitstuffer++,H=v,u.ptr+=x,H>0&&(_=Math.ceil(D*H/8),S=Math.ceil(_/4),M=new ArrayBuffer(S*4),N=new Uint8Array(M),N.set(new Uint8Array(c,u.ptr,_)),O=new Uint32Array(M),u.ptr+=_,m>=3?h==null?o.originalUnstuff2(O,f,H,D):o.unstuff2(O,f,H,D,!1,h,R,V):h==null?o.originalUnstuff(O,f,H,D):o.unstuff(O,f,H,D,!1,h,R,V))}},readTiles:function(c,u,f){var h=u.headerInfo,p=h.width,g=h.height,m=h.microBlockSize,x=h.imageType,b=r.getDataTypeSize(x),T=Math.ceil(p/m),C=Math.ceil(g/m);u.pixels.numBlocksY=C,u.pixels.numBlocksX=T,u.pixels.ptr=0;var A=0,E=0,v=0,D=0,R=0,O=0,M=0,N=0,_=0,S=0,w=0,I=0,L=0,B=0,H=0,V=0,G,k,W,q,J,j,K=new f(m*m),Q=g%m||m,he=p%m||m,ye,re,_e=h.numDims,be,we=u.pixels.resultMask,De=u.pixels.resultPixels;for(v=0;v<C;v++)for(R=v!==C-1?m:Q,D=0;D<T;D++)for(O=D!==T-1?m:he,w=v*p*m+D*m,I=p-O,be=0;be<_e;be++){if(_e>1&&(De=new f(u.pixels.resultPixels.buffer,p*g*be*b,p*g)),M=c.byteLength-u.ptr,G=new DataView(c,u.ptr,Math.min(10,M)),k={},V=0,N=G.getUint8(0),V++,_=N>>6&255,S=N>>2&15,S!==(D*m>>3&15))throw"integrity issue";if(j=N&3,j>3)throw u.ptr+=V,"Invalid block encoding ("+j+")";if(j===2){u.counter.constant++,u.ptr+=V;continue}else if(j===0){if(u.counter.uncompressed++,u.ptr+=V,L=R*O*b,B=c.byteLength-u.ptr,L=L<B?L:B,W=new ArrayBuffer(L%b===0?L:L+b-L%b),q=new Uint8Array(W),q.set(new Uint8Array(c,u.ptr,L)),J=new f(W),H=0,we)for(A=0;A<R;A++){for(E=0;E<O;E++)we[w]&&(De[w]=J[H++]),w++;w+=I}else for(A=0;A<R;A++){for(E=0;E<O;E++)De[w++]=J[H++];w+=I}u.ptr+=H*b}else if(ye=r.getDataTypeUsed(x,_),re=r.getOnePixel(k,V,ye,G),V+=r.getDataTypeSize(ye),j===3)if(u.ptr+=V,u.counter.constantoffset++,we)for(A=0;A<R;A++){for(E=0;E<O;E++)we[w]&&(De[w]=re),w++;w+=I}else for(A=0;A<R;A++){for(E=0;E<O;E++)De[w++]=re;w+=I}else if(u.ptr+=V,r.decodeBits(c,u,K,re,be),V=0,we)for(A=0;A<R;A++){for(E=0;E<O;E++)we[w]&&(De[w]=K[V++]),w++;w+=I}else for(A=0;A<R;A++){for(E=0;E<O;E++)De[w++]=K[V++];w+=I}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,p=h*f,g=0,m=0,x=0,b=c.pixels.resultMask;if(b)if(f>1)for(g=0;g<f;g++)for(x=g*h,m=0;m<h;m++)b[m]&&(c.pixels.resultPixels[x+m]=u);else for(m=0;m<h;m++)b[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<p;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var p=0;switch(f){case 0:p=h.getInt8(u);break;case 1:p=h.getUint8(u);break;case 2:p=h.getInt16(u,!0);break;case 3:p=h.getUint16(u,!0);break;case 4:p=h.getInt32(u,!0);break;case 5:p=h.getUInt32(u,!0);break;case 6:p=h.getFloat32(u,!0);break;case 7:p=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return p}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,p={};if(p.ptr=u.inputOffset||0,p.pixels={},!!r.readHeaderInfo(c,p)){var g=p.headerInfo,m=g.fileVersion,x=r.getDataTypeArray(g.imageType);r.readMask(c,p),g.numValidPixel!==g.width*g.height&&!p.pixels.resultMask&&(p.pixels.resultMask=u.maskData);var b=g.width*g.height;if(p.pixels.resultPixels=new x(b*g.numDims),p.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(p);else if(m>=4&&r.checkMinMaxRanges(c,p))r.constructConstantSurface(p);else{var T=new DataView(c,p.ptr,2),C=T.getUint8(0);if(p.ptr++,C)r.readDataOneSweep(c,p,x);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var A=T.getUint8(1);if(p.ptr++,p.encodeMode=A,A>2||m<4&&A>1)throw"Invalid Huffman flag "+A;A?r.readHuffman(c,p,x):r.readTiles(c,p,x)}else r.readTiles(c,p,x)}p.eofOffset=p.ptr;var E;u.inputOffset?(E=p.headerInfo.blobSize+u.inputOffset-p.ptr,Math.abs(E)>=1&&(p.eofOffset=u.inputOffset+p.headerInfo.blobSize)):(E=p.headerInfo.blobSize-p.ptr,Math.abs(E)>=1&&(p.eofOffset=p.headerInfo.blobSize));var v={width:g.width,height:g.height,pixelData:p.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:p.pixels.resultMask};if(p.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var D=p.pixels.resultMask;for(h=0;h<b;h++)D[h]||(v.pixelData[h]=f);v.noDataValue=f}return p.noDataValue=f,u.returnFileInfo&&(v.fileInfo=r.formatFileInfo(p)),v}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,p=o.byteLength-10,g,m=[],x,b,T={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<p;){var C=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:b,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=C.fileInfo.eofOffset,h===0&&(g=C.encodedMaskData,b=C.maskData,T.width=C.width,T.height=C.height,T.dimCount=C.dimCount||1,T.pixelType=C.pixelType||C.fileInfo.pixelType,T.mask=C.maskData),f>1&&C.fileInfo.mask&&C.fileInfo.mask.numBytes>0&&m.push(C.maskData),h++,T.pixels.push(C.pixelData),T.statistics.push({minValue:C.minValue,maxValue:C.maxValue,noDataValue:C.noDataValue,dimStats:C.dimStats})}var A,E,v;if(f>1&&m.length>1){for(v=T.width*T.height,T.bandMasks=m,b=new Uint8Array(v),b.set(m[0]),A=1;A<m.length;A++)for(x=m[A],E=0;E<v;E++)b[E]=b[E]&x[E];T.maskData=b}return T}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof N8<"u"&&N8.exports?N8.exports=i:this.Lerc=i})()});var KAe=Yu((qco,XAe)=>{XAe.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var ZAe=Yu((Yco,$Ae)=>{var{webm:_St,mp4:gSt}=KAe(),iZ=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,oZ=()=>"wakeLock"in navigator,rZ=class{constructor(){if(this.enabled=!1,oZ()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else iZ()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",_St),this._addSourceToVideo(this.noSleepVideo,"mp4",gSt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return oZ()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):iZ()?(this.disable(),console.warn(`
NoSleep enabled for older iOS devices. This can interrupt
active or long-running network requests from completing successfully.
See https://github.com/richtr/NoSleep.js/issues/15 for more details.
`),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){oZ()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):iZ()?this.noSleepTimer&&(console.warn(`
NoSleep now disabled for older iOS devices.
`),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};$Ae.exports=rZ});function fZ(e,t){return e!=null?e:t}fZ.EMPTY_OBJECT=Object.freeze({});var y=fZ;function CEe(e){return e!=null}var l=CEe;function M0(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(M0.prototype=Object.create(Error.prototype),M0.prototype.constructor=M0);M0.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=`
${this.stack.toString()}`),e};M0.throwInstantiationError=function(){throw new M0("This function defines an interface and should not be called directly.")};var de=M0;var bs={};bs.typeOf={};function AEe(e){return`${e} is required, actual value was undefined`}function hT(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}bs.defined=function(e,t){if(!l(t))throw new de(AEe(e))};bs.typeOf.func=function(e,t){if(typeof t!="function")throw new de(hT(typeof t,"function",e))};bs.typeOf.string=function(e,t){if(typeof t!="string")throw new de(hT(typeof t,"string",e))};bs.typeOf.number=function(e,t){if(typeof t!="number")throw new de(hT(typeof t,"number",e))};bs.typeOf.number.lessThan=function(e,t,n){if(bs.typeOf.number(e,t),t>=n)throw new de(`Expected ${e} to be less than ${n}, actual value was ${t}`)};bs.typeOf.number.lessThanOrEquals=function(e,t,n){if(bs.typeOf.number(e,t),t>n)throw new de(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};bs.typeOf.number.greaterThan=function(e,t,n){if(bs.typeOf.number(e,t),t<=n)throw new de(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};bs.typeOf.number.greaterThanOrEquals=function(e,t,n){if(bs.typeOf.number(e,t),t<n)throw new de(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};bs.typeOf.object=function(e,t){if(typeof t!="object")throw new de(hT(typeof t,"object",e))};bs.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new de(hT(typeof t,"boolean",e))};bs.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new de(hT(typeof t,"bigint",e))};bs.typeOf.number.equals=function(e,t,n,i){if(bs.typeOf.number(e,n),bs.typeOf.number(t,i),n!==i)throw new de(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var bo=bs;function QS(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(QS.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});QS.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};QS.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function EEe(e,t){return t-e}QS.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(EEe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var me=QS;function U_(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new me,this.setValue(e)}Object.defineProperties(U_.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});U_.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};U_.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};U_.prototype.equals=function(e){return this===e||e instanceof U_&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};U_.prototype.valueOf=function(){return this._value};U_.prototype.toString=function(){return String(this._value)};var $n=U_;function SEe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function vEe(e){return new $n(e)}function wEe(e,t,n){return SEe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,y(t,!1),y(n,vEe))}var le=wEe;function JS(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(JS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),image:le("image"),scale:le("scale"),pixelOffset:le("pixelOffset"),eyeOffset:le("eyeOffset"),horizontalOrigin:le("horizontalOrigin"),verticalOrigin:le("verticalOrigin"),heightReference:le("heightReference"),color:le("color"),rotation:le("rotation"),alignedAxis:le("alignedAxis"),sizeInMeters:le("sizeInMeters"),width:le("width"),height:le("height"),scaleByDistance:le("scaleByDistance"),translucencyByDistance:le("translucencyByDistance"),pixelOffsetScaleByDistance:le("pixelOffsetScaleByDistance"),imageSubRegion:le("imageSubRegion"),distanceDisplayCondition:le("distanceDisplayCondition"),disableDepthTestDistance:le("disableDepthTestDistance"),splitDirection:le("splitDirection")});JS.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new JS(this)};JS.prototype.merge=function(e){this.show=y(this._show,e.show),this.image=y(this._image,e.image),this.scale=y(this._scale,e.scale),this.pixelOffset=y(this._pixelOffset,e.pixelOffset),this.eyeOffset=y(this._eyeOffset,e.eyeOffset),this.horizontalOrigin=y(this._horizontalOrigin,e.horizontalOrigin),this.verticalOrigin=y(this._verticalOrigin,e.verticalOrigin),this.heightReference=y(this._heightReference,e.heightReference),this.color=y(this._color,e.color),this.rotation=y(this._rotation,e.rotation),this.alignedAxis=y(this._alignedAxis,e.alignedAxis),this.sizeInMeters=y(this._sizeInMeters,e.sizeInMeters),this.width=y(this._width,e.width),this.height=y(this._height,e.height),this.scaleByDistance=y(this._scaleByDistance,e.scaleByDistance),this.translucencyByDistance=y(this._translucencyByDistance,e.translucencyByDistance),this.pixelOffsetScaleByDistance=y(this._pixelOffsetScaleByDistance,e.pixelOffsetScaleByDistance),this.imageSubRegion=y(this._imageSubRegion,e.imageSubRegion),this.distanceDisplayCondition=y(this._distanceDisplayCondition,e.distanceDisplayCondition),this.disableDepthTestDistance=y(this._disableDepthTestDistance,e.disableDepthTestDistance),this.splitDirection=y(this.splitDirection,e.splitDirection)};var Ac=JS;function L0(){this._array=[],this._hash={}}Object.defineProperties(L0.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});L0.prototype.contains=function(e){return l(this._hash[e])};L0.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};L0.prototype.get=function(e){return this._hash[e]};L0.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};L0.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var wt=L0;var e5=Hr(g1(),1);var at={};at.EPSILON1=.1;at.EPSILON2=.01;at.EPSILON3=.001;at.EPSILON4=1e-4;at.EPSILON5=1e-5;at.EPSILON6=1e-6;at.EPSILON7=1e-7;at.EPSILON8=1e-8;at.EPSILON9=1e-9;at.EPSILON10=1e-10;at.EPSILON11=1e-11;at.EPSILON12=1e-12;at.EPSILON13=1e-13;at.EPSILON14=1e-14;at.EPSILON15=1e-15;at.EPSILON16=1e-16;at.EPSILON17=1e-17;at.EPSILON18=1e-18;at.EPSILON19=1e-19;at.EPSILON20=1e-20;at.EPSILON21=1e-21;at.GRAVITATIONALPARAMETER=3986004418e5;at.SOLAR_RADIUS=6955e5;at.LUNAR_RADIUS=1737400;at.SIXTY_FOUR_KILOBYTES=64*1024;at.FOUR_GIGABYTES=4*1024*1024*1024;at.sign=y(Math.sign,function(t){return t=+t,t===0||t!==t?t:t>0?1:-1});at.signNotZero=function(e){return e<0?-1:1};at.toSNorm=function(e,t){return t=y(t,255),Math.round((at.clamp(e,-1,1)*.5+.5)*t)};at.fromSNorm=function(e,t){return t=y(t,255),at.clamp(e,0,t)/t*2-1};at.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:at.clamp((e-t)/n,0,1)};at.sinh=y(Math.sinh,function(t){return(Math.exp(t)-Math.exp(-t))/2});at.cosh=y(Math.cosh,function(t){return(Math.exp(t)+Math.exp(-t))/2});at.lerp=function(e,t,n){return(1-n)*e+n*t};at.PI=Math.PI;at.ONE_OVER_PI=1/Math.PI;at.PI_OVER_TWO=Math.PI/2;at.PI_OVER_THREE=Math.PI/3;at.PI_OVER_FOUR=Math.PI/4;at.PI_OVER_SIX=Math.PI/6;at.THREE_PI_OVER_TWO=3*Math.PI/2;at.TWO_PI=2*Math.PI;at.ONE_OVER_TWO_PI=1/(2*Math.PI);at.RADIANS_PER_DEGREE=Math.PI/180;at.DEGREES_PER_RADIAN=180/Math.PI;at.RADIANS_PER_ARCSECOND=at.RADIANS_PER_DEGREE/3600;at.toRadians=function(e){return e*at.RADIANS_PER_DEGREE};at.toDegrees=function(e){return e*at.DEGREES_PER_RADIAN};at.convertLongitudeRange=function(e){let t=at.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};at.clampToLatitudeRange=function(e){return at.clamp(e,-1*at.PI_OVER_TWO,at.PI_OVER_TWO)};at.negativePiToPi=function(e){return e>=-at.PI&&e<=at.PI?e:at.zeroToTwoPi(e+at.PI)-at.PI};at.zeroToTwoPi=function(e){if(e>=0&&e<=at.TWO_PI)return e;let t=at.mod(e,at.TWO_PI);return Math.abs(t)<at.EPSILON14&&Math.abs(e)>at.EPSILON14?at.TWO_PI:t};at.mod=function(e,t){return at.sign(e)===at.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};at.equalsEpsilon=function(e,t,n,i){n=y(n,0),i=y(i,n);let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};at.lessThan=function(e,t,n){return e-t<-n};at.lessThanOrEquals=function(e,t,n){return e-t<n};at.greaterThan=function(e,t,n){return e-t>n};at.greaterThanOrEquals=function(e,t,n){return e-t>-n};var y1=[1];at.factorial=function(e){let t=y1.length;if(e>=t){let n=y1[t-1];for(let i=t;i<=e;i++){let o=n*i;y1.push(o),n=o}}return y1[e]};at.incrementWrap=function(e,t,n){return n=y(n,0),++e,e>t&&(e=n),e};at.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};at.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};at.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};at.clamp=function(e,t,n){return e<t?t:e>n?n:e};var hZ=new e5.default;at.setRandomNumberSeed=function(e){hZ=new e5.default(e)};at.nextRandomNumber=function(){return hZ.random()};at.randomBetween=function(e,t){return at.nextRandomNumber()*(t-e)+e};at.acosClamped=function(e){return Math.acos(at.clamp(e,-1,1))};at.asinClamped=function(e){return Math.asin(at.clamp(e,-1,1))};at.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};at.logBase=function(e,t){return Math.log(e)/Math.log(t)};at.cbrt=y(Math.cbrt,function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n});at.log2=y(Math.log2,function(t){return Math.log(t)*Math.LOG2E});at.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};at.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};at.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=at.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?at.PI_OVER_TWO-i:i,i=e<0?at.PI-i:i,i=t<0?-i:i,i};var P=at;function Bt(e,t){this.x=y(e,0),this.y=y(t,0)}Bt.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Bt(e,t)};Bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Bt(e.x,e.y)};Bt.fromCartesian3=Bt.clone;Bt.fromCartesian4=Bt.clone;Bt.packedLength=2;Bt.pack=function(e,t,n){return n=y(n,0),t[n++]=e.x,t[n]=e.y,t};Bt.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Bt),n.x=e[t++],n.y=e[t],n};Bt.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Bt.pack(e[o],t,o*2);return t};Bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Bt.unpack(e,i,t[o])}return t};Bt.fromArray=Bt.unpack;Bt.maximumComponent=function(e){return Math.max(e.x,e.y)};Bt.minimumComponent=function(e){return Math.min(e.x,e.y)};Bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Bt.clamp=function(e,t,n,i){let o=P.clamp(e.x,t.x,n.x),r=P.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Bt.magnitude=function(e){return Math.sqrt(Bt.magnitudeSquared(e))};var x1=new Bt;Bt.distance=function(e,t){return Bt.subtract(e,t,x1),Bt.magnitude(x1)};Bt.distanceSquared=function(e,t){return Bt.subtract(e,t,x1),Bt.magnitudeSquared(x1)};Bt.normalize=function(e,t){let n=Bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Bt.dot=function(e,t){return e.x*t.x+e.y*t.y};Bt.cross=function(e,t){return e.x*t.y-e.y*t.x};Bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var mZ=new Bt;Bt.lerp=function(e,t,n,i){return Bt.multiplyByScalar(t,n,mZ),i=Bt.multiplyByScalar(e,1-n,i),Bt.add(mZ,i,i)};var pZ=new Bt,_Z=new Bt;Bt.angleBetween=function(e,t){return Bt.normalize(e,pZ),Bt.normalize(t,_Z),P.acosClamped(Bt.dot(pZ,_Z))};var DEe=new Bt;Bt.mostOrthogonalAxis=function(e,t){let n=Bt.normalize(e,DEe);return Bt.abs(n,n),n.x<=n.y?t=Bt.clone(Bt.UNIT_X,t):t=Bt.clone(Bt.UNIT_Y,t),t};Bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&P.equalsEpsilon(e.x,t.x,n,i)&&P.equalsEpsilon(e.y,t.y,n,i)};Bt.ZERO=Object.freeze(new Bt(0,0));Bt.ONE=Object.freeze(new Bt(1,1));Bt.UNIT_X=Object.freeze(new Bt(1,0));Bt.UNIT_Y=Object.freeze(new Bt(0,1));Bt.prototype.clone=function(e){return Bt.clone(this,e)};Bt.prototype.equals=function(e){return Bt.equals(this,e)};Bt.prototype.equalsEpsilon=function(e,t,n){return Bt.equalsEpsilon(this,e,t,n)};Bt.prototype.toString=function(){return`(${this.x}, ${this.y})`};var U=Bt;function Ze(e,t,n){this.x=y(e,0),this.y=y(t,0),this.z=y(n,0)}Ze.fromSpherical=function(e,t){l(t)||(t=new Ze);let n=e.clock,i=e.cone,o=y(e.magnitude,1),r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};Ze.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new Ze(e,t,n)};Ze.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new Ze(e.x,e.y,e.z)};Ze.fromCartesian4=Ze.clone;Ze.packedLength=3;Ze.pack=function(e,t,n){return n=y(n,0),t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};Ze.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Ze),n.x=e[t++],n.y=e[t++],n.z=e[t],n};Ze.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Ze.pack(e[o],t,o*3);return t};Ze.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=Ze.unpack(e,i,t[o])}return t};Ze.fromArray=Ze.unpack;Ze.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};Ze.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};Ze.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};Ze.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};Ze.clamp=function(e,t,n,i){let o=P.clamp(e.x,t.x,n.x),r=P.clamp(e.y,t.y,n.y),s=P.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};Ze.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};Ze.magnitude=function(e){return Math.sqrt(Ze.magnitudeSquared(e))};var T1=new Ze;Ze.distance=function(e,t){return Ze.subtract(e,t,T1),Ze.magnitude(T1)};Ze.distanceSquared=function(e,t){return Ze.subtract(e,t,T1),Ze.magnitudeSquared(T1)};Ze.normalize=function(e,t){let n=Ze.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};Ze.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};Ze.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};Ze.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};Ze.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};Ze.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};Ze.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};Ze.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};Ze.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};Ze.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var gZ=new Ze;Ze.lerp=function(e,t,n,i){return Ze.multiplyByScalar(t,n,gZ),i=Ze.multiplyByScalar(e,1-n,i),Ze.add(gZ,i,i)};var b1=new Ze,t5=new Ze;Ze.angleBetween=function(e,t){Ze.normalize(e,b1),Ze.normalize(t,t5);let n=Ze.dot(b1,t5),i=Ze.magnitude(Ze.cross(b1,t5,b1));return Math.atan2(i,n)};var IEe=new Ze;Ze.mostOrthogonalAxis=function(e,t){let n=Ze.normalize(e,IEe);return Ze.abs(n,n),n.x<=n.y?n.x<=n.z?t=Ze.clone(Ze.UNIT_X,t):t=Ze.clone(Ze.UNIT_Z,t):n.y<=n.z?t=Ze.clone(Ze.UNIT_Y,t):t=Ze.clone(Ze.UNIT_Z,t),t};Ze.projectVector=function(e,t,n){let i=Ze.dot(e,t)/Ze.dot(t,t);return Ze.multiplyByScalar(t,i,n)};Ze.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};Ze.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};Ze.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&P.equalsEpsilon(e.x,t.x,n,i)&&P.equalsEpsilon(e.y,t.y,n,i)&&P.equalsEpsilon(e.z,t.z,n,i)};Ze.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};Ze.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};Ze.fromDegrees=function(e,t,n,i,o){return e=P.toRadians(e),t=P.toRadians(t),Ze.fromRadians(e,t,n,i,o)};var Xu=new Ze,mT=new Ze;Ze._ellipsoidRadiiSquared=new Ze(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);Ze.fromRadians=function(e,t,n,i,o){n=y(n,0);let r=l(i)?i.radiiSquared:Ze._ellipsoidRadiiSquared,s=Math.cos(t);Xu.x=s*Math.cos(e),Xu.y=s*Math.sin(e),Xu.z=Math.sin(t),Xu=Ze.normalize(Xu,Xu),Ze.multiplyComponents(r,Xu,mT);let a=Math.sqrt(Ze.dot(Xu,mT));return mT=Ze.divideByScalar(mT,a,mT),Xu=Ze.multiplyByScalar(Xu,n,Xu),l(o)||(o=new Ze),Ze.add(mT,Xu,o)};Ze.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=Ze.fromDegrees(r,s,0,t,n[a])}return n};Ze.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=Ze.fromRadians(r,s,0,t,n[a])}return n};Ze.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=Ze.fromDegrees(r,s,a,t,n[c])}return n};Ze.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=Ze.fromRadians(r,s,a,t,n[c])}return n};Ze.ZERO=Object.freeze(new Ze(0,0,0));Ze.ONE=Object.freeze(new Ze(1,1,1));Ze.UNIT_X=Object.freeze(new Ze(1,0,0));Ze.UNIT_Y=Object.freeze(new Ze(0,1,0));Ze.UNIT_Z=Object.freeze(new Ze(0,0,1));Ze.prototype.clone=function(e){return Ze.clone(this,e)};Ze.prototype.equals=function(e){return Ze.equals(this,e)};Ze.prototype.equalsEpsilon=function(e,t,n){return Ze.equalsEpsilon(this,e,t,n)};Ze.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=Ze;var PEe=new d,OEe=new d;function REe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,p=s*s*u*u,g=a*a*f*f,m=h+p+g,x=Math.sqrt(1/m),b=d.multiplyByScalar(e,x,PEe);if(m<i)return isFinite(x)?d.clone(b,o):void 0;let T=n.x,C=n.y,A=n.z,E=OEe;E.x=b.x*T*2,E.y=b.y*C*2,E.z=b.z*A*2;let v=(1-x)*d.magnitude(e)/(.5*d.magnitude(E)),D=0,R,O,M,N,_,S,w,I,L,B,H;do{v-=D,M=1/(1+v*T),N=1/(1+v*C),_=1/(1+v*A),S=M*M,w=N*N,I=_*_,L=S*M,B=w*N,H=I*_,R=h*S+p*w+g*I-1,O=h*L*T+p*B*C+g*H*A;let V=-2*O;D=R/V}while(Math.abs(R)>P.EPSILON12);return l(o)?(o.x=r*M,o.y=s*N,o.z=a*_,o):new d(r*M,s*N,a*_)}var pT=REe;function Lo(e,t,n){this.longitude=y(e,0),this.latitude=y(t,0),this.height=y(n,0)}Lo.fromRadians=function(e,t,n,i){return n=y(n,0),l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Lo(e,t,n)};Lo.fromDegrees=function(e,t,n,i){return e=P.toRadians(e),t=P.toRadians(t),Lo.fromRadians(e,t,n,i)};var MEe=new d,LEe=new d,NEe=new d;Lo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Lo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Lo._ellipsoidCenterToleranceSquared=P.EPSILON1;Lo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Lo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Lo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Lo._ellipsoidCenterToleranceSquared,s=pT(e,i,o,r,LEe);if(!l(s))return;let a=d.multiplyComponents(s,o,MEe);a=d.normalize(a,a);let c=d.subtract(e,s,NEe),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=P.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Lo(u,f,h)};Lo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Lo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Lo(e.longitude,e.latitude,e.height)};Lo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Lo.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Lo.ZERO=Object.freeze(new Lo(0,0,0));Lo.prototype.clone=function(e){return Lo.clone(this,e)};Lo.prototype.equals=function(e){return Lo.equals(this,e)};Lo.prototype.equalsEpsilon=function(e,t){return Lo.equalsEpsilon(this,e,t)};Lo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var fe=Lo;function xZ(e,t,n,i){t=y(t,0),n=y(n,0),i=y(i,0),e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=P.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function mi(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,xZ(this,e,t,n)}Object.defineProperties(mi.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});mi.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new mi(n.x,n.y,n.z)};mi.fromCartesian3=function(e,t){return l(t)||(t=new mi),l(e)&&xZ(t,e.x,e.y,e.z),t};mi.WGS84=Object.freeze(new mi(6378137,6378137,6356752314245179e-9));mi.UNIT_SPHERE=Object.freeze(new mi(1,1,1));mi.MOON=Object.freeze(new mi(P.LUNAR_RADIUS,P.LUNAR_RADIUS,P.LUNAR_RADIUS));mi._default=mi.WGS84;Object.defineProperties(mi,{default:{get:function(){return mi._default},set:function(e){mi._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,fe._ellipsoidOneOverRadii=e.oneOverRadii,fe._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,fe._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});mi.prototype.clone=function(e){return mi.clone(this,e)};mi.packedLength=d.packedLength;mi.pack=function(e,t,n){return n=y(n,0),d.pack(e._radii,t,n),t};mi.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t);return mi.fromCartesian3(i,n)};mi.prototype.geocentricSurfaceNormal=d.normalize;mi.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};mi.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,P.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var FEe=new d,BEe=new d;mi.prototype.cartographicToCartesian=function(e,t){let n=FEe,i=BEe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};mi.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var kEe=new d,VEe=new d,UEe=new d;mi.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,VEe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,kEe),o=d.subtract(e,n,UEe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=P.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new fe(r,s,a)};mi.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};mi.prototype.scaleToGeodeticSurface=function(e,t){return pT(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};mi.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};mi.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};mi.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};mi.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};mi.prototype.toString=function(){return this._radii.toString()};mi.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=y(t,0);let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var zEe=new d;mi.prototype.getLocalCurvature=function(e,t){l(t)||(t=new U);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,zEe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return U.fromElements(1/i,1/r,t)};var HEe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],GEe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function yZ(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*HEe[s];r+=GEe[s]*(n(i+a)+n(i-a))}return r*=o,r}mi.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=P.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return yZ(i,o,function(f){let h=Math.cos(f),p=Math.sin(f);return Math.cos(f)*yZ(t,n,function(g){let m=Math.cos(g),x=Math.sin(g);return Math.sqrt(u*p*p+c*(a*m*m+s*x*x)*h*h)})})};var ee=mi;function C1(e){this._ellipsoid=y(e,ee.default),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(C1.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});C1.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};C1.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new fe(i,o,r)};var Ri=C1;var WEe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},jt=Object.freeze(WEe);function bt(e,t,n,i){this.x=y(e,0),this.y=y(t,0),this.z=y(n,0),this.w=y(i,0)}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=y(n,0),t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=P.clamp(e.x,t.x,n.x),r=P.clamp(e.y,t.y,n.y),s=P.clamp(e.z,t.z,n.z),a=P.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var A1=new bt;bt.distance=function(e,t){return bt.subtract(e,t,A1),bt.magnitude(A1)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,A1),bt.magnitudeSquared(A1)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var bZ=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,bZ),i=bt.multiplyByScalar(e,1-n,i),bt.add(bZ,i,i)};var jEe=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,jEe);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&P.equalsEpsilon(e.x,t.x,n,i)&&P.equalsEpsilon(e.y,t.y,n,i)&&P.equalsEpsilon(e.z,t.z,n,i)&&P.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var n5=new Float32Array(1),za=new Uint8Array(n5.buffer),qEe=new Uint32Array([287454020]),YEe=new Uint8Array(qEe.buffer),TZ=YEe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),n5[0]=e,TZ?(t.x=za[0],t.y=za[1],t.z=za[2],t.w=za[3]):(t.x=za[3],t.y=za[2],t.z=za[1],t.w=za[0]),t};bt.unpackFloat=function(e){return TZ?(za[0]=e.x,za[1]=e.y,za[2]=e.z,za[3]=e.w):(za[0]=e.w,za[1]=e.z,za[2]=e.y,za[3]=e.x),n5[0]};var oe=bt;function XEe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var No=XEe;function KEe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var N0=KEe;function $Ee(e){return e%4===0&&e%100!==0||e%400===0}var Sh=$Ee;var CZ=[31,28,31,30,31,30,31,31,30,31,30,31];function ZEe(e,t,n,i,o,r,s,a){e=y(e,1),t=y(t,1),n=y(n,1),i=y(i,0),o=y(o,0),r=y(r,0),s=y(s,0),a=y(a,!1),this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function x(){bo.typeOf.number.greaterThanOrEquals("Year",e,1),bo.typeOf.number.lessThanOrEquals("Year",e,9999),bo.typeOf.number.greaterThanOrEquals("Month",t,1),bo.typeOf.number.lessThanOrEquals("Month",t,12),bo.typeOf.number.greaterThanOrEquals("Day",n,1),bo.typeOf.number.lessThanOrEquals("Day",n,31),bo.typeOf.number.greaterThanOrEquals("Hour",i,0),bo.typeOf.number.lessThanOrEquals("Hour",i,23),bo.typeOf.number.greaterThanOrEquals("Minute",o,0),bo.typeOf.number.lessThanOrEquals("Minute",o,59),bo.typeOf.bool("IsLeapSecond",a),bo.typeOf.number.greaterThanOrEquals("Second",r,0),bo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),bo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),bo.typeOf.number.lessThan("Millisecond",s,1e3)}function b(){let T=t===2&&Sh(e)?CZ[t-1]+1:CZ[t-1];if(n>T)throw new de("Month and Day represents invalid date")}}var z_=ZEe;function QEe(e,t){this.julianDate=e,this.offset=t}var $i=QEe;var JEe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},Xn=Object.freeze(JEe);var eSe={UTC:0,TAI:1},qn=Object.freeze(eSe);var EZ=new z_,i5=[31,28,31,30,31,30,31,31,30,31,30,31],o5=29;function r5(e,t){return Ot.compare(e.julianDate,t.julianDate)}var _T=new $i;function S1(e){_T.julianDate=e;let t=Ot.leapSeconds,n=No(t,_T,r5);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Ot.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Ot.addSeconds(e,i,e)}function AZ(e,t){_T.julianDate=e;let n=Ot.leapSeconds,i=No(n,_T,r5);if(i<0&&(i=~i),i===0)return Ot.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Ot.addSeconds(e,-n[i-1].offset,t);let o=Ot.secondsDifference(n[i].julianDate,e);if(o===0)return Ot.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Ot.addSeconds(e,-n[--i].offset,t)}function H_(e,t,n){let i=t/Xn.SECONDS_PER_DAY|0;return e+=i,t-=Xn.SECONDS_PER_DAY*i,t<0&&(e--,t+=Xn.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function s5(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*Xn.SECONDS_PER_HOUR+o*Xn.SECONDS_PER_MINUTE+s*Xn.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var tSe=/^(\d{4})$/,nSe=/^(\d{4})-(\d{2})$/,iSe=/^(\d{4})-?(\d{3})$/,oSe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,rSe=/^(\d{4})-?(\d{2})-?(\d{2})$/,a5=/([Z+\-])?(\d{2})?:?(\d{2})?$/,sSe=/^(\d{2})(\.\d+)?/.source+a5.source,aSe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+a5.source,cSe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+a5.source;function Ot(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=y(e,0),t=y(t,0),n=y(n,qn.UTC);let i=e|0;t=t+(e-i)*Xn.SECONDS_PER_DAY,H_(i,t,this),n===qn.UTC&&S1(this)}Ot.fromGregorianDate=function(e,t){let n=s5(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(H_(n[0],n[1],t),S1(t),t):new Ot(n[0],n[1],qn.UTC)};Ot.fromDate=function(e,t){let n=s5(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(H_(n[0],n[1],t),S1(t),t):new Ot(n[0],n[1],qn.UTC)};Ot.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],p,g;if(n=f.match(rSe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(nSe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(tSe),n!==null)i=+n[1];else{let T;if(n=f.match(iSe),n!==null)i=+n[1],T=+n[2],g=Sh(i);else if(n=f.match(oSe),n!==null){i=+n[1];let C=+n[2],A=+n[3]||0,E=new Date(Date.UTC(i,0,4));T=C*7+A-E.getUTCDay()-3}p=new Date(Date.UTC(i,0,1)),p.setUTCDate(T),o=p.getUTCMonth()+1,r=p.getUTCDate()}g=Sh(i);let m;if(l(h)){n=h.match(cSe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(aSe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(sSe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let T=n[m],C=+n[m+1],A=+(n[m+2]||0);switch(T){case"+":s=s-C,a=a-A;break;case"-":s=s+C,a=a+A;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let x=c===60;for(x&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(p=g&&o===2?o5:i5[o-1];r>p;)r-=p,o++,o>12&&(o-=12,i++),p=g&&o===2?o5:i5[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),p=g&&o===2?o5:i5[o-1],r+=p;let b=s5(i,o,r,s,a,c,u);return l(t)?(H_(b[0],b[1],t),S1(t)):t=new Ot(b[0],b[1],qn.UTC),x&&Ot.addSeconds(t,1,t),t};Ot.now=function(e){return Ot.fromDate(new Date,e)};var E1=new Ot(0,0,qn.TAI);Ot.toGregorianDate=function(e,t){let n=!1,i=AZ(e,E1);l(i)||(Ot.addSeconds(e,-1,E1),i=AZ(E1,E1),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,p=100*(a-49)+c+s|0,g=r/Xn.SECONDS_PER_HOUR|0,m=r-g*Xn.SECONDS_PER_HOUR,x=m/Xn.SECONDS_PER_MINUTE|0;m=m-x*Xn.SECONDS_PER_MINUTE;let b=m|0,T=(m-b)/Xn.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(b+=1),l(t)?(t.year=p,t.month=h,t.day=f,t.hour=g,t.minute=x,t.second=b,t.millisecond=T,t.isLeapSecond=n,t):new z_(p,h,f,g,x,b,T,n)};Ot.toDate=function(e){let t=Ot.toGregorianDate(e,EZ),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Ot.toIso8601=function(e,t){let n=Ot.toGregorianDate(e,EZ),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Ot.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Ot(e.dayNumber,e.secondsOfDay,qn.TAI)};Ot.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Ot.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(Ot.secondsDifference(e,t))<=n};Ot.totalDays=function(e){return e.dayNumber+e.secondsOfDay/Xn.SECONDS_PER_DAY};Ot.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*Xn.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Ot.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/Xn.SECONDS_PER_DAY;return n+i};Ot.computeTaiMinusUtc=function(e){_T.julianDate=e;let t=Ot.leapSeconds,n=No(t,_T,r5);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Ot.addSeconds=function(e,t,n){return H_(e.dayNumber,e.secondsOfDay+t,n)};Ot.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*Xn.SECONDS_PER_MINUTE;return H_(e.dayNumber,i,n)};Ot.addHours=function(e,t,n){let i=e.secondsOfDay+t*Xn.SECONDS_PER_HOUR;return H_(e.dayNumber,i,n)};Ot.addDays=function(e,t,n){let i=e.dayNumber+t;return H_(i,e.secondsOfDay,n)};Ot.lessThan=function(e,t){return Ot.compare(e,t)<0};Ot.lessThanOrEquals=function(e,t){return Ot.compare(e,t)<=0};Ot.greaterThan=function(e,t){return Ot.compare(e,t)>0};Ot.greaterThanOrEquals=function(e,t){return Ot.compare(e,t)>=0};Ot.prototype.clone=function(e){return Ot.clone(this,e)};Ot.prototype.equals=function(e){return Ot.equals(this,e)};Ot.prototype.equalsEpsilon=function(e,t){return Ot.equalsEpsilon(this,e,t)};Ot.prototype.toString=function(){return Ot.toIso8601(this)};Ot.leapSeconds=[new $i(new Ot(2441317,43210,qn.TAI),10),new $i(new Ot(2441499,43211,qn.TAI),11),new $i(new Ot(2441683,43212,qn.TAI),12),new $i(new Ot(2442048,43213,qn.TAI),13),new $i(new Ot(2442413,43214,qn.TAI),14),new $i(new Ot(2442778,43215,qn.TAI),15),new $i(new Ot(2443144,43216,qn.TAI),16),new $i(new Ot(2443509,43217,qn.TAI),17),new $i(new Ot(2443874,43218,qn.TAI),18),new $i(new Ot(2444239,43219,qn.TAI),19),new $i(new Ot(2444786,43220,qn.TAI),20),new $i(new Ot(2445151,43221,qn.TAI),21),new $i(new Ot(2445516,43222,qn.TAI),22),new $i(new Ot(2446247,43223,qn.TAI),23),new $i(new Ot(2447161,43224,qn.TAI),24),new $i(new Ot(2447892,43225,qn.TAI),25),new $i(new Ot(2448257,43226,qn.TAI),26),new $i(new Ot(2448804,43227,qn.TAI),27),new $i(new Ot(2449169,43228,qn.TAI),28),new $i(new Ot(2449534,43229,qn.TAI),29),new $i(new Ot(2450083,43230,qn.TAI),30),new $i(new Ot(2450630,43231,qn.TAI),31),new $i(new Ot(2451179,43232,qn.TAI),32),new $i(new Ot(2453736,43233,qn.TAI),33),new $i(new Ot(2454832,43234,qn.TAI),34),new $i(new Ot(2456109,43235,qn.TAI),35),new $i(new Ot(2457204,43236,qn.TAI),36),new $i(new Ot(2457754,43237,qn.TAI),37)];var $=Ot;var GZ=Hr($l(),1);function lSe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var I1=lSe;function OZ(e,t){if(e===null||typeof e!="object")return e;t=y(t,!1);let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=OZ(o,t)),n[i]=o}return n}var He=OZ;function RZ(e,t,n){n=y(n,!1);let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=RZ(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var At=RZ;function uSe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var Zl=uSe;var MZ=Hr($l(),1);function c5(e,t){let n;return typeof document<"u"&&(n=document),c5._implementation(e,t,n)}c5._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=y(n.baseURI,n.location.href)}let i=new MZ.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var cp=c5;var LZ=Hr($l(),1);function fSe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new LZ.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var P1=fSe;var NZ=Hr($l(),1);function dSe(e){let t=new NZ.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var xT=dSe;var FZ={};function hSe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=FZ[t];l(i)||(i={},FZ[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var vh=hSe;var mSe=/^blob:/i;function pSe(e){return mSe.test(e)}var bT=pSe;var wh;function _Se(e){l(wh)||(wh=document.createElement("a")),wh.href=window.location.href;let t=wh.host,n=wh.protocol;return wh.href=e,wh.href=wh.href,n!==wh.protocol||t!==wh.host}var F0=_Se;var gSe=/^data:/i;function ySe(e){return gSe.test(e)}var G_=ySe;function xSe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var TT=xSe;function bSe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var CT=bSe;function TSe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Ku=TSe;var CSe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},ei=Object.freeze(CSe);var ASe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Ts=Object.freeze(ASe);function O1(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.throttleByServer,!1),n=y(e.throttle,!1);this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=y(e.priority,0),this.throttle=n,this.throttleByServer=t,this.type=y(e.type,Ts.OTHER),this.serverKey=e.serverKey,this.state=ei.UNISSUED,this.deferred=void 0,this.cancelled=!1}O1.prototype.cancel=function(){this.cancelled=!0};O1.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=ei.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new O1(this)};var rr=O1;function ESe(e){let t={};if(!e)return t;let n=e.split(`\r
`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var R1=ESe;function BZ(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=R1(this.responseHeaders))}BZ.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var lp=BZ;var L1=Hr($l(),1);function B0(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(B0.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function l5(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}B0.prototype.reserve=function(e){e=y(e,this._length),this._array.length=e};B0.prototype.heapify=function(e){e=y(e,0);let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(l5(i,o,e),e=o):r=!1}};B0.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};B0.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)l5(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};B0.prototype.pop=function(e){if(e=y(e,0),this._length===0)return;let t=this._array,n=t[e];return l5(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var M1=B0;function SSe(e,t){return e.priority-t.priority}var eo={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},AT=20,Ha=new M1({comparator:SSe});Ha.maximumLength=AT;Ha.reserve(AT);var Dh=[],up={},vSe=typeof document<"u"?new L1.default(document.location.href):new L1.default,N1=new me;function jo(){}jo.maximumRequests=50;jo.maximumRequestsPerServer=18;jo.requestsByServer={};jo.throttleRequests=!0;jo.debugShowStatistics=!1;jo.requestCompletedEvent=N1;Object.defineProperties(jo,{statistics:{get:function(){return eo}},priorityHeapLength:{get:function(){return AT},set:function(e){if(e<AT)for(;Ha.length>e;){let t=Ha.pop();k0(t)}AT=e,Ha.maximumLength=e,Ha.reserve(e)}}});function kZ(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}jo.serverHasOpenSlots=function(e,t){t=y(t,1);let n=y(jo.requestsByServer[e],jo.maximumRequestsPerServer);return up[e]+t<=n};jo.heapHasOpenSlots=function(e){return Ha.length+e<=AT};function VZ(e){return e.state===ei.UNISSUED&&(e.state=ei.ISSUED,e.deferred=Zl()),e.deferred.promise}function wSe(e){return function(t){if(e.state===ei.CANCELLED)return;let n=e.deferred;--eo.numberOfActiveRequests,--up[e.serverKey],N1.raiseEvent(),e.state=ei.RECEIVED,e.deferred=void 0,n.resolve(t)}}function DSe(e){return function(t){e.state!==ei.CANCELLED&&(++eo.numberOfFailedRequests,--eo.numberOfActiveRequests,--up[e.serverKey],N1.raiseEvent(t),e.state=ei.FAILED,e.deferred.reject(t))}}function UZ(e){let t=VZ(e);return e.state=ei.ACTIVE,Dh.push(e),++eo.numberOfActiveRequests,++eo.numberOfActiveRequestsEver,++up[e.serverKey],e.requestFunction().then(wSe(e)).catch(DSe(e)),t}function k0(e){let t=e.state===ei.ACTIVE;if(e.state=ei.CANCELLED,++eo.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--eo.numberOfActiveRequests,--up[e.serverKey],++eo.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}jo.update=function(){let e,t,n=0,i=Dh.length;for(e=0;e<i;++e){if(t=Dh[e],t.cancelled&&k0(t),t.state!==ei.ACTIVE){++n;continue}n>0&&(Dh[e-n]=t)}Dh.length-=n;let o=Ha.internalArray,r=Ha.length;for(e=0;e<r;++e)kZ(o[e]);Ha.resort();let s=Math.max(jo.maximumRequests-Dh.length,0),a=0;for(;a<s&&Ha.length>0;){if(t=Ha.pop(),t.cancelled){k0(t);continue}if(t.throttleByServer&&!jo.serverHasOpenSlots(t.serverKey)){k0(t);continue}UZ(t),++a}ISe()};jo.getServerKey=function(e){let t=new L1.default(e);t.scheme()===""&&(t=t.absoluteTo(vSe),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=up[n];return l(i)||(up[n]=0),n};jo.request=function(e){if(G_(e.url)||bT(e.url))return N1.raiseEvent(),e.state=ei.RECEIVED,e.requestFunction();if(++eo.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=jo.getServerKey(e.url)),jo.throttleRequests&&e.throttleByServer&&!jo.serverHasOpenSlots(e.serverKey))return;if(!jo.throttleRequests||!e.throttle)return UZ(e);if(Dh.length>=jo.maximumRequests)return;kZ(e);let t=Ha.insert(e);if(l(t)){if(t===e)return;k0(t)}return VZ(e)};function ISe(){jo.debugShowStatistics&&(eo.numberOfActiveRequests===0&&eo.lastNumberOfActiveRequests>0&&(eo.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${eo.numberOfAttemptedRequests}`),eo.numberOfAttemptedRequests=0),eo.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${eo.numberOfCancelledRequests}`),eo.numberOfCancelledRequests=0),eo.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${eo.numberOfCancelledActiveRequests}`),eo.numberOfCancelledActiveRequests=0),eo.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${eo.numberOfFailedRequests}`),eo.numberOfFailedRequests=0)),eo.lastNumberOfActiveRequests=eo.numberOfActiveRequests)}jo.clearForSpecs=function(){for(;Ha.length>0;){let t=Ha.pop();k0(t)}let e=Dh.length;for(let t=0;t<e;++t)k0(Dh[t]);Dh.length=0,up={},eo.numberOfAttemptedRequests=0,eo.numberOfActiveRequests=0,eo.numberOfCancelledRequests=0,eo.numberOfCancelledActiveRequests=0,eo.numberOfFailedRequests=0,eo.numberOfActiveRequestsEver=0,eo.lastNumberOfActiveRequests=0};jo.numberOfActiveRequestsByServer=function(e){return up[e]};jo.requestHeap=Ha;var Ec=jo;function ev(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(ev.prototype=Object.create(Error.prototype),ev.prototype.constructor=ev);ev.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=`
${this.stack.toString()}`),e};var se=ev;var zZ=Hr($l(),1);var tv={},ET={};tv.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(ET[n])||(ET[n]=!0)};tv.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(ET[n])&&delete ET[n]};function PSe(e){let t=new zZ.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}tv.contains=function(e){let t=PSe(e);return!!(l(t)&&l(ET[t]))};tv.clear=function(){ET={}};var nv=tv;var WZ=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function It(e){e=y(e,y.EMPTY_OBJECT),typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Ih(e.templateValues,{}),this._queryParameters=Ih(e.queryParameters,{}),this.headers=Ih(e.headers,{}),this.request=y(e.request,new rr),this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=y(e.retryAttempts,0),this._retryCount=0,y(e.parseUrl,!0)?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Ih(e,t){return l(e)?He(e):t}It.createIfNeeded=function(e){return e instanceof It?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new It({url:e})};var ST;It.supportsImageBitmapOptions=function(){return l(ST)?ST:typeof createImageBitmap!="function"?(ST=Promise.resolve(!1),ST):(ST=It.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=vh(t[0]),i=vh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),ST)};Object.defineProperties(It,{isBlobSupported:{get:function(){return WZ}}});Object.defineProperties(It.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return xT(this._url)}},isDataUri:{get:function(){return G_(this._url)}},isBlobUri:{get:function(){return bT(this._url)}},isCrossOriginUrl:{get:function(){return F0(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});It.prototype.toString=function(){return this.getUrlComponent(!0,!0)};It.prototype.parseUrl=function(e,t,n,i){let o=new GZ.default(e),r=OSe(o.query());this._queryParameters=t?B1(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(cp(i))),this._url=o.toString()};function OSe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Ku(e)}function B1(e,t,n){if(!n)return At(e,t);let i=He(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}It.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${RSe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function RSe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${CT(e)}`}It.prototype.setQueryParameters=function(e,t){t?this._queryParameters=B1(this._queryParameters,e,!1):this._queryParameters=B1(e,this._queryParameters,!1)};It.prototype.appendQueryParameters=function(e){this._queryParameters=B1(e,this._queryParameters,!0)};It.prototype.setTemplateValues=function(e,t){t?this._templateValues=At(this._templateValues,e):this._templateValues=At(e,this._templateValues)};It.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=y(e.preserveQueryParameters,!1);t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=At(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=At(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=At(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};It.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};It.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=He(this._queryParameters),e._templateValues=He(this._templateValues),e.headers=He(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new It({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};It.prototype.getBaseUri=function(e){return P1(this.getUrlComponent(e),e)};It.prototype.appendForwardSlash=function(){this._url=I1(this._url)};It.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};It.fetchArrayBuffer=function(e){return new It(e).fetchArrayBuffer()};It.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};It.fetchBlob=function(e){return new It(e).fetchBlob()};It.prototype.fetchImage=function(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.preferImageBitmap,!1),n=y(e.preferBlob,!1),i=y(e.flipY,!1),o=y(e.skipColorSpaceConversion,!1);if(f5(this.request),!WZ||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return u5({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return It.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return It.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new It({url:h}),u5({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function u5(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=Zl();return It._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Ec.request(r);if(l(s))return s.catch(function(a){return r.state!==ei.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=ei.UNISSUED,r.deferred=void 0,u5({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}It.fetchImage=function(e){return new It(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};It.prototype.fetchText=function(){return this.fetch({responseType:"text"})};It.fetchText=function(e){return new It(e).fetchText()};It.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};It.fetchJson=function(e){return new It(e).fetchJson()};It.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};It.fetchXML=function(e){return new It(e).fetchXML()};It.prototype.fetchJsonp=function(e){e=y(e,"callback"),f5(this.request);let t;do t=`loadJsonp${P.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return jZ(this,e,t)};function jZ(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=Zl();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},It._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Ec.request(o);if(l(s))return s.catch(function(a){return o.state!==ei.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=ei.UNISSUED,o.deferred=void 0,jZ(e,t,n)):Promise.reject(a)})})}It.fetchJsonp=function(e){return new It(e).fetchJsonp(e.callbackParameterName)};It.prototype._makeRequest=function(e){let t=this;f5(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=At(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=Zl(),h=It._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Ec.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==ei.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=ei.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function f5(e){if(e.state===ei.ISSUED||e.state===ei.ACTIVE)throw new se("The Resource is already being fetched.");e.state=ei.UNISSUED,e.deferred=void 0}var MSe=/^data:(.*?)(;base64)?,(.*)$/;function F1(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function HZ(e,t){let n=F1(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function LSe(e,t){t=y(t,"");let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return F1(i,o);case"arraybuffer":return HZ(i,o);case"blob":return r=HZ(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(F1(i,o),n);case"json":return JSON.parse(F1(i,o));default:}}It.prototype.fetch=function(e){return e=Ih(e,{}),e.method="GET",this._makeRequest(e)};It.fetch=function(e){return new It(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It.prototype.delete=function(e){return e=Ih(e,{}),e.method="DELETE",this._makeRequest(e)};It.delete=function(e){return new It(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};It.prototype.head=function(e){return e=Ih(e,{}),e.method="HEAD",this._makeRequest(e)};It.head=function(e){return new It(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It.prototype.options=function(e){return e=Ih(e,{}),e.method="OPTIONS",this._makeRequest(e)};It.options=function(e){return new It(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It.prototype.post=function(e,t){return bo.defined("data",e),t=Ih(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};It.post=function(e){return new It(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It.prototype.put=function(e,t){return bo.defined("data",e),t=Ih(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};It.put=function(e){return new It(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It.prototype.patch=function(e,t){return bo.defined("data",e),t=Ih(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};It.patch=function(e){return new It(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};It._Implementations={};It._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(nv.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};It._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;It.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){It._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=Zl(),h=It._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(p){if(!l(p)){n.reject(new se(`Successfully retrieved ${s} but it contained no content.`));return}return It.createImageBitmapFromBlob(p,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(p){n.resolve(p)})}).catch(function(a){n.reject(a)})};It.createImageBitmapFromBlob=function(e,t){return bo.defined("options",t),bo.typeOf.bool("options.flipY",t.flipY),bo.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),bo.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"none",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function NSe(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new lp(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new lp)})}var FSe=typeof XMLHttpRequest>"u";It._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=MSe.exec(e);if(a!==null){r.resolve(LSe(a,t));return}if(FSe){NSe(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(nv.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new lp(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(x){let b=x.split(": "),T=b.shift();m[T]=b.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(p){r.reject(p)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new se("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new lp)},c.send(i),c};It._Implementations.loadAndExecuteScript=function(e,t,n){return TT(e,t).catch(function(i){n.reject(i)})};It._DefaultImplementations={};It._DefaultImplementations.createImage=It._Implementations.createImage;It._DefaultImplementations.loadWithXhr=It._Implementations.loadWithXhr;It._DefaultImplementations.loadAndExecuteScript=It._Implementations.loadAndExecuteScript;It.DEFAULT=Object.freeze(new It({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var Ee=It;function ov(e){e=y(e,y.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=y(e.addNewLeapSeconds,!0),l(e.data)?qZ(this,e.data):qZ(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}ov.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=Ee.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new se(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new ov({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};ov.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new N0(0,0,0,0,0),t}});ov.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new N0(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=$.lessThanOrEquals(a,e),f=!l(c),h=f||$.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,XZ(this,n,this._samples,e,o,r,t),t}let s=No(n,e,$.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,XZ(this,n,this._samples,e,o,r,t),t};function BSe(e,t){return $.compare(e.julianDate,t)}function qZ(e,t){if(!l(t.columnNames))throw new se("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new se("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new se("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,p=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let x=u[g+n],b=u[g+c],T=x+Xn.MODIFIED_JULIAN_DATE_DIFFERENCE,C=new $(T,b,qn.TAI);if(f.push(C),p){if(b!==h&&l(h)){let A=$.leapSeconds,E=No(A,C,BSe);if(E<0){let v=new $i(C,b);A.splice(~E,0,v)}}h=b}}}function YZ(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function iv(e,t,n){return t+e*(n-t)}function XZ(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return YZ(e,n,o,a,s),s;if(i.equals(u))return YZ(e,n,r,a,s),s;let f=$.secondsDifference(i,c)/$.secondsDifference(u,c),h=o*a,p=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[p+e._ut1MinusUtcSecondsColumn],x=m-g;if(x>.5||x<-.5){let b=n[h+e._taiMinusUtcSecondsColumn],T=n[p+e._taiMinusUtcSecondsColumn];b!==T&&(u.equals(i)?g=m:m-=T-b)}return s.xPoleWander=iv(f,n[h+e._xPoleWanderRadiansColumn],n[p+e._xPoleWanderRadiansColumn]),s.yPoleWander=iv(f,n[h+e._yPoleWanderRadiansColumn],n[p+e._yPoleWanderRadiansColumn]),s.xPoleOffset=iv(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[p+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=iv(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[p+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=iv(f,g,m),s}var k1=ov;function Ga(e,t,n){this.heading=y(e,0),this.pitch=y(t,0),this.roll=y(n,0)}Ga.fromQuaternion=function(e,t){l(t)||(t=new Ga);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-P.asinClamped(n),t};Ga.fromDegrees=function(e,t,n,i){return l(i)||(i=new Ga),i.heading=e*P.RADIANS_PER_DEGREE,i.pitch=t*P.RADIANS_PER_DEGREE,i.roll=n*P.RADIANS_PER_DEGREE,i};Ga.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Ga(e.heading,e.pitch,e.roll)};Ga.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Ga.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&P.equalsEpsilon(e.heading,t.heading,n,i)&&P.equalsEpsilon(e.pitch,t.pitch,n,i)&&P.equalsEpsilon(e.roll,t.roll,n,i)};Ga.prototype.clone=function(e){return Ga.clone(this,e)};Ga.prototype.equals=function(e){return Ga.equals(this,e)};Ga.prototype.equalsEpsilon=function(e,t,n){return Ga.equalsEpsilon(this,e,t,n)};Ga.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var Wa=Ga;var KZ=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function kSe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=KZ.exec(i);if(o!==null)return o[1]}}var V1;function $Z(e){return typeof document>"u"?e:(l(V1)||(V1=document.createElement("a")),V1.href=e,V1.href)}var V0;function ZZ(){var t;if(l(V0))return V0;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l((t=import.meta)==null?void 0:t.url)?e=cp(".",import.meta.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(_1.toUrl)?e=cp("..",U0("Core/buildModuleUrl.js")):e=kSe(),V0=new Ee({url:$Z(e)}),V0.appendForwardSlash(),V0}function VSe(e){return $Z(_1.toUrl(`../${e}`))}function QZ(e){return ZZ().getDerivedResource({url:e}).url}var U1;function U0(e){return l(U1)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(_1.toUrl)?U1=VSe:U1=QZ),U1(e)}U0._cesiumScriptRegex=KZ;U0._buildModuleUrlFromBaseUrl=QZ;U0._clearBaseResource=function(){V0=void 0};U0.setBaseUrl=function(e){V0=Ee.DEFAULT.getDerivedResource({url:e})};U0.getCesiumBaseUrl=ZZ;var nn=U0;function USe(e,t,n){this.x=e,this.y=t,this.s=n}var vT=USe;function m5(e){e=y(e,y.EMPTY_OBJECT),this._xysFileUrlTemplate=Ee.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=y(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=y(e.sampleZeroJulianEphemerisDate,24423965e-1),this._sampleZeroDateTT=new $(this._sampleZeroJulianEphemerisDate,0,qn.TAI),this._stepSizeDays=y(e.stepSizeDays,1),this._samplesPerXysFile=y(e.samplesPerXysFile,1e3),this._totalSamples=y(e.totalSamples,27426),this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var zSe=new $(0,0,qn.TAI);function d5(e,t,n){let i=zSe;return i.dayNumber=t,i.secondsOfDay=n,$.daysDifference(i,e._sampleZeroDateTT)}m5.prototype.preload=function(e,t,n,i){let o=d5(this,e,t),r=d5(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(h5(this,h));return Promise.all(f)};m5.prototype.computeXysRadians=function(e,t,n){let i=d5(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(h5(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(h5(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new vT(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,p=this._denominators,g=this._coef,m=this._xTable,x,b;for(x=0;x<=r;++x)h[x]=f-m[x];for(x=0;x<=r;++x){for(g[x]=1,b=0;b<=r;++b)b!==x&&(g[x]*=h[b]);g[x]*=p[x];let T=(s+x)*3;n.x+=g[x]*u[T++],n.y+=g[x]*u[T++],n.s+=g[x]*u[T]}return n};function h5(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new Ee({url:nn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var z1=m5;function et(e,t,n,i,o,r,s,a,c){this[0]=y(e,0),this[1]=y(i,0),this[2]=y(s,0),this[3]=y(t,0),this[4]=y(o,0),this[5]=y(a,0),this[6]=y(n,0),this[7]=y(r,0),this[8]=y(c,0)}et.packedLength=9;et.pack=function(e,t,n){return n=y(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};et.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new et),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};et.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)et.pack(e[o],t,o*9);return t};et.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=et.unpack(e,i,t[o])}return t};et.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new et(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};et.fromArray=et.unpack;et.fromColumnMajorArray=function(e,t){return et.clone(e,t)};et.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new et(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};et.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,p=n-s-u+h,g=2*(i-f),m=2*(o+c),x=2*(i+f),b=-n+s-u+h,T=2*(a-r),C=2*(o-c),A=2*(a+r),E=-n-s+u+h;return l(t)?(t[0]=p,t[1]=x,t[2]=C,t[3]=g,t[4]=b,t[5]=A,t[6]=m,t[7]=T,t[8]=E,t):new et(p,g,m,x,b,T,C,A,E)};et.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,p=o*i+a*r*s,g=-a*i+o*r*s,m=-r,x=a*n,b=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=p,t[5]=x,t[6]=f,t[7]=g,t[8]=b,t):new et(c,u,f,h,p,g,m,x,b)};et.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new et(e.x,0,0,0,e.y,0,0,0,e.z)};et.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new et(e,0,0,0,e,0,0,0,e)};et.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new et(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};et.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new et(1,0,0,0,n,-i,0,i,n)};et.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new et(n,0,i,0,1,0,-i,0,n)};et.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new et(n,-i,0,i,n,0,0,0,1)};et.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};et.getElementIndex=function(e,t){return e*3+t};et.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};et.setColumn=function(e,t,n,i){i=et.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};et.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};et.setRow=function(e,t,n,i){return i=et.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var HSe=new d;et.setScale=function(e,t,n){let i=et.getScale(e,HSe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var GSe=new d;et.setUniformScale=function(e,t,n){let i=et.getScale(e,GSe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var p5=new d;et.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],p5)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],p5)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],p5)),t};var JZ=new d;et.getMaximumScale=function(e){return et.getScale(e,JZ),d.maximumComponent(JZ)};var WSe=new d;et.setRotation=function(e,t,n){let i=et.getScale(e,WSe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var jSe=new d;et.getRotation=function(e,t){let n=et.getScale(e,jSe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};et.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};et.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};et.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};et.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};et.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};et.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};et.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};et.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t};et.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function qSe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var _5=[1,0,0],g5=[2,2,1];function YSe(e){let t=0;for(let n=0;n<3;++n){let i=e[et.getElementIndex(g5[n],_5[n])];t+=2*i*i}return Math.sqrt(t)}function XSe(e,t){let n=P.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[et.getElementIndex(g5[u],_5[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=_5[o],c=g5[o];if(Math.abs(e[et.getElementIndex(c,a)])>n){let u=e[et.getElementIndex(c,c)],f=e[et.getElementIndex(a,a)],h=e[et.getElementIndex(c,a)],p=(u-f)/2/h,g;p<0?g=-1/(-p+Math.sqrt(1+p*p)):g=1/(p+Math.sqrt(1+p*p)),r=1/Math.sqrt(1+g*g),s=g*r}return t=et.clone(et.IDENTITY,t),t[et.getElementIndex(a,a)]=t[et.getElementIndex(c,c)]=r,t[et.getElementIndex(c,a)]=s,t[et.getElementIndex(a,c)]=-s,t}var H1=new et,eQ=new et;et.computeEigenDecomposition=function(e,t){let n=P.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=et.clone(et.IDENTITY,t.unitary),a=t.diagonal=et.clone(e,t.diagonal),c=n*qSe(a);for(;r<i&&YSe(a)>c;)XSe(a,H1),et.transpose(H1,eQ),et.multiply(a,H1,a),et.multiply(eQ,a,a),et.multiply(s,H1,s),++o>2&&(++r,o=0);return t};et.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};et.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};et.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=et.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let p=1/h;return et.multiplyByScalar(t,p,t)};var KSe=new et;et.inverseTranspose=function(e,t){return et.inverse(et.transpose(e,KSe),t)};et.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};et.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};et.IDENTITY=Object.freeze(new et(1,0,0,0,1,0,0,0,1));et.ZERO=Object.freeze(new et(0,0,0,0,0,0,0,0,0));et.COLUMN0ROW0=0;et.COLUMN0ROW1=1;et.COLUMN0ROW2=2;et.COLUMN1ROW0=3;et.COLUMN1ROW1=4;et.COLUMN1ROW2=5;et.COLUMN2ROW0=6;et.COLUMN2ROW1=7;et.COLUMN2ROW2=8;Object.defineProperties(et.prototype,{length:{get:function(){return et.packedLength}}});et.prototype.clone=function(e){return et.clone(this,e)};et.prototype.equals=function(e){return et.equals(this,e)};et.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};et.prototype.equalsEpsilon=function(e,t){return et.equalsEpsilon(this,e,t)};et.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]})
(${this[1]}, ${this[4]}, ${this[7]})
(${this[2]}, ${this[5]}, ${this[8]})`};var Z=et;function Je(e,t,n,i,o,r,s,a,c,u,f,h,p,g,m,x){this[0]=y(e,0),this[1]=y(o,0),this[2]=y(c,0),this[3]=y(p,0),this[4]=y(t,0),this[5]=y(r,0),this[6]=y(u,0),this[7]=y(g,0),this[8]=y(n,0),this[9]=y(s,0),this[10]=y(f,0),this[11]=y(m,0),this[12]=y(i,0),this[13]=y(a,0),this[14]=y(h,0),this[15]=y(x,0)}Je.packedLength=16;Je.pack=function(e,t,n){return n=y(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};Je.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Je),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};Je.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Je.pack(e[o],t,o*16);return t};Je.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=Je.unpack(e,i,t[o])}return t};Je.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new Je(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};Je.fromArray=Je.unpack;Je.fromColumnMajorArray=function(e,t){return Je.clone(e,t)};Je.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new Je(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};Je.fromRotationTranslation=function(e,t,n){return t=y(t,d.ZERO),l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new Je(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};Je.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new Je);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,p=t.y*t.z,g=t.y*t.w,m=t.z*t.z,x=t.z*t.w,b=t.w*t.w,T=a-h-m+b,C=2*(c-x),A=2*(u+g),E=2*(c+x),v=-a+h-m+b,D=2*(p-f),R=2*(u-g),O=2*(p+f),M=-a-h+m+b;return i[0]=T*o,i[1]=E*o,i[2]=R*o,i[3]=0,i[4]=C*r,i[5]=v*r,i[6]=O*r,i[7]=0,i[8]=A*s,i[9]=D*s,i[10]=M*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};Je.fromTranslationRotationScale=function(e,t){return Je.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};Je.fromTranslation=function(e,t){return Je.fromRotationTranslation(Z.IDENTITY,e,t)};Je.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new Je(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};Je.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new Je(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};Je.fromRotation=function(e,t){return l(t)||(t=new Je),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var wT=new d,DT=new d,rv=new d;Je.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,wT),d.normalize(d.cross(wT,o,DT),DT),d.normalize(d.cross(DT,wT,rv),rv);let r=DT.x,s=DT.y,a=DT.z,c=wT.x,u=wT.y,f=wT.z,h=rv.x,p=rv.y,g=rv.z,m=n.x,x=n.y,b=n.z,T=r*-m+s*-x+a*-b,C=h*-m+p*-x+g*-b,A=c*m+u*x+f*b;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=p,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=T,t[13]=C,t[14]=A,t[15]=1,t):new Je(r,s,a,T,h,p,g,C,-c,-u,-f,A,0,0,0,1)};Je.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};Je.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,p=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=p,s[15]=1,s};Je.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),p=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=p,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};Je.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,p=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=p,r[15]=0,r};Je.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new Je),e=y(e,y.EMPTY_OBJECT);let o=y(e.x,0),r=y(e.y,0),s=y(e.width,0),a=y(e.height,0);t=y(t,0),n=y(n,1);let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,p=u,g=f,m=o+c,x=r+u,b=t+f,T=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=p,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=x,i[14]=b,i[15]=T,i};Je.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};Je.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};Je.getElementIndex=function(e,t){return e*4+t};Je.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};Je.setColumn=function(e,t,n,i){i=Je.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};Je.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};Je.setRow=function(e,t,n,i){return i=Je.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};Je.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var $Se=new d;Je.setScale=function(e,t,n){let i=Je.getScale(e,$Se),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var ZSe=new d;Je.setUniformScale=function(e,t,n){let i=Je.getScale(e,ZSe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var y5=new d;Je.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],y5)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],y5)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],y5)),t};var tQ=new d;Je.getMaximumScale=function(e){return Je.getScale(e,tQ),d.maximumComponent(tQ)};var QSe=new d;Je.setRotation=function(e,t,n){let i=Je.getScale(e,QSe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var JSe=new d;Je.getRotation=function(e,t){let n=Je.getScale(e,JSe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};Je.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],p=e[9],g=e[10],m=e[11],x=e[12],b=e[13],T=e[14],C=e[15],A=t[0],E=t[1],v=t[2],D=t[3],R=t[4],O=t[5],M=t[6],N=t[7],_=t[8],S=t[9],w=t[10],I=t[11],L=t[12],B=t[13],H=t[14],V=t[15],G=i*A+a*E+h*v+x*D,k=o*A+c*E+p*v+b*D,W=r*A+u*E+g*v+T*D,q=s*A+f*E+m*v+C*D,J=i*R+a*O+h*M+x*N,j=o*R+c*O+p*M+b*N,K=r*R+u*O+g*M+T*N,Q=s*R+f*O+m*M+C*N,he=i*_+a*S+h*w+x*I,ye=o*_+c*S+p*w+b*I,re=r*_+u*S+g*w+T*I,_e=s*_+f*S+m*w+C*I,be=i*L+a*B+h*H+x*V,we=o*L+c*B+p*H+b*V,De=r*L+u*B+g*H+T*V,Me=s*L+f*B+m*H+C*V;return n[0]=G,n[1]=k,n[2]=W,n[3]=q,n[4]=J,n[5]=j,n[6]=K,n[7]=Q,n[8]=he,n[9]=ye,n[10]=re,n[11]=_e,n[12]=be,n[13]=we,n[14]=De,n[15]=Me,n};Je.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};Je.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};Je.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],p=e[12],g=e[13],m=e[14],x=t[0],b=t[1],T=t[2],C=t[4],A=t[5],E=t[6],v=t[8],D=t[9],R=t[10],O=t[12],M=t[13],N=t[14],_=i*x+s*b+u*T,S=o*x+a*b+f*T,w=r*x+c*b+h*T,I=i*C+s*A+u*E,L=o*C+a*A+f*E,B=r*C+c*A+h*E,H=i*v+s*D+u*R,V=o*v+a*D+f*R,G=r*v+c*D+h*R,k=i*O+s*M+u*N+p,W=o*O+a*M+f*N+g,q=r*O+c*M+h*N+m;return n[0]=_,n[1]=S,n[2]=w,n[3]=0,n[4]=I,n[5]=L,n[6]=B,n[7]=0,n[8]=H,n[9]=V,n[10]=G,n[11]=0,n[12]=k,n[13]=W,n[14]=q,n[15]=1,n};Je.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],p=t[0],g=t[1],m=t[2],x=t[3],b=t[4],T=t[5],C=t[6],A=t[7],E=t[8],v=i*p+s*g+u*m,D=o*p+a*g+f*m,R=r*p+c*g+h*m,O=i*x+s*b+u*T,M=o*x+a*b+f*T,N=r*x+c*b+h*T,_=i*C+s*A+u*E,S=o*C+a*A+f*E,w=r*C+c*A+h*E;return n[0]=v,n[1]=D,n[2]=R,n[3]=0,n[4]=O,n[5]=M,n[6]=N,n[7]=0,n[8]=_,n[9]=S,n[10]=w,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};Je.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};Je.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?Je.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};Je.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};Je.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};Je.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};Je.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};Je.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};Je.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t};Je.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};Je.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};Je.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};Je.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};Je.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};Je.getMatrix3=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var eve=new Z,tve=new Z,nve=new oe,ive=new oe(0,0,0,1);Je.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],p=e[10],g=e[14],m=e[3],x=e[7],b=e[11],T=e[15],C=p*T,A=g*b,E=h*T,v=g*x,D=h*b,R=p*x,O=f*T,M=g*m,N=f*b,_=p*m,S=f*x,w=h*m,I=C*a+v*c+D*u-(A*a+E*c+R*u),L=A*s+O*c+_*u-(C*s+M*c+N*u),B=E*s+M*a+S*u-(v*s+O*a+w*u),H=R*s+N*a+w*c-(D*s+_*a+S*c),V=A*i+E*o+R*r-(C*i+v*o+D*r),G=C*n+M*o+N*r-(A*n+O*o+_*r),k=v*n+O*i+w*r-(E*n+M*i+S*r),W=D*n+_*i+S*o-(R*n+N*i+w*o);C=o*u,A=r*c,E=i*u,v=r*a,D=i*c,R=o*a,O=n*u,M=r*s,N=n*c,_=o*s,S=n*a,w=i*s;let q=C*x+v*b+D*T-(A*x+E*b+R*T),J=A*m+O*b+_*T-(C*m+M*b+N*T),j=E*m+M*x+S*T-(v*m+O*x+w*T),K=R*m+N*x+w*b-(D*m+_*x+S*b),Q=E*p+R*g+A*h-(D*g+C*h+v*p),he=N*g+C*f+M*p-(O*p+_*g+A*f),ye=O*h+w*g+v*f-(S*g+E*f+M*h),re=S*p+D*f+_*h-(N*h+w*p+R*f),_e=n*I+i*L+o*B+r*H;if(Math.abs(_e)<P.EPSILON21){if(Z.equalsEpsilon(Je.getMatrix3(e,eve),tve,P.EPSILON7)&&oe.equals(Je.getRow(e,3,nve),ive))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new se("matrix is not invertible because its determinate is zero.")}return _e=1/_e,t[0]=I*_e,t[1]=L*_e,t[2]=B*_e,t[3]=H*_e,t[4]=V*_e,t[5]=G*_e,t[6]=k*_e,t[7]=W*_e,t[8]=q*_e,t[9]=J*_e,t[10]=j*_e,t[11]=K*_e,t[12]=Q*_e,t[13]=he*_e,t[14]=ye*_e,t[15]=re*_e,t};Je.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],p=e[13],g=e[14],m=-n*h-i*p-o*g,x=-r*h-s*p-a*g,b=-c*h-u*p-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=x,t[14]=b,t[15]=1,t};var ove=new Je;Je.inverseTranspose=function(e,t){return Je.inverse(Je.transpose(e,ove),t)};Je.IDENTITY=Object.freeze(new Je(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));Je.ZERO=Object.freeze(new Je(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));Je.COLUMN0ROW0=0;Je.COLUMN0ROW1=1;Je.COLUMN0ROW2=2;Je.COLUMN0ROW3=3;Je.COLUMN1ROW0=4;Je.COLUMN1ROW1=5;Je.COLUMN1ROW2=6;Je.COLUMN1ROW3=7;Je.COLUMN2ROW0=8;Je.COLUMN2ROW1=9;Je.COLUMN2ROW2=10;Je.COLUMN2ROW3=11;Je.COLUMN3ROW0=12;Je.COLUMN3ROW1=13;Je.COLUMN3ROW2=14;Je.COLUMN3ROW3=15;Object.defineProperties(Je.prototype,{length:{get:function(){return Je.packedLength}}});Je.prototype.clone=function(e){return Je.clone(this,e)};Je.prototype.equals=function(e){return Je.equals(this,e)};Je.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};Je.prototype.equalsEpsilon=function(e,t){return Je.equalsEpsilon(this,e,t)};Je.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]})
(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]})
(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]})
(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var F=Je;var W_,Dr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},ul={};Object.defineProperties(ul,{element:{get:function(){if(ul.supportsFullscreen())return document[Dr.fullscreenElement]}},changeEventName:{get:function(){if(ul.supportsFullscreen())return Dr.fullscreenchange}},errorEventName:{get:function(){if(ul.supportsFullscreen())return Dr.fullscreenerror}},enabled:{get:function(){if(ul.supportsFullscreen())return document[Dr.fullscreenEnabled]}},fullscreen:{get:function(){if(ul.supportsFullscreen())return ul.element!==null}}});ul.supportsFullscreen=function(){if(l(W_))return W_;W_=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Dr.requestFullscreen="requestFullscreen",Dr.exitFullscreen="exitFullscreen",Dr.fullscreenEnabled="fullscreenEnabled",Dr.fullscreenElement="fullscreenElement",Dr.fullscreenchange="fullscreenchange",Dr.fullscreenerror="fullscreenerror",W_=!0,W_;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Dr.requestFullscreen=n,W_=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Dr.requestFullscreen=n,W_=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Dr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Dr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Dr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Dr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Dr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Dr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Dr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Dr.fullscreenerror=n)}return W_};ul.requestFullscreen=function(e,t){ul.supportsFullscreen()&&e[Dr.requestFullscreen]({vrDisplay:t})};ul.exitFullscreen=function(){ul.supportsFullscreen()&&document[Dr.exitFullscreen]()};ul._names=Dr;var Ir=ul;var ja;typeof navigator<"u"?ja=navigator:ja={};function z0(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var G1,nQ;function E5(){if(!l(G1)&&(G1=!1,!K1())){let e=/ Chrome\/([\.0-9]+)/.exec(ja.userAgent);e!==null&&(G1=!0,nQ=z0(e[1]))}return G1}function rve(){return E5()&&nQ}var W1,iQ;function oQ(){if(!l(W1)&&(W1=!1,!E5()&&!K1()&&/ Safari\/[\.0-9]+/.test(ja.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(ja.userAgent);e!==null&&(W1=!0,iQ=z0(e[1]))}return W1}function sve(){return oQ()&&iQ}var j1,C5;function rQ(){if(!l(j1)){j1=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(ja.userAgent);e!==null&&(j1=!0,C5=z0(e[1]),C5.isNightly=!!e[2])}return j1}function ave(){return rQ()&&C5}var sv,A5;function sQ(){if(!l(sv)){sv=!1;let e;ja.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(ja.userAgent),e!==null&&(sv=!0,A5=z0(e[1]))):ja.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(ja.userAgent),e!==null&&(sv=!0,A5=z0(e[1])))}return sv}function cve(){return sQ()&&A5}var q1,aQ;function K1(){if(!l(q1)){q1=!1;let e=/ Edg\/([\.0-9]+)/.exec(ja.userAgent);e!==null&&(q1=!0,aQ=z0(e[1]))}return q1}function lve(){return K1()&&aQ}var Y1,S5;function $1(){if(!l(Y1)){Y1=!1;let e=/Firefox\/([\.0-9]+)/.exec(ja.userAgent);e!==null&&(Y1=!0,S5=z0(e[1]))}return Y1}var x5;function uve(){return l(x5)||(x5=/Windows/i.test(ja.appVersion)),x5}var b5;function fve(){return l(b5)||(b5=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),b5}function dve(){return $1()&&S5}var T5;function hve(){return l(T5)||(T5=!$1()&&typeof PointerEvent<"u"&&(!l(ja.pointerEnabled)||ja.pointerEnabled)),T5}var cQ,X1;function lQ(){if(!l(X1)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;X1=l(t)&&t!=="",X1&&(cQ=t)}return X1}function mve(){return lQ()?cQ:void 0}function Sc(){return Sc._result}Sc._promise=void 0;Sc._result=void 0;Sc.initialize=function(){return l(Sc._promise)||(Sc._promise=new Promise(e=>{let t=new Image;t.onload=function(){Sc._result=t.width>0&&t.height>0,e(Sc._result)},t.onerror=function(){Sc._result=!1,e(Sc._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),Sc._promise};Object.defineProperties(Sc,{initialized:{get:function(){return l(Sc._result)}}});var IT=[];typeof ArrayBuffer<"u"&&(IT.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&IT.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&IT.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&IT.push(BigInt64Array),typeof BigUint64Array<"u"&&IT.push(BigUint64Array));var $u={isChrome:E5,chromeVersion:rve,isSafari:oQ,safariVersion:sve,isWebkit:rQ,webkitVersion:ave,isInternetExplorer:sQ,internetExplorerVersion:cve,isEdge:K1,edgeVersion:lve,isFirefox:$1,firefoxVersion:dve,isWindows:uve,isIPadOrIOS:fve,hardwareConcurrency:y(ja.hardwareConcurrency,3),supportsPointerEvents:hve,supportsImageRenderingPixelated:lQ,supportsWebP:Sc,imageRenderingValue:mve,typedArrayTypes:IT};$u.supportsBasis=function(e){return $u.supportsWebAssembly()&&e.context.supportsBasis};$u.supportsFullscreen=function(){return Ir.supportsFullscreen()};$u.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};$u.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};$u.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};$u.supportsBigInt=function(){return typeof BigInt<"u"};$u.supportsWebWorkers=function(){return typeof Worker<"u"};$u.supportsWebAssembly=function(){return typeof WebAssembly<"u"};$u.supportsWebgl2=function(e){return e.context.webgl2};$u.supportsEsmWebWorkers=function(){return!$1()||parseInt(S5)>=114};var Ht=$u;function it(e,t,n,i){this.x=y(e,0),this.y=y(t,0),this.z=y(n,0),this.w=y(i,0)}var av=new d;it.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);av=d.normalize(e,av);let r=av.x*o,s=av.y*o,a=av.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new it(r,s,a,c)};var pve=[1,2,0],_ve=new Array(3);it.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[Z.COLUMN0ROW0],c=e[Z.COLUMN1ROW1],u=e[Z.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[Z.COLUMN1ROW2]-e[Z.COLUMN2ROW1])*n,o=(e[Z.COLUMN2ROW0]-e[Z.COLUMN0ROW2])*n,r=(e[Z.COLUMN0ROW1]-e[Z.COLUMN1ROW0])*n;else{let h=pve,p=0;c>a&&(p=1),u>a&&u>c&&(p=2);let g=h[p],m=h[g];n=Math.sqrt(e[Z.getElementIndex(p,p)]-e[Z.getElementIndex(g,g)]-e[Z.getElementIndex(m,m)]+1);let x=_ve;x[p]=.5*n,n=.5/n,s=(e[Z.getElementIndex(m,g)]-e[Z.getElementIndex(g,m)])*n,x[g]=(e[Z.getElementIndex(g,p)]+e[Z.getElementIndex(p,g)])*n,x[m]=(e[Z.getElementIndex(m,p)]+e[Z.getElementIndex(p,m)])*n,i=-x[0],o=-x[1],r=-x[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new it(i,o,r,s)};var uQ=new it,fQ=new it,v5=new it,dQ=new it;it.fromHeadingPitchRoll=function(e,t){return dQ=it.fromAxisAngle(d.UNIT_X,e.roll,uQ),v5=it.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=it.multiply(v5,dQ,v5),fQ=it.fromAxisAngle(d.UNIT_Z,-e.heading,uQ),it.multiply(fQ,t,t)};var Z1=new d,w5=new d,dd=new it,hQ=new it,Q1=new it;it.packedLength=4;it.pack=function(e,t,n){return n=y(n,0),t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};it.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new it),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};it.packedInterpolationLength=3;it.convertPackedArrayForInterpolation=function(e,t,n,i){it.unpack(e,n*4,Q1),it.conjugate(Q1,Q1);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;it.unpack(e,(t+o)*4,dd),it.multiply(dd,Q1,dd),dd.w<0&&it.negate(dd,dd),it.computeAxis(dd,Z1);let a=it.computeAngle(dd);l(i)||(i=[]),i[s]=Z1.x*a,i[s+1]=Z1.y*a,i[s+2]=Z1.z*a}};it.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new it),d.fromArray(e,0,w5);let r=d.magnitude(w5);return it.unpack(t,i*4,hQ),r===0?it.clone(it.IDENTITY,dd):it.fromAxisAngle(w5,r,dd),it.multiply(dd,hQ,o)};it.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new it(e.x,e.y,e.z,e.w)};it.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};it.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};it.magnitude=function(e){return Math.sqrt(it.magnitudeSquared(e))};it.normalize=function(e,t){let n=1/it.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};it.inverse=function(e,t){let n=it.magnitudeSquared(e);return t=it.conjugate(e,t),it.multiplyByScalar(t,1/n,t)};it.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};it.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};it.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};it.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};it.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,p=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=p,n.z=g,n.w=m,n};it.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};it.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};it.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<P.EPSILON6||Math.abs(n+1)<P.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};it.computeAngle=function(e){return Math.abs(e.w-1)<P.EPSILON6?0:2*Math.acos(e.w)};var D5=new it;it.lerp=function(e,t,n,i){return D5=it.multiplyByScalar(t,n,D5),i=it.multiplyByScalar(e,1-n,i),it.add(D5,i,i)};var mQ=new it,I5=new it,P5=new it;it.slerp=function(e,t,n,i){let o=it.dot(e,t),r=t;if(o<0&&(o=-o,r=mQ=it.negate(t,mQ)),1-o<P.EPSILON6)return it.lerp(e,r,n,i);let s=Math.acos(o);return I5=it.multiplyByScalar(e,Math.sin((1-n)*s),I5),P5=it.multiplyByScalar(r,Math.sin(n*s),P5),i=it.add(I5,P5,i),it.multiplyByScalar(i,1/Math.sin(s),i)};it.log=function(e,t){let n=P.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};it.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var gve=new d,yve=new d,cv=new it,PT=new it;it.computeInnerQuadrangle=function(e,t,n,i){let o=it.conjugate(t,cv);it.multiply(o,n,PT);let r=it.log(PT,gve);it.multiply(o,e,PT);let s=it.log(PT,yve);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),it.exp(r,cv),it.multiply(t,cv,i)};it.squad=function(e,t,n,i,o,r){let s=it.slerp(e,t,o,cv),a=it.slerp(n,i,o,PT);return it.slerp(s,a,2*o*(1-o),r)};var xve=new it,pQ=1.9011074535173003,J1=Ht.supportsTypedArrays()?new Float32Array(8):[],eO=Ht.supportsTypedArrays()?new Float32Array(8):[],fp=Ht.supportsTypedArrays()?new Float32Array(8):[],dp=Ht.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;J1[e]=1/(t*n),eO[e]=t/n}J1[7]=pQ/(8*17);eO[7]=pQ*8/17;it.fastSlerp=function(e,t,n,i){let o=it.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)fp[g]=(J1[g]*c-eO[g])*s,dp[g]=(J1[g]*u-eO[g])*s;let f=r*n*(1+fp[0]*(1+fp[1]*(1+fp[2]*(1+fp[3]*(1+fp[4]*(1+fp[5]*(1+fp[6]*(1+fp[7])))))))),h=a*(1+dp[0]*(1+dp[1]*(1+dp[2]*(1+dp[3]*(1+dp[4]*(1+dp[5]*(1+dp[6]*(1+dp[7])))))))),p=it.multiplyByScalar(e,h,xve);return it.multiplyByScalar(t,f,i),it.add(p,i,i)};it.fastSquad=function(e,t,n,i,o,r){let s=it.fastSlerp(e,t,o,cv),a=it.fastSlerp(n,i,o,PT);return it.fastSlerp(s,a,2*o*(1-o),r)};it.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};it.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};it.ZERO=Object.freeze(new it(0,0,0,0));it.IDENTITY=Object.freeze(new it(0,0,0,1));it.prototype.clone=function(e){return it.clone(this,e)};it.prototype.equals=function(e){return it.equals(this,e)};it.prototype.equalsEpsilon=function(e,t){return it.equalsEpsilon(this,e,t)};it.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=it;var ui={},O5={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"}},OT={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},R5={},fl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},j_=new d,q_=new d,Y_=new d;ui.localFrameToFixedFrameGenerator=function(e,t){if(!O5.hasOwnProperty(e)||!O5[e].hasOwnProperty(t))throw new de("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=O5[e][t],i,o=e+t;return l(R5[o])?i=R5[o]:(i=function(r,s,a){if(l(a)||(a=new F),d.equalsEpsilon(r,d.ZERO,P.EPSILON14))d.unpack(OT[e],0,j_),d.unpack(OT[t],0,q_),d.unpack(OT[n],0,Y_);else if(P.equalsEpsilon(r.x,0,P.EPSILON14)&&P.equalsEpsilon(r.y,0,P.EPSILON14)){let c=P.sign(r.z);d.unpack(OT[e],0,j_),e!=="east"&&e!=="west"&&d.multiplyByScalar(j_,c,j_),d.unpack(OT[t],0,q_),t!=="east"&&t!=="west"&&d.multiplyByScalar(q_,c,q_),d.unpack(OT[n],0,Y_),n!=="east"&&n!=="west"&&d.multiplyByScalar(Y_,c,Y_)}else{s=y(s,ee.default),s.geodeticSurfaceNormal(r,fl.up);let c=fl.up,u=fl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,fl.east),d.cross(c,u,fl.north),d.multiplyByScalar(fl.up,-1,fl.down),d.multiplyByScalar(fl.east,-1,fl.west),d.multiplyByScalar(fl.north,-1,fl.south),j_=fl[e],q_=fl[t],Y_=fl[n]}return a[0]=j_.x,a[1]=j_.y,a[2]=j_.z,a[3]=0,a[4]=q_.x,a[5]=q_.y,a[6]=q_.z,a[7]=0,a[8]=Y_.x,a[9]=Y_.y,a[10]=Y_.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},R5[o]=i),i};ui.eastNorthUpToFixedFrame=ui.localFrameToFixedFrameGenerator("east","north");ui.northEastDownToFixedFrame=ui.localFrameToFixedFrameGenerator("north","east");ui.northUpEastToFixedFrame=ui.localFrameToFixedFrameGenerator("north","up");ui.northWestUpToFixedFrame=ui.localFrameToFixedFrameGenerator("north","west");var bve=new Le,Tve=new d(1,1,1),Cve=new F;ui.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=y(i,ui.eastNorthUpToFixedFrame);let r=Le.fromHeadingPitchRoll(t,bve),s=F.fromTranslationQuaternionRotationScale(d.ZERO,r,Tve,Cve);return o=i(e,n,o),F.multiply(o,s,o)};var Ave=new F,Eve=new Z;ui.headingPitchRollQuaternion=function(e,t,n,i,o){let r=ui.headingPitchRollToFixedFrame(e,t,n,i,Ave),s=F.getMatrix3(r,Eve);return Le.fromRotationMatrix(s,o)};var Sve=new d(1,1,1),vve=new d,_Q=new F,wve=new F,Dve=new Z,Ive=new Le;ui.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=y(t,ee.default),n=y(n,ui.eastNorthUpToFixedFrame),l(i)||(i=new Wa);let o=F.getTranslation(e,vve);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=F.inverseTransformation(n(o,t,_Q),_Q),s=F.setScale(e,Sve,wve);s=F.setTranslation(s,d.ZERO,s),r=F.multiply(r,s,r);let a=Le.fromRotationMatrix(F.getMatrix3(r,Dve),Ive);return a=Le.normalize(a,a),Wa.fromQuaternion(a,i)};var Pve=6*3600+41*60+50.54841,Ove=8640184812866e-6,Rve=.093104,Mve=-62e-7,Lve=11772758384668e-32,Nve=72921158553e-15,Fve=P.TWO_PI/86400,tO=new $;ui.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=ui.computeIcrfToFixedMatrix(e,t);return l(n)||(n=ui.computeTemeToPseudoFixedMatrix(e,t)),n};ui.computeTemeToPseudoFixedMatrix=function(e,t){tO=$.addSeconds(e,-$.computeTaiMinusUtc(e),tO);let n=tO.dayNumber,i=tO.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/Xn.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/Xn.DAYS_PER_JULIAN_CENTURY;let a=(Pve+o*(Ove+o*(Rve+o*Mve)))*Fve%P.TWO_PI,c=Nve+Lve*(n-24515455e-1),u=(i+Xn.SECONDS_PER_DAY*.5)%Xn.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),p=Math.sin(f);return l(t)?(t[0]=h,t[1]=-p,t[2]=0,t[3]=p,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new Z(h,p,0,-p,h,0,0,0,1)};ui.iau2006XysData=new z1;ui.earthOrientationParameters=k1.NONE;var N5=32.184,Bve=2451545;ui.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+N5,i=e.stop.dayNumber,o=e.stop.secondsOfDay+N5;return ui.iau2006XysData.preload(t,n,i,o)};ui.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new Z);let n=ui.computeFixedToIcrfMatrix(e,t);if(l(n))return Z.transpose(n,t)};var kve=32.184,Vve=2451545,nO=new Wa,Uve=new Z,zve=new $;ui.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new Z);let n=$.addSeconds(e,kve,zve),i=$.totalDays(n)-Vve,o=P.toRadians(12.112)-P.toRadians(.052992)*i,r=P.toRadians(24.224)-P.toRadians(.105984)*i,s=P.toRadians(227.645)+P.toRadians(13.012)*i,a=P.toRadians(261.105)+P.toRadians(13.340716)*i,c=P.toRadians(358)+P.toRadians(.9856)*i;return nO.pitch=P.toRadians(180)-P.toRadians(3.878)*Math.sin(o)-P.toRadians(.12)*Math.sin(r)+P.toRadians(.07)*Math.sin(s)-P.toRadians(.017)*Math.sin(a),nO.roll=P.toRadians(66.53-90)+P.toRadians(1.543)*Math.cos(o)+P.toRadians(.24)*Math.cos(r)-P.toRadians(.028)*Math.cos(s)+P.toRadians(.007)*Math.cos(a),nO.heading=P.toRadians(244.375-90)+P.toRadians(13.17635831)*i+P.toRadians(3.558)*Math.sin(o)+P.toRadians(.121)*Math.sin(r)-P.toRadians(.064)*Math.sin(s)+P.toRadians(.016)*Math.sin(a)+P.toRadians(.025)*Math.sin(c),Z.fromHeadingPitchRoll(nO,Uve)};ui.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new Z);let n=ui.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return Z.transpose(n,t)};var Hve=new vT(0,0,0),Gve=new N0(0,0,0,0,0,0),M5=new Z,L5=new Z;ui.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new Z);let n=ui.earthOrientationParameters.compute(e,Gve);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+N5,r=ui.iau2006XysData.computeXysRadians(i,o,Hve);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=M5;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=Z.fromRotationZ(-r.s,L5),h=Z.multiply(u,f,M5),p=e.dayNumber,g=e.secondsOfDay-$.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=p-2451545,x=g/Xn.SECONDS_PER_DAY,b=.779057273264+x+.00273781191135448*(m+x);b=b%1*P.TWO_PI;let T=Z.fromRotationZ(b,L5),C=Z.multiply(h,T,M5),A=Math.cos(n.xPoleWander),E=Math.cos(n.yPoleWander),v=Math.sin(n.xPoleWander),D=Math.sin(n.yPoleWander),R=i-Bve+o/Xn.SECONDS_PER_DAY;R/=36525;let O=-47e-6*R*P.RADIANS_PER_DEGREE/3600,M=Math.cos(O),N=Math.sin(O),_=L5;return _[0]=A*M,_[1]=A*N,_[2]=v,_[3]=-E*N+D*v*M,_[4]=E*M+D*v*N,_[5]=-D*A,_[6]=-D*N-E*v*M,_[7]=D*M-E*v*N,_[8]=E*A,Z.multiply(C,_,t)};var Wve=new oe;ui.pointToWindowCoordinates=function(e,t,n,i){return i=ui.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};ui.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new U);let o=Wve;return F.multiplyByVector(e,oe.fromElements(n.x,n.y,n.z,1,o),o),oe.multiplyByScalar(o,1/o.w,o),F.multiplyByVector(t,o,o),U.fromCartesian4(o,i)};var jve=new d,qve=new d,Yve=new d;ui.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=y(n,ee.default).geodeticSurfaceNormal(e,jve),r=d.cross(t,o,qve);d.equalsEpsilon(r,d.ZERO,P.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,Yve);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new Z),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var gQ=new F(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),yQ=new fe,F5=new d,Xve=new d,Kve=new Z,B5=new F,xQ=new F;ui.basisTo2D=function(e,t,n){let i=F.getTranslation(t,Xve),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,F5);else{let f=o.cartesianToCartographic(i,yQ);r=e.project(f,F5),d.fromElements(r.z,r.x,r.y,r)}let s=ui.eastNorthUpToFixedFrame(i,o,B5),a=F.inverseTransformation(s,xQ),c=F.getMatrix3(t,Kve),u=F.multiplyByMatrix3(a,c,n);return F.multiply(gQ,u,n),F.setTranslation(n,r,n),n};ui.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=ui.eastNorthUpToFixedFrame(t,i,B5),r=F.inverseTransformation(o,xQ),s=i.cartesianToCartographic(t,yQ),a=e.project(s,F5);d.fromElements(a.z,a.x,a.y,a);let c=F.fromTranslation(a,B5);return F.multiply(gQ,r,n),F.multiply(c,n,n),n};var Mt=ui;function wn(e,t,n,i){this.west=y(e,0),this.south=y(t,0),this.east=y(n,0),this.north=y(i,0)}Object.defineProperties(wn.prototype,{width:{get:function(){return wn.computeWidth(this)}},height:{get:function(){return wn.computeHeight(this)}}});wn.packedLength=4;wn.pack=function(e,t,n){return n=y(n,0),t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};wn.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new wn),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};wn.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=P.TWO_PI),t-n};wn.computeHeight=function(e){return e.north-e.south};wn.fromDegrees=function(e,t,n,i,o){return e=P.toRadians(y(e,0)),t=P.toRadians(y(t,0)),n=P.toRadians(y(n,0)),i=P.toRadians(y(i,0)),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new wn(e,t,n,i)};wn.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=y(e,0),o.south=y(t,0),o.east=y(n,0),o.north=y(i,0),o):new wn(e,t,n,i)};wn.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+P.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>P.PI&&(i=i-P.TWO_PI),n>P.PI&&(n=n-P.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new wn(n,s,i,a)};wn.fromCartesianArray=function(e,t,n){t=y(t,ee.default);let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let p=h.longitude>=0?h.longitude:h.longitude+P.TWO_PI;r=Math.min(r,p),s=Math.max(s,p)}return o-i>s-r&&(i=r,o=s,o>P.PI&&(o=o-P.TWO_PI),i>P.PI&&(i=i-P.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new wn(i,a,o,c)};var $ve=new d,Zve=new d,Qve=new d,Jve=new d,ewe=new d,k5=new Array(5);for(let e=0;e<k5.length;++e)k5[e]=new d;wn.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=ee.default),l(n)||(n=new wn),d.equals(i,d.ZERO))return wn.clone(wn.MAX_VALUE,n),n;let r=Mt.eastNorthUpToFixedFrame(i,t,$ve),s=F.multiplyByPointAsVector(r,d.UNIT_X,Zve);d.normalize(s,s);let a=F.multiplyByPointAsVector(r,d.UNIT_Y,Qve);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,ewe),u=d.negate(s,Jve),f=k5,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,wn.fromCartesianArray(f,t,n)};wn.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new wn(e.west,e.south,e.east,e.north)};wn.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};wn.prototype.clone=function(e){return wn.clone(this,e)};wn.prototype.equals=function(e){return wn.equals(this,e)};wn.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};wn.prototype.equalsEpsilon=function(e,t){return wn.equalsEpsilon(this,e,t)};wn._validate=function(e){};wn.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new fe(e.west,e.south)};wn.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new fe(e.west,e.north)};wn.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new fe(e.east,e.north)};wn.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new fe(e.east,e.south)};wn.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=P.TWO_PI);let o=P.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new fe(o,r)};wn.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=P.TWO_PI:r<s&&i>0&&(r+=P.TWO_PI),i<o&&s<0?s+=P.TWO_PI:r<s&&o<0&&(o+=P.TWO_PI);let a=P.negativePiToPi(Math.max(o,s)),c=P.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new wn(a,u,c,f)};wn.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new wn(i,o,r,s)};wn.union=function(e,t,n){l(n)||(n=new wn);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=P.TWO_PI:r<s&&i>0&&(r+=P.TWO_PI),i<o&&s<0?s+=P.TWO_PI:r<s&&o<0&&(o+=P.TWO_PI);let a=P.negativePiToPi(Math.min(o,s)),c=P.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};wn.expand=function(e,t,n){return l(n)||(n=new wn),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};wn.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=P.TWO_PI,n<0&&(n+=P.TWO_PI)),(n>o||P.equalsEpsilon(n,o,P.EPSILON14))&&(n<r||P.equalsEpsilon(n,r,P.EPSILON14))&&i>=e.south&&i<=e.north};var twe=new fe;wn.subsample=function(e,t,n,i){t=y(t,ee.default),n=y(n,0),l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=twe;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*P.PI_OVER_TWO,wn.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};wn.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new wn),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=P.TWO_PI+e.east-e.west;r.west=P.negativePiToPi(e.west+t*a),r.east=P.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};wn.MAX_VALUE=Object.freeze(new wn(-Math.PI,-P.PI_OVER_TWO,Math.PI,P.PI_OVER_TWO));var ae=wn;function Pr(e,t,n,i){this.x=y(e,0),this.y=y(t,0),this.width=y(n,0),this.height=y(i,0)}Pr.packedLength=4;Pr.pack=function(e,t,n){return n=y(n,0),t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Pr.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Pr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Pr.fromPoints=function(e,t){if(l(t)||(t=new Pr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var bQ=new Ri,nwe=new fe,iwe=new fe;Pr.fromRectangle=function(e,t,n){if(l(n)||(n=new Pr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;bQ._ellipsoid=ee.default,t=y(t,bQ);let i=t.project(ae.southwest(e,nwe)),o=t.project(ae.northeast(e,iwe));return U.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Pr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Pr(e.x,e.y,e.width,e.height)};Pr.union=function(e,t,n){l(n)||(n=new Pr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Pr.expand=function(e,t,n){n=Pr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Pr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?jt.OUTSIDE:jt.INTERSECTING};Pr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Pr.prototype.clone=function(e){return Pr.clone(this,e)};Pr.prototype.intersect=function(e){return Pr.intersect(this,e)};Pr.prototype.equals=function(e){return Pr.equals(this,e)};var je=Pr;function V5(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function ie(e,t,n,i){this.red=y(e,1),this.green=y(t,1),this.blue=y(n,1),this.alpha=y(i,1)}ie.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new ie(e.x,e.y,e.z,e.w)};ie.fromBytes=function(e,t,n,i,o){return e=ie.byteToFloat(y(e,255)),t=ie.byteToFloat(y(t,255)),n=ie.byteToFloat(y(n,255)),i=ie.byteToFloat(y(i,255)),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new ie(e,t,n,i)};ie.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new ie(e.red,e.green,e.blue,t)};var U5,z5,hp;Ht.supportsTypedArrays()&&(U5=new ArrayBuffer(4),z5=new Uint32Array(U5),hp=new Uint8Array(U5));ie.fromRgba=function(e,t){return z5[0]=e,ie.fromBytes(hp[0],hp[1],hp[2],hp[3],t)};ie.fromHsl=function(e,t,n,i,o){e=y(e,0)%1,t=y(t,0),n=y(n,0),i=y(i,1);let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=V5(u,c,e+1/3),s=V5(u,c,e),a=V5(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new ie(r,s,a,i)};ie.fromRandom=function(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.red;if(!l(n)){let s=y(e.minimumRed,0),a=y(e.maximumRed,1);n=s+P.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=y(e.minimumGreen,0),a=y(e.maximumGreen,1);i=s+P.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=y(e.minimumBlue,0),a=y(e.maximumBlue,1);o=s+P.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=y(e.minimumAlpha,0),a=y(e.maximumAlpha,1);r=s+P.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new ie(n,i,o,r)};var owe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,rwe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,swe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,awe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;ie.fromCssColorString=function(e,t){l(t)||(t=new ie),e=e.trim();let n=ie[e.toUpperCase()];if(l(n))return ie.clone(n,t),t;let i=owe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(y(i[4],"f"),16)/15,t):(i=rwe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(y(i[4],"ff"),16)/255,t):(i=swe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(y(i[4],"1.0")),t):(i=awe.exec(e),i!==null?ie.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(y(i[4],"1.0")),t):(t=void 0,t))))};ie.packedLength=4;ie.pack=function(e,t,n){return n=y(n,0),t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};ie.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new ie),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};ie.byteToFloat=function(e){return e/255};ie.floatToByte=function(e){return e===1?255:e*256|0};ie.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new ie(e.red,e.green,e.blue,e.alpha)};ie.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};ie.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};ie.prototype.clone=function(e){return ie.clone(this,e)};ie.prototype.equals=function(e){return ie.equals(this,e)};ie.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};ie.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};ie.prototype.toCssColorString=function(){let e=ie.floatToByte(this.red),t=ie.floatToByte(this.green),n=ie.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};ie.prototype.toCssHexString=function(){let e=ie.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=ie.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=ie.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=ie.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};ie.prototype.toBytes=function(e){let t=ie.floatToByte(this.red),n=ie.floatToByte(this.green),i=ie.floatToByte(this.blue),o=ie.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};ie.prototype.toRgba=function(){return hp[0]=ie.floatToByte(this.red),hp[1]=ie.floatToByte(this.green),hp[2]=ie.floatToByte(this.blue),hp[3]=ie.floatToByte(this.alpha),z5[0]};ie.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};ie.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};ie.prototype.withAlpha=function(e,t){return ie.fromAlpha(this,e,t)};ie.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};ie.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};ie.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};ie.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};ie.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};ie.lerp=function(e,t,n,i){return i.red=P.lerp(e.red,t.red,n),i.green=P.lerp(e.green,t.green,n),i.blue=P.lerp(e.blue,t.blue,n),i.alpha=P.lerp(e.alpha,t.alpha,n),i};ie.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};ie.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};ie.ALICEBLUE=Object.freeze(ie.fromCssColorString("#F0F8FF"));ie.ANTIQUEWHITE=Object.freeze(ie.fromCssColorString("#FAEBD7"));ie.AQUA=Object.freeze(ie.fromCssColorString("#00FFFF"));ie.AQUAMARINE=Object.freeze(ie.fromCssColorString("#7FFFD4"));ie.AZURE=Object.freeze(ie.fromCssColorString("#F0FFFF"));ie.BEIGE=Object.freeze(ie.fromCssColorString("#F5F5DC"));ie.BISQUE=Object.freeze(ie.fromCssColorString("#FFE4C4"));ie.BLACK=Object.freeze(ie.fromCssColorString("#000000"));ie.BLANCHEDALMOND=Object.freeze(ie.fromCssColorString("#FFEBCD"));ie.BLUE=Object.freeze(ie.fromCssColorString("#0000FF"));ie.BLUEVIOLET=Object.freeze(ie.fromCssColorString("#8A2BE2"));ie.BROWN=Object.freeze(ie.fromCssColorString("#A52A2A"));ie.BURLYWOOD=Object.freeze(ie.fromCssColorString("#DEB887"));ie.CADETBLUE=Object.freeze(ie.fromCssColorString("#5F9EA0"));ie.CHARTREUSE=Object.freeze(ie.fromCssColorString("#7FFF00"));ie.CHOCOLATE=Object.freeze(ie.fromCssColorString("#D2691E"));ie.CORAL=Object.freeze(ie.fromCssColorString("#FF7F50"));ie.CORNFLOWERBLUE=Object.freeze(ie.fromCssColorString("#6495ED"));ie.CORNSILK=Object.freeze(ie.fromCssColorString("#FFF8DC"));ie.CRIMSON=Object.freeze(ie.fromCssColorString("#DC143C"));ie.CYAN=Object.freeze(ie.fromCssColorString("#00FFFF"));ie.DARKBLUE=Object.freeze(ie.fromCssColorString("#00008B"));ie.DARKCYAN=Object.freeze(ie.fromCssColorString("#008B8B"));ie.DARKGOLDENROD=Object.freeze(ie.fromCssColorString("#B8860B"));ie.DARKGRAY=Object.freeze(ie.fromCssColorString("#A9A9A9"));ie.DARKGREEN=Object.freeze(ie.fromCssColorString("#006400"));ie.DARKGREY=ie.DARKGRAY;ie.DARKKHAKI=Object.freeze(ie.fromCssColorString("#BDB76B"));ie.DARKMAGENTA=Object.freeze(ie.fromCssColorString("#8B008B"));ie.DARKOLIVEGREEN=Object.freeze(ie.fromCssColorString("#556B2F"));ie.DARKORANGE=Object.freeze(ie.fromCssColorString("#FF8C00"));ie.DARKORCHID=Object.freeze(ie.fromCssColorString("#9932CC"));ie.DARKRED=Object.freeze(ie.fromCssColorString("#8B0000"));ie.DARKSALMON=Object.freeze(ie.fromCssColorString("#E9967A"));ie.DARKSEAGREEN=Object.freeze(ie.fromCssColorString("#8FBC8F"));ie.DARKSLATEBLUE=Object.freeze(ie.fromCssColorString("#483D8B"));ie.DARKSLATEGRAY=Object.freeze(ie.fromCssColorString("#2F4F4F"));ie.DARKSLATEGREY=ie.DARKSLATEGRAY;ie.DARKTURQUOISE=Object.freeze(ie.fromCssColorString("#00CED1"));ie.DARKVIOLET=Object.freeze(ie.fromCssColorString("#9400D3"));ie.DEEPPINK=Object.freeze(ie.fromCssColorString("#FF1493"));ie.DEEPSKYBLUE=Object.freeze(ie.fromCssColorString("#00BFFF"));ie.DIMGRAY=Object.freeze(ie.fromCssColorString("#696969"));ie.DIMGREY=ie.DIMGRAY;ie.DODGERBLUE=Object.freeze(ie.fromCssColorString("#1E90FF"));ie.FIREBRICK=Object.freeze(ie.fromCssColorString("#B22222"));ie.FLORALWHITE=Object.freeze(ie.fromCssColorString("#FFFAF0"));ie.FORESTGREEN=Object.freeze(ie.fromCssColorString("#228B22"));ie.FUCHSIA=Object.freeze(ie.fromCssColorString("#FF00FF"));ie.GAINSBORO=Object.freeze(ie.fromCssColorString("#DCDCDC"));ie.GHOSTWHITE=Object.freeze(ie.fromCssColorString("#F8F8FF"));ie.GOLD=Object.freeze(ie.fromCssColorString("#FFD700"));ie.GOLDENROD=Object.freeze(ie.fromCssColorString("#DAA520"));ie.GRAY=Object.freeze(ie.fromCssColorString("#808080"));ie.GREEN=Object.freeze(ie.fromCssColorString("#008000"));ie.GREENYELLOW=Object.freeze(ie.fromCssColorString("#ADFF2F"));ie.GREY=ie.GRAY;ie.HONEYDEW=Object.freeze(ie.fromCssColorString("#F0FFF0"));ie.HOTPINK=Object.freeze(ie.fromCssColorString("#FF69B4"));ie.INDIANRED=Object.freeze(ie.fromCssColorString("#CD5C5C"));ie.INDIGO=Object.freeze(ie.fromCssColorString("#4B0082"));ie.IVORY=Object.freeze(ie.fromCssColorString("#FFFFF0"));ie.KHAKI=Object.freeze(ie.fromCssColorString("#F0E68C"));ie.LAVENDER=Object.freeze(ie.fromCssColorString("#E6E6FA"));ie.LAVENDAR_BLUSH=Object.freeze(ie.fromCssColorString("#FFF0F5"));ie.LAWNGREEN=Object.freeze(ie.fromCssColorString("#7CFC00"));ie.LEMONCHIFFON=Object.freeze(ie.fromCssColorString("#FFFACD"));ie.LIGHTBLUE=Object.freeze(ie.fromCssColorString("#ADD8E6"));ie.LIGHTCORAL=Object.freeze(ie.fromCssColorString("#F08080"));ie.LIGHTCYAN=Object.freeze(ie.fromCssColorString("#E0FFFF"));ie.LIGHTGOLDENRODYELLOW=Object.freeze(ie.fromCssColorString("#FAFAD2"));ie.LIGHTGRAY=Object.freeze(ie.fromCssColorString("#D3D3D3"));ie.LIGHTGREEN=Object.freeze(ie.fromCssColorString("#90EE90"));ie.LIGHTGREY=ie.LIGHTGRAY;ie.LIGHTPINK=Object.freeze(ie.fromCssColorString("#FFB6C1"));ie.LIGHTSEAGREEN=Object.freeze(ie.fromCssColorString("#20B2AA"));ie.LIGHTSKYBLUE=Object.freeze(ie.fromCssColorString("#87CEFA"));ie.LIGHTSLATEGRAY=Object.freeze(ie.fromCssColorString("#778899"));ie.LIGHTSLATEGREY=ie.LIGHTSLATEGRAY;ie.LIGHTSTEELBLUE=Object.freeze(ie.fromCssColorString("#B0C4DE"));ie.LIGHTYELLOW=Object.freeze(ie.fromCssColorString("#FFFFE0"));ie.LIME=Object.freeze(ie.fromCssColorString("#00FF00"));ie.LIMEGREEN=Object.freeze(ie.fromCssColorString("#32CD32"));ie.LINEN=Object.freeze(ie.fromCssColorString("#FAF0E6"));ie.MAGENTA=Object.freeze(ie.fromCssColorString("#FF00FF"));ie.MAROON=Object.freeze(ie.fromCssColorString("#800000"));ie.MEDIUMAQUAMARINE=Object.freeze(ie.fromCssColorString("#66CDAA"));ie.MEDIUMBLUE=Object.freeze(ie.fromCssColorString("#0000CD"));ie.MEDIUMORCHID=Object.freeze(ie.fromCssColorString("#BA55D3"));ie.MEDIUMPURPLE=Object.freeze(ie.fromCssColorString("#9370DB"));ie.MEDIUMSEAGREEN=Object.freeze(ie.fromCssColorString("#3CB371"));ie.MEDIUMSLATEBLUE=Object.freeze(ie.fromCssColorString("#7B68EE"));ie.MEDIUMSPRINGGREEN=Object.freeze(ie.fromCssColorString("#00FA9A"));ie.MEDIUMTURQUOISE=Object.freeze(ie.fromCssColorString("#48D1CC"));ie.MEDIUMVIOLETRED=Object.freeze(ie.fromCssColorString("#C71585"));ie.MIDNIGHTBLUE=Object.freeze(ie.fromCssColorString("#191970"));ie.MINTCREAM=Object.freeze(ie.fromCssColorString("#F5FFFA"));ie.MISTYROSE=Object.freeze(ie.fromCssColorString("#FFE4E1"));ie.MOCCASIN=Object.freeze(ie.fromCssColorString("#FFE4B5"));ie.NAVAJOWHITE=Object.freeze(ie.fromCssColorString("#FFDEAD"));ie.NAVY=Object.freeze(ie.fromCssColorString("#000080"));ie.OLDLACE=Object.freeze(ie.fromCssColorString("#FDF5E6"));ie.OLIVE=Object.freeze(ie.fromCssColorString("#808000"));ie.OLIVEDRAB=Object.freeze(ie.fromCssColorString("#6B8E23"));ie.ORANGE=Object.freeze(ie.fromCssColorString("#FFA500"));ie.ORANGERED=Object.freeze(ie.fromCssColorString("#FF4500"));ie.ORCHID=Object.freeze(ie.fromCssColorString("#DA70D6"));ie.PALEGOLDENROD=Object.freeze(ie.fromCssColorString("#EEE8AA"));ie.PALEGREEN=Object.freeze(ie.fromCssColorString("#98FB98"));ie.PALETURQUOISE=Object.freeze(ie.fromCssColorString("#AFEEEE"));ie.PALEVIOLETRED=Object.freeze(ie.fromCssColorString("#DB7093"));ie.PAPAYAWHIP=Object.freeze(ie.fromCssColorString("#FFEFD5"));ie.PEACHPUFF=Object.freeze(ie.fromCssColorString("#FFDAB9"));ie.PERU=Object.freeze(ie.fromCssColorString("#CD853F"));ie.PINK=Object.freeze(ie.fromCssColorString("#FFC0CB"));ie.PLUM=Object.freeze(ie.fromCssColorString("#DDA0DD"));ie.POWDERBLUE=Object.freeze(ie.fromCssColorString("#B0E0E6"));ie.PURPLE=Object.freeze(ie.fromCssColorString("#800080"));ie.RED=Object.freeze(ie.fromCssColorString("#FF0000"));ie.ROSYBROWN=Object.freeze(ie.fromCssColorString("#BC8F8F"));ie.ROYALBLUE=Object.freeze(ie.fromCssColorString("#4169E1"));ie.SADDLEBROWN=Object.freeze(ie.fromCssColorString("#8B4513"));ie.SALMON=Object.freeze(ie.fromCssColorString("#FA8072"));ie.SANDYBROWN=Object.freeze(ie.fromCssColorString("#F4A460"));ie.SEAGREEN=Object.freeze(ie.fromCssColorString("#2E8B57"));ie.SEASHELL=Object.freeze(ie.fromCssColorString("#FFF5EE"));ie.SIENNA=Object.freeze(ie.fromCssColorString("#A0522D"));ie.SILVER=Object.freeze(ie.fromCssColorString("#C0C0C0"));ie.SKYBLUE=Object.freeze(ie.fromCssColorString("#87CEEB"));ie.SLATEBLUE=Object.freeze(ie.fromCssColorString("#6A5ACD"));ie.SLATEGRAY=Object.freeze(ie.fromCssColorString("#708090"));ie.SLATEGREY=ie.SLATEGRAY;ie.SNOW=Object.freeze(ie.fromCssColorString("#FFFAFA"));ie.SPRINGGREEN=Object.freeze(ie.fromCssColorString("#00FF7F"));ie.STEELBLUE=Object.freeze(ie.fromCssColorString("#4682B4"));ie.TAN=Object.freeze(ie.fromCssColorString("#D2B48C"));ie.TEAL=Object.freeze(ie.fromCssColorString("#008080"));ie.THISTLE=Object.freeze(ie.fromCssColorString("#D8BFD8"));ie.TOMATO=Object.freeze(ie.fromCssColorString("#FF6347"));ie.TURQUOISE=Object.freeze(ie.fromCssColorString("#40E0D0"));ie.VIOLET=Object.freeze(ie.fromCssColorString("#EE82EE"));ie.WHEAT=Object.freeze(ie.fromCssColorString("#F5DEB3"));ie.WHITE=Object.freeze(ie.fromCssColorString("#FFFFFF"));ie.WHITESMOKE=Object.freeze(ie.fromCssColorString("#F5F5F5"));ie.YELLOW=Object.freeze(ie.fromCssColorString("#FFFF00"));ie.YELLOWGREEN=Object.freeze(ie.fromCssColorString("#9ACD32"));ie.TRANSPARENT=Object.freeze(new ie(0,0,0,0));var z=ie;function cwe(){return!0}function lwe(e,t){t=y(t,"This object was destroyed, i.e., destroy() was called.");function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=cwe}var ue=lwe;function Ql(e,t){e=y(e,0),this._near=e,t=y(t,Number.MAX_VALUE),this._far=t}Object.defineProperties(Ql.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Ql.packedLength=2;Ql.pack=function(e,t,n){return n=y(n,0),t[n++]=e.near,t[n]=e.far,t};Ql.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Ql),n.near=e[t++],n.far=e[t],n};Ql.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Ql.clone=function(e,t){if(l(e))return l(t)||(t=new Ql),t.near=e.near,t.far=e.far,t};Ql.prototype.clone=function(e){return Ql.clone(this,e)};Ql.prototype.equals=function(e){return Ql.equals(this,e)};var Lt=Ql;function Zu(e,t,n,i){this.near=y(e,0),this.nearValue=y(t,0),this.far=y(n,1),this.farValue=y(i,0)}Zu.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new Zu(e.near,e.nearValue,e.far,e.farValue)};Zu.packedLength=4;Zu.pack=function(e,t,n){return n=y(n,0),t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};Zu.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Zu),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};Zu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};Zu.prototype.clone=function(e){return Zu.clone(this,e)};Zu.prototype.equals=function(e){return Zu.equals(this,e)};var Vt=Zu;var H0={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},qe=Object.freeze(H0);function Qu(e){return e===H0.CLAMP_TO_GROUND||e===H0.CLAMP_TO_3D_TILE||e===H0.CLAMP_TO_TERRAIN}function RT(e){return e===H0.RELATIVE_TO_GROUND||e===H0.RELATIVE_TO_3D_TILE||e===H0.RELATIVE_TO_TERRAIN}var uwe={CENTER:0,LEFT:1,RIGHT:-1},yi=Object.freeze(uwe);var fwe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},Fn=Object.freeze(fwe);var dwe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),ct=dwe;function hd(){de.throwInstantiationError()}Object.defineProperties(hd.prototype,{isConstant:{get:de.throwInstantiationError},definitionChanged:{get:de.throwInstantiationError}});hd.prototype.getValue=de.throwInstantiationError;hd.prototype.equals=de.throwInstantiationError;hd.equals=function(e,t){return e===t||l(e)&&e.equals(t)};hd.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!hd.equals(e[i],t[i]))return!1;return!0};hd.isConstant=function(e){return!l(e)||e.isConstant};hd.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};hd.getValueOrDefault=function(e,t,n,i){return l(e)?y(e.getValue(t,i),n):n};hd.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var Y=hd;var hwe={LEFT:-1,NONE:0,RIGHT:1},Gr=Object.freeze(hwe);var mwe=z.WHITE,pwe=d.ZERO,_we=qe.NONE,gwe=U.ZERO,ywe=1,xwe=0,bwe=d.ZERO,Twe=yi.CENTER,Cwe=Fn.CENTER,Awe=!1,Ewe=Gr.NONE,Swe=new d,vwe=new z,wwe=new d,Dwe=new U,Iwe=new Vt,Pwe=new Vt,Owe=new Vt,Rwe=new je,Mwe=new Lt;function TQ(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function X_(e,t){t.collectionChanged.addEventListener(X_.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new wt,this._onCollectionChanged(t,t.values,[],[])}X_.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&Y.getValueOrDefault(a._show,e,!0),h;if(f&&(h=Y.getValueOrUndefined(s._position,e,Swe),c=Y.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){H5(r,s,n);continue}Y.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=Y.getValueOrDefault(a._color,e,mwe,vwe),u.eyeOffset=Y.getValueOrDefault(a._eyeOffset,e,pwe,wwe),u.heightReference=Y.getValueOrDefault(a._heightReference,e,_we),u.pixelOffset=Y.getValueOrDefault(a._pixelOffset,e,gwe,Dwe),u.scale=Y.getValueOrDefault(a._scale,e,ywe),u.rotation=Y.getValueOrDefault(a._rotation,e,xwe),u.alignedAxis=Y.getValueOrDefault(a._alignedAxis,e,bwe),u.horizontalOrigin=Y.getValueOrDefault(a._horizontalOrigin,e,Twe),u.verticalOrigin=Y.getValueOrDefault(a._verticalOrigin,e,Cwe),u.width=Y.getValueOrUndefined(a._width,e),u.height=Y.getValueOrUndefined(a._height,e),u.scaleByDistance=Y.getValueOrUndefined(a._scaleByDistance,e,Iwe),u.translucencyByDistance=Y.getValueOrUndefined(a._translucencyByDistance,e,Pwe),u.pixelOffsetScaleByDistance=Y.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,Owe),u.sizeInMeters=Y.getValueOrDefault(a._sizeInMeters,e,Awe),u.distanceDisplayCondition=Y.getValueOrUndefined(a._distanceDisplayCondition,e,Mwe),u.disableDepthTestDistance=Y.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=Y.getValueOrDefault(a._splitDirection,e,Ewe);let p=Y.getValueOrUndefined(a._imageSubRegion,e,Rwe);l(p)&&u.setImageSubRegion(u.image,p)}return!0};X_.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return ct.FAILED;let i=n.billboard;if(i.heightReference===qe.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return ct.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,ct.DONE};X_.prototype.isDestroyed=function(){return!1};X_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(X_.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};X_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new TQ(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new TQ(r)):(H5(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],H5(s.get(r.id),r,a),s.remove(r.id)};function H5(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var iO=X_;function Lwe(e,t){this.start=y(e,0),this.stop=y(t,0)}var qa=Lwe;function hn(e,t){this.center=d.clone(y(e,d.ZERO)),this.radius=y(t,0)}var j5=new d,q5=new d,Y5=new d,X5=new d,K5=new d,$5=new d,Z5=new d,ia=new d,Q5=new d,J5=new d,e6=new d,t6=new d,Nwe=4/3*P.PI;hn.fromPoints=function(e,t){if(l(t)||(t=new hn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],Z5),i=d.clone(n,j5),o=d.clone(n,q5),r=d.clone(n,Y5),s=d.clone(n,X5),a=d.clone(n,K5),c=d.clone(n,$5),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let O=n.x,M=n.y,N=n.z;O<i.x&&d.clone(n,i),O>s.x&&d.clone(n,s),M<o.y&&d.clone(n,o),M>a.y&&d.clone(n,a),N<r.z&&d.clone(n,r),N>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,ia)),p=d.magnitudeSquared(d.subtract(a,o,ia)),g=d.magnitudeSquared(d.subtract(c,r,ia)),m=i,x=s,b=h;p>b&&(b=p,m=o,x=a),g>b&&(b=g,m=r,x=c);let T=Q5;T.x=(m.x+x.x)*.5,T.y=(m.y+x.y)*.5,T.z=(m.z+x.z)*.5;let C=d.magnitudeSquared(d.subtract(x,T,ia)),A=Math.sqrt(C),E=J5;E.x=i.x,E.y=o.y,E.z=r.z;let v=e6;v.x=s.x,v.y=a.y,v.z=c.z;let D=d.midpoint(E,v,t6),R=0;for(f=0;f<u;f++){d.clone(e[f],n);let O=d.magnitude(d.subtract(n,D,ia));O>R&&(R=O);let M=d.magnitudeSquared(d.subtract(n,T,ia));if(M>C){let N=Math.sqrt(M);A=(A+N)*.5,C=A*A;let _=N-A;T.x=(A*T.x+_*n.x)/N,T.y=(A*T.y+_*n.y)/N,T.z=(A*T.z+_*n.z)/N}}return A<R?(d.clone(T,t.center),t.radius=A):(d.clone(D,t.center),t.radius=R),t};var CQ=new Ri,Fwe=new d,Bwe=new d,G5=new fe,W5=new fe;hn.fromRectangle2D=function(e,t,n){return hn.fromRectangleWithHeights2D(e,t,0,0,n)};hn.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new hn),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;CQ._ellipsoid=ee.default,t=y(t,CQ),ae.southwest(e,G5),G5.height=n,ae.northeast(e,W5),W5.height=i;let r=t.project(G5,Fwe),s=t.project(W5,Bwe),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var kwe=[];hn.fromRectangle3D=function(e,t,n,i){if(t=y(t,ee.default),n=y(n,0),l(i)||(i=new hn),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,kwe);return hn.fromPoints(o,i)};hn.fromVertices=function(e,t,n,i){if(l(i)||(i=new hn),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=y(t,d.ZERO),n=y(n,3);let o=Z5;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,j5),s=d.clone(o,q5),a=d.clone(o,Y5),c=d.clone(o,X5),u=d.clone(o,K5),f=d.clone(o,$5),h=e.length,p;for(p=0;p<h;p+=n){let N=e[p]+t.x,_=e[p+1]+t.y,S=e[p+2]+t.z;o.x=N,o.y=_,o.z=S,N<r.x&&d.clone(o,r),N>c.x&&d.clone(o,c),_<s.y&&d.clone(o,s),_>u.y&&d.clone(o,u),S<a.z&&d.clone(o,a),S>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,ia)),m=d.magnitudeSquared(d.subtract(u,s,ia)),x=d.magnitudeSquared(d.subtract(f,a,ia)),b=r,T=c,C=g;m>C&&(C=m,b=s,T=u),x>C&&(C=x,b=a,T=f);let A=Q5;A.x=(b.x+T.x)*.5,A.y=(b.y+T.y)*.5,A.z=(b.z+T.z)*.5;let E=d.magnitudeSquared(d.subtract(T,A,ia)),v=Math.sqrt(E),D=J5;D.x=r.x,D.y=s.y,D.z=a.z;let R=e6;R.x=c.x,R.y=u.y,R.z=f.z;let O=d.midpoint(D,R,t6),M=0;for(p=0;p<h;p+=n){o.x=e[p]+t.x,o.y=e[p+1]+t.y,o.z=e[p+2]+t.z;let N=d.magnitude(d.subtract(o,O,ia));N>M&&(M=N);let _=d.magnitudeSquared(d.subtract(o,A,ia));if(_>E){let S=Math.sqrt(_);v=(v+S)*.5,E=v*v;let w=S-v;A.x=(v*A.x+w*o.x)/S,A.y=(v*A.y+w*o.y)/S,A.z=(v*A.z+w*o.z)/S}}return v<M?(d.clone(A,i.center),i.radius=v):(d.clone(O,i.center),i.radius=M),i};hn.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new hn),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=Z5;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,j5),r=d.clone(i,q5),s=d.clone(i,Y5),a=d.clone(i,X5),c=d.clone(i,K5),u=d.clone(i,$5),f=e.length,h;for(h=0;h<f;h+=3){let M=e[h]+t[h],N=e[h+1]+t[h+1],_=e[h+2]+t[h+2];i.x=M,i.y=N,i.z=_,M<o.x&&d.clone(i,o),M>a.x&&d.clone(i,a),N<r.y&&d.clone(i,r),N>c.y&&d.clone(i,c),_<s.z&&d.clone(i,s),_>u.z&&d.clone(i,u)}let p=d.magnitudeSquared(d.subtract(a,o,ia)),g=d.magnitudeSquared(d.subtract(c,r,ia)),m=d.magnitudeSquared(d.subtract(u,s,ia)),x=o,b=a,T=p;g>T&&(T=g,x=r,b=c),m>T&&(T=m,x=s,b=u);let C=Q5;C.x=(x.x+b.x)*.5,C.y=(x.y+b.y)*.5,C.z=(x.z+b.z)*.5;let A=d.magnitudeSquared(d.subtract(b,C,ia)),E=Math.sqrt(A),v=J5;v.x=o.x,v.y=r.y,v.z=s.z;let D=e6;D.x=a.x,D.y=c.y,D.z=u.z;let R=d.midpoint(v,D,t6),O=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let M=d.magnitude(d.subtract(i,R,ia));M>O&&(O=M);let N=d.magnitudeSquared(d.subtract(i,C,ia));if(N>A){let _=Math.sqrt(N);E=(E+_)*.5,A=E*E;let S=_-E;C.x=(E*C.x+S*i.x)/_,C.y=(E*C.y+S*i.y)/_,C.z=(E*C.z+S*i.z)/_}}return E<O?(d.clone(C,n.center),n.radius=E):(d.clone(R,n.center),n.radius=O),n};hn.fromCornerPoints=function(e,t,n){l(n)||(n=new hn);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};hn.fromEllipsoid=function(e,t){return l(t)||(t=new hn),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var Vwe=new d;hn.fromBoundingSpheres=function(e,t){if(l(t)||(t=new hn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return hn.clone(e[0],t);if(n===2)return hn.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=hn.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,Vwe)+a.radius)}return t.radius=s,t};var Uwe=new d,zwe=new d,Hwe=new d;hn.fromOrientedBoundingBox=function(e,t){l(t)||(t=new hn);let n=e.halfAxes,i=Z.getColumn(n,0,Uwe),o=Z.getColumn(n,1,zwe),r=Z.getColumn(n,2,Hwe);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var Gwe=new d,Wwe=new d;hn.fromTransformation=function(e,t){l(t)||(t=new hn);let n=F.getTranslation(e,Gwe),i=F.getScale(e,Wwe),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};hn.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new hn(e.center,e.radius)};hn.packedLength=4;hn.pack=function(e,t,n){n=y(n,0);let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};hn.unpack=function(e,t,n){t=y(t,0),l(n)||(n=new hn);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var jwe=new d,qwe=new d;hn.union=function(e,t,n){l(n)||(n=new hn);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,jwe),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,qwe);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var Ywe=new d;hn.expand=function(e,t,n){n=hn.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,Ywe));return i>n.radius&&(n.radius=i),n};hn.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?jt.OUTSIDE:r<i?jt.INTERSECTING:jt.INSIDE};hn.transform=function(e,t,n){return l(n)||(n=new hn),n.center=F.multiplyByPoint(t,e.center,n.center),n.radius=F.getMaximumScale(t)*e.radius,n};var Xwe=new d;hn.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,Xwe),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};hn.transformWithoutScale=function(e,t,n){return l(n)||(n=new hn),n.center=F.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var Kwe=new d;hn.computePlaneDistances=function(e,t,n,i){l(i)||(i=new qa);let o=d.subtract(e.center,t,Kwe),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var AQ=new d,$we=new d,Zwe=new d,Qwe=new d,Jwe=new d,eDe=new fe,SQ=new Array(8);for(let e=0;e<8;++e)SQ[e]=new d;var EQ=new Ri;hn.projectTo2D=function(e,t,n){EQ._ellipsoid=ee.default,t=y(t,EQ);let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,AQ):s=i.geodeticSurfaceNormal(o,AQ);let a=d.cross(d.UNIT_Z,s,$we);d.normalize(a,a);let c=d.cross(s,a,Zwe);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,Jwe),f=d.negate(a,Qwe),h=SQ,p=h[0];d.add(s,c,p),d.add(p,a,p),p=h[1],d.add(s,c,p),d.add(p,f,p),p=h[2],d.add(s,u,p),d.add(p,f,p),p=h[3],d.add(s,u,p),d.add(p,a,p),d.negate(s,s),p=h[4],d.add(s,c,p),d.add(p,a,p),p=h[5],d.add(s,c,p),d.add(p,f,p),p=h[6],d.add(s,u,p),d.add(p,f,p),p=h[7],d.add(s,u,p),d.add(p,a,p);let g=h.length;for(let T=0;T<g;++T){let C=h[T];d.add(o,C,C);let A=i.cartesianToCartographic(C,eDe);t.project(A,C)}n=hn.fromPoints(h,n),o=n.center;let m=o.x,x=o.y,b=o.z;return o.x=b,o.y=m,o.z=x,n};hn.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};hn.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};hn.prototype.intersectPlane=function(e){return hn.intersectPlane(this,e)};hn.prototype.distanceSquaredTo=function(e){return hn.distanceSquaredTo(this,e)};hn.prototype.computePlaneDistances=function(e,t,n){return hn.computePlaneDistances(this,e,t,n)};hn.prototype.isOccluded=function(e){return hn.isOccluded(this,e)};hn.prototype.equals=function(e){return hn.equals(this,e)};hn.prototype.clone=function(e){return hn.clone(this,e)};hn.prototype.volume=function(){let e=this.radius;return Nwe*e*e*e};var ce=hn;var tDe={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},te=Object.freeze(tDe);var Cn={BYTE:te.BYTE,UNSIGNED_BYTE:te.UNSIGNED_BYTE,SHORT:te.SHORT,UNSIGNED_SHORT:te.UNSIGNED_SHORT,INT:te.INT,UNSIGNED_INT:te.UNSIGNED_INT,FLOAT:te.FLOAT,DOUBLE:te.DOUBLE};Cn.getSizeInBytes=function(e){switch(e){case Cn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Cn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Cn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Cn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Cn.INT:return Int32Array.BYTES_PER_ELEMENT;case Cn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Cn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Cn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Cn.fromTypedArray=function(e){if(e instanceof Int8Array)return Cn.BYTE;if(e instanceof Uint8Array)return Cn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Cn.SHORT;if(e instanceof Uint16Array)return Cn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Cn.INT;if(e instanceof Uint32Array)return Cn.UNSIGNED_INT;if(e instanceof Float32Array)return Cn.FLOAT;if(e instanceof Float64Array)return Cn.DOUBLE};Cn.validate=function(e){return l(e)&&(e===Cn.BYTE||e===Cn.UNSIGNED_BYTE||e===Cn.SHORT||e===Cn.UNSIGNED_SHORT||e===Cn.INT||e===Cn.UNSIGNED_INT||e===Cn.FLOAT||e===Cn.DOUBLE)};Cn.createTypedArray=function(e,t){switch(e){case Cn.BYTE:return new Int8Array(t);case Cn.UNSIGNED_BYTE:return new Uint8Array(t);case Cn.SHORT:return new Int16Array(t);case Cn.UNSIGNED_SHORT:return new Uint16Array(t);case Cn.INT:return new Int32Array(t);case Cn.UNSIGNED_INT:return new Uint32Array(t);case Cn.FLOAT:return new Float32Array(t);case Cn.DOUBLE:return new Float64Array(t)}};Cn.createArrayBufferView=function(e,t,n,i){switch(n=y(n,0),i=y(i,(t.byteLength-n)/Cn.getSizeInBytes(e)),e){case Cn.BYTE:return new Int8Array(t,n,i);case Cn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Cn.SHORT:return new Int16Array(t,n,i);case Cn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Cn.INT:return new Int32Array(t,n,i);case Cn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Cn.FLOAT:return new Float32Array(t,n,i);case Cn.DOUBLE:return new Float64Array(t,n,i)}};Cn.fromName=function(e){switch(e){case"BYTE":return Cn.BYTE;case"UNSIGNED_BYTE":return Cn.UNSIGNED_BYTE;case"SHORT":return Cn.SHORT;case"UNSIGNED_SHORT":return Cn.UNSIGNED_SHORT;case"INT":return Cn.INT;case"UNSIGNED_INT":return Cn.UNSIGNED_INT;case"FLOAT":return Cn.FLOAT;case"DOUBLE":return Cn.DOUBLE}};var X=Object.freeze(Cn);var nDe={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},md=Object.freeze(nDe);function Xt(e,t,n,i){this[0]=y(e,0),this[1]=y(n,0),this[2]=y(t,0),this[3]=y(i,0)}Xt.packedLength=4;Xt.pack=function(e,t,n){return n=y(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};Xt.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Xt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};Xt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Xt.pack(e[o],t,o*4);return t};Xt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=Xt.unpack(e,i,t[o])}return t};Xt.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new Xt(e[0],e[2],e[1],e[3])};Xt.fromArray=Xt.unpack;Xt.fromColumnMajorArray=function(e,t){return Xt.clone(e,t)};Xt.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new Xt(e[0],e[1],e[2],e[3])};Xt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new Xt(e.x,0,0,e.y)};Xt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new Xt(e,0,0,e)};Xt.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new Xt(n,-i,i,n)};Xt.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};Xt.getElementIndex=function(e,t){return e*2+t};Xt.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};Xt.setColumn=function(e,t,n,i){i=Xt.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};Xt.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};Xt.setRow=function(e,t,n,i){return i=Xt.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var iDe=new U;Xt.setScale=function(e,t,n){let i=Xt.getScale(e,iDe),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var oDe=new U;Xt.setUniformScale=function(e,t,n){let i=Xt.getScale(e,oDe),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var vQ=new U;Xt.getScale=function(e,t){return t.x=U.magnitude(U.fromElements(e[0],e[1],vQ)),t.y=U.magnitude(U.fromElements(e[2],e[3],vQ)),t};var wQ=new U;Xt.getMaximumScale=function(e){return Xt.getScale(e,wQ),U.maximumComponent(wQ)};var rDe=new U;Xt.setRotation=function(e,t,n){let i=Xt.getScale(e,rDe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var sDe=new U;Xt.getRotation=function(e,t){let n=Xt.getScale(e,sDe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};Xt.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};Xt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};Xt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};Xt.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};Xt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};Xt.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};Xt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};Xt.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};Xt.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};Xt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};Xt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};Xt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};Xt.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};Xt.IDENTITY=Object.freeze(new Xt(1,0,0,1));Xt.ZERO=Object.freeze(new Xt(0,0,0,0));Xt.COLUMN0ROW0=0;Xt.COLUMN0ROW1=1;Xt.COLUMN1ROW0=2;Xt.COLUMN1ROW1=3;Object.defineProperties(Xt.prototype,{length:{get:function(){return Xt.packedLength}}});Xt.prototype.clone=function(e){return Xt.clone(this,e)};Xt.prototype.equals=function(e){return Xt.equals(this,e)};Xt.prototype.equalsEpsilon=function(e,t){return Xt.equalsEpsilon(this,e,t)};Xt.prototype.toString=function(){return`(${this[0]}, ${this[2]})
(${this[1]}, ${this[3]})`};var Mi=Xt;var va={POINTS:te.POINTS,LINES:te.LINES,LINE_LOOP:te.LINE_LOOP,LINE_STRIP:te.LINE_STRIP,TRIANGLES:te.TRIANGLES,TRIANGLE_STRIP:te.TRIANGLE_STRIP,TRIANGLE_FAN:te.TRIANGLE_FAN};va.isLines=function(e){return e===va.LINES||e===va.LINE_LOOP||e===va.LINE_STRIP};va.isTriangles=function(e){return e===va.TRIANGLES||e===va.TRIANGLE_STRIP||e===va.TRIANGLE_FAN};va.validate=function(e){return e===va.POINTS||e===va.LINES||e===va.LINE_LOOP||e===va.LINE_STRIP||e===va.TRIANGLES||e===va.TRIANGLE_STRIP||e===va.TRIANGLE_FAN};var Ne=Object.freeze(va);function n6(e){e=y(e,y.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=y(e.primitiveType,Ne.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=y(e.geometryType,md.NONE),this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}n6.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var aDe=new fe,cDe=new d,DQ=new F,lDe=[new fe,new fe,new fe],uDe=[new U,new U,new U],fDe=[new U,new U,new U],dDe=new d,hDe=new Le,mDe=new F,pDe=new Mi;n6._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,aDe),s=fe.toCartesian(r,n,cDe),a=Mt.eastNorthUpToFixedFrame(s,n,DQ),c=F.inverse(a,DQ),u=uDe,f=lDe;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=dDe;for(o=0;o<3;o++)fe.toCartesian(f[o],n,h),h=F.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let p=Le.fromAxisAngle(d.UNIT_Z,-t,hDe),g=Z.fromQuaternion(p,mDe),m=e.length,x=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY,T=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=F.multiplyByPointAsVector(c,e[o],h),h=Z.multiplyByVector(g,h,h),x=Math.min(x,h.x),b=Math.min(b,h.y),T=Math.max(T,h.x),C=Math.max(C,h.y);let A=Mi.fromRotation(t,pDe),E=fDe;E[0].x=x,E[0].y=b,E[1].x=x,E[1].y=C,E[2].x=T,E[2].y=b;let v=u[0],D=u[2].x-v.x,R=u[1].y-v.y;for(o=0;o<3;o++){let S=E[o];Mi.multiplyByVector(A,S,S),S.x=(S.x-v.x)/D,S.y=(S.y-v.y)/R}let O=E[0],M=E[1],N=E[2],_=new Array(6);return U.pack(O,_),U.pack(M,_,2),U.pack(N,_,4),_};var ut=n6;function _De(e){e=y(e,y.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=y(e.normalize,!1),this.values=e.values}var Se=_De;function gDe(e){e=y(e,y.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var mn=gDe;var yDe={NONE:0,TOP:1,ALL:2},rn=Object.freeze(yDe);function is(e){e=y(e,y.EMPTY_OBJECT),this.position=y(e.position,!1),this.normal=y(e.normal,!1),this.st=y(e.st,!1),this.bitangent=y(e.bitangent,!1),this.tangent=y(e.tangent,!1),this.color=y(e.color,!1)}is.POSITION_ONLY=Object.freeze(new is({position:!0}));is.POSITION_AND_NORMAL=Object.freeze(new is({position:!0,normal:!0}));is.POSITION_NORMAL_AND_ST=Object.freeze(new is({position:!0,normal:!0,st:!0}));is.POSITION_AND_ST=Object.freeze(new is({position:!0,st:!0}));is.POSITION_AND_COLOR=Object.freeze(new is({position:!0,color:!0}));is.ALL=Object.freeze(new is({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));is.DEFAULT=is.POSITION_NORMAL_AND_ST;is.packedLength=6;is.pack=function(e,t,n){return n=y(n,0),t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};is.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new is),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};is.clone=function(e,t){if(l(e))return l(t)||(t=new is),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Ie=is;var xDe=new d;function Jl(e){e=y(e,y.EMPTY_OBJECT);let t=e.minimum,n=e.maximum,i=y(e.vertexFormat,Ie.DEFAULT);this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}Jl.fromDimensions=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Jl({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};Jl.fromAxisAlignedBoundingBox=function(e){return new Jl({minimum:e.minimum,maximum:e.maximum})};Jl.packedLength=2*d.packedLength+Ie.packedLength+1;Jl.pack=function(e,t,n){return n=y(n,0),d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Ie.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Ie.packedLength]=y(e._offsetAttribute,-1),t};var PQ=new d,OQ=new d,RQ=new Ie,IQ={minimum:PQ,maximum:OQ,vertexFormat:RQ,offsetAttribute:void 0};Jl.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,PQ),o=d.unpack(e,t+d.packedLength,OQ),r=Ie.unpack(e,t+2*d.packedLength,RQ),s=e[t+2*d.packedLength+Ie.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(IQ.offsetAttribute=s===-1?void 0:s,new Jl(IQ))};Jl.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new mn,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(6*4*3),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(6*2*3),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(8*3),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(6*2*3),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,xDe),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===rn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ut({attributes:o,indices:r,primitiveType:Ne.TRIANGLES,boundingSphere:new ce(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var i6;Jl.getUnitBox=function(){return l(i6)||(i6=Jl.createGeometry(Jl.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Ie.POSITION_ONLY}))),i6};var Ya=Jl;var bDe=new d;function Ph(e){e=y(e,y.EMPTY_OBJECT);let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Ph.fromDimensions=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Ph({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Ph.fromAxisAlignedBoundingBox=function(e){return new Ph({minimum:e.minimum,maximum:e.maximum})};Ph.packedLength=2*d.packedLength+1;Ph.pack=function(e,t,n){return n=y(n,0),d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=y(e._offsetAttribute,-1),t};var LQ=new d,NQ=new d,MQ={minimum:LQ,maximum:NQ,offsetAttribute:void 0};Ph.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,LQ),o=d.unpack(e,t+d.packedLength,NQ),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(MQ.offsetAttribute=r===-1?void 0:r,new Ph(MQ))};Ph.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new mn,o=new Uint16Array(12*2),r=new Float64Array(8*3);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,bDe),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===rn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ut({attributes:i,indices:o,primitiveType:Ne.LINES,boundingSphere:new ce(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var Oh=Ph;function MT(e,t,n,i){e=y(e,1),t=y(t,1),n=y(n,1),i=y(i,1),this.value=new Uint8Array([z.floatToByte(e),z.floatToByte(t),z.floatToByte(n),z.floatToByte(i)])}Object.defineProperties(MT.prototype,{componentDatatype:{get:function(){return X.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});MT.fromColor=function(e){return new MT(e.red,e.green,e.blue,e.alpha)};MT.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};MT.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var Wt=MT;function lv(e,t){e=y(e,0),t=y(t,Number.MAX_VALUE),this.value=new Float32Array([e,t])}Object.defineProperties(lv.prototype,{componentDatatype:{get:function(){return X.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});lv.fromDistanceDisplayCondition=function(e){return new lv(e.near,e.far)};lv.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Un=lv;function TDe(e){e=y(e,y.EMPTY_OBJECT),this.geometry=e.geometry,this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=y(e.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Dt=TDe;function qo(e){e=y(e,y.EMPTY_OBJECT),this.start=l(e.start)?$.clone(e.start):new $,this.stop=l(e.stop)?$.clone(e.stop):new $,this.data=e.data,this.isStartIncluded=y(e.isStartIncluded,!0),this.isStopIncluded=y(e.isStopIncluded,!0)}Object.defineProperties(qo.prototype,{isEmpty:{get:function(){let e=$.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var LT={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};qo.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new de("options.iso8601 is an invalid ISO 8601 interval.");let i=$.fromIso8601(n[0]),o=$.fromIso8601(n[1]),r=y(e.isStartIncluded,!0),s=y(e.isStopIncluded,!0),a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(LT.start=i,LT.stop=o,LT.isStartIncluded=r,LT.isStopIncluded=s,LT.data=a,new qo(LT))};qo.toIso8601=function(e,t){return`${$.toIso8601(e.start,t)}/${$.toIso8601(e.stop,t)}`};qo.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new qo(e)};qo.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&$.equals(e.start,t.start)&&$.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};qo.equalsEpsilon=function(e,t,n,i){return n=y(n,0),e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&$.equalsEpsilon(e.start,t.start,n)&&$.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};qo.intersect=function(e,t,n,i){if(!l(t))return qo.clone(qo.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=$.greaterThanOrEquals(s,o)&&$.greaterThanOrEquals(r,s),u=!c&&$.lessThanOrEquals(s,o)&&$.lessThanOrEquals(o,a);if(!c&&!u)return qo.clone(qo.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,p=t.isStartIncluded,g=t.isStopIncluded,m=$.lessThan(r,a);return l(n)||(n=new qo),n.start=c?s:o,n.isStartIncluded=f&&p||!$.equals(s,o)&&(c&&p||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!$.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};qo.contains=function(e,t){if(e.isEmpty)return!1;let n=$.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=$.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};qo.prototype.clone=function(e){return qo.clone(this,e)};qo.prototype.equals=function(e,t){return qo.equals(this,e,t)};qo.prototype.equalsEpsilon=function(e,t,n){return qo.equalsEpsilon(this,e,t,n)};qo.prototype.toString=function(){return qo.toIso8601(this)};qo.EMPTY=Object.freeze(new qo({start:new $,stop:new $,isStartIncluded:!1,isStopIncluded:!1}));var An=qo;var FQ=Object.freeze($.fromIso8601("0000-01-01T00:00:00Z")),BQ=Object.freeze($.fromIso8601("9999-12-31T24:00:00Z")),CDe=Object.freeze(new An({start:FQ,stop:BQ})),ADe={MINIMUM_VALUE:FQ,MAXIMUM_VALUE:BQ,MAXIMUM_INTERVAL:CDe},ze=ADe;function uv(e,t,n){e=y(e,0),t=y(t,0),n=y(n,0),this.value=new Float32Array([e,t,n])}Object.defineProperties(uv.prototype,{componentDatatype:{get:function(){return X.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});uv.fromCartesian3=function(e){return new uv(e.x,e.y,e.z)};uv.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var to=uv;function oO(e){e=y(e,!0),this.value=oO.toValue(e)}Object.defineProperties(oO.prototype,{componentDatatype:{get:function(){return X.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});oO.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var gn=oO;var rO=`in vec3 v_positionEC;
in vec3 v_normalEC;
in vec3 v_tangentEC;
in vec3 v_bitangentEC;
in vec2 v_st;
void main()
{
vec3 positionToEyeEC = -v_positionEC;
mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC);
vec3 normalEC = normalize(v_normalEC);
#ifdef FACE_FORWARD
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
#endif
czm_materialInput materialInput;
materialInput.normalEC = normalEC;
materialInput.tangentToEyeMatrix = tangentToEyeMatrix;
materialInput.positionToEyeEC = positionToEyeEC;
materialInput.st = v_st;
czm_material material = czm_getMaterial(materialInput);
#ifdef FLAT
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#else
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
#endif
}
`;var sO=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 normal;
in vec3 tangent;
in vec3 bitangent;
in vec2 st;
in float batchId;
out vec3 v_positionEC;
out vec3 v_normalEC;
out vec3 v_tangentEC;
out vec3 v_bitangentEC;
out vec2 v_st;
void main()
{
vec4 p = czm_computePosition();
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
v_normalEC = czm_normal * normal; // normal in eye coordinates
v_tangentEC = czm_normal * tangent; // tangent in eye coordinates
v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates
v_st = st;
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;var aO=`in vec3 v_positionEC;
in vec3 v_normalEC;
void main()
{
vec3 positionToEyeEC = -v_positionEC;
vec3 normalEC = normalize(v_normalEC);
#ifdef FACE_FORWARD
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
#endif
czm_materialInput materialInput;
materialInput.normalEC = normalEC;
materialInput.positionToEyeEC = positionToEyeEC;
czm_material material = czm_getMaterial(materialInput);
#ifdef FLAT
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#else
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
#endif
}
`;var cO=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 normal;
in float batchId;
out vec3 v_positionEC;
out vec3 v_normalEC;
void main()
{
vec4 p = czm_computePosition();
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
v_normalEC = czm_normal * normal; // normal in eye coordinates
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;var lO=`in vec3 v_positionEC;
in vec3 v_normalEC;
in vec2 v_st;
void main()
{
vec3 positionToEyeEC = -v_positionEC;
vec3 normalEC = normalize(v_normalEC);
#ifdef FACE_FORWARD
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
#endif
czm_materialInput materialInput;
materialInput.normalEC = normalEC;
materialInput.positionToEyeEC = positionToEyeEC;
materialInput.st = v_st;
czm_material material = czm_getMaterial(materialInput);
#ifdef FLAT
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#else
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
#endif
}
`;var uO=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 normal;
in vec2 st;
in float batchId;
out vec3 v_positionEC;
out vec3 v_normalEC;
out vec2 v_st;
void main()
{
vec4 p = czm_computePosition();
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
v_normalEC = czm_normal * normal; // normal in eye coordinates
v_st = st;
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;var EDe={ADD:te.FUNC_ADD,SUBTRACT:te.FUNC_SUBTRACT,REVERSE_SUBTRACT:te.FUNC_REVERSE_SUBTRACT,MIN:te.MIN,MAX:te.MAX},Xa=Object.freeze(EDe);var SDe={ZERO:te.ZERO,ONE:te.ONE,SOURCE_COLOR:te.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:te.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:te.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:te.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:te.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:te.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:te.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:te.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:te.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:te.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:te.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:te.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:te.SRC_ALPHA_SATURATE},Do=Object.freeze(SDe);var vDe={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.SOURCE_ALPHA,functionSourceAlpha:Do.ONE,functionDestinationRgb:Do.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Do.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.ONE,functionSourceAlpha:Do.ONE,functionDestinationRgb:Do.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Do.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.SOURCE_ALPHA,functionSourceAlpha:Do.ONE,functionDestinationRgb:Do.ONE,functionDestinationAlpha:Do.ONE})},fn=Object.freeze(vDe);var wDe={FRONT:te.FRONT,BACK:te.BACK,FRONT_AND_BACK:te.FRONT_AND_BACK},xi=Object.freeze(wDe);function NT(e){e=y(e,y.EMPTY_OBJECT),this.material=e.material,this.translucent=y(e.translucent,!0),this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=y(e.closed,!1)}Object.defineProperties(NT.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});NT.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(`
`)};NT.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};NT.prototype.getRenderState=function(){let e=this.isTranslucent(),t=He(this.renderState,!1);return e?(t.depthMask=!1,t.blending=fn.ALPHA_BLEND):t.depthMask=!0,t};NT.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=fn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:xi.BACK}),l(n)&&(i=At(n,i,!0)),i};var ro=NT;function DDe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Yn=DDe;function FT(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties(FT.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});FT.clone=function(e){if(l(e))return new FT(e._format,e._datatype,e._width,e._height,e._buffer)};FT.prototype.clone=function(){return FT.clone(this)};var fO=FT;var kQ=Hr($l(),1);function VQ(){if(!l(oa._canTransferArrayBuffer)){let e=s6("transferTypedArrayTest");e.postMessage=y(e.webkitPostMessage,e.postMessage);let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return oa._canTransferArrayBuffer=!1,oa._canTransferArrayBuffer}oa._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),oa._canTransferArrayBuffer=s}})}return oa._canTransferArrayBuffer}var r6=new me;function o6(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function s6(e){let t=new kQ.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(F0(e))s=e;else if(!n){let a=nn(`${oa._workerModulePrefix}/${i}.js`);F0(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=o6(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=`
importScripts("${o6(CESIUM_WORKERS)}");
CesiumWorkers["${i}"]();
`;return r=o6(a),new Worker(r,o)}if(r=e,n||(r=nn(`${oa._workerModulePrefix+i}.js`)),!Ht.supportsEsmWebWorkers())throw new se("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function IDe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!Ht.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new se(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=nn(t.fallbackModulePath),n}n.wasmBinaryFile=nn(t.wasmBinaryFile);let i=await Ee.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function oa(e,t){this._workerPath=e,this._maximumActiveTasks=y(t,Number.POSITIVE_INFINITY),this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var PDe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new se(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new de(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),r6.raiseEvent(s),i(s)}else r6.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},ODe=[];async function RDe(e,t,n){let i=await Promise.resolve(VQ());l(n)?i||(n.length=0):n=ODe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",PDe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:nn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function MDe(e,t,n){++e._activeTasks;try{let i=await RDe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}oa.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=s6(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return MDe(this,e,t)};oa.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=s6(this._workerPath),i=await IDe(this,e),o=await Promise.resolve(VQ()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new se("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};oa.prototype.isDestroyed=function(){return!1};oa.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};oa.taskCompletedEvent=r6;oa._defaultWorkerModulePrefix="Workers/";oa._workerModulePrefix=oa._defaultWorkerModulePrefix;oa._canTransferArrayBuffer=void 0;var bi=oa;function mp(){}mp._transcodeTaskProcessor=new bi("transcodeKTX2",Number.POSITIVE_INFINITY);mp._readyPromise=void 0;function LDe(){let e=mp._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return mp._transcodeTaskProcessor;throw new se("KTX2 transcoder could not be initialized.")});mp._readyPromise=e}mp.transcode=function(e,t){return l(mp._readyPromise)||LDe(),mp._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new fO(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var dO=mp;var UQ;zQ.setKTX2SupportedFormats=function(e,t,n,i,o,r){UQ={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function zQ(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=Ee.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return dO.transcode(n,UQ)})}var eu=zQ;var no={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};no.getMathType=function(e){switch(e){case no.SCALAR:return Number;case no.VEC2:return U;case no.VEC3:return d;case no.VEC4:return oe;case no.MAT2:return Mi;case no.MAT3:return Z;case no.MAT4:return F}};no.getNumberOfComponents=function(e){switch(e){case no.SCALAR:return 1;case no.VEC2:return 2;case no.VEC3:return 3;case no.VEC4:case no.MAT2:return 4;case no.MAT3:return 9;case no.MAT4:return 16}};no.getAttributeLocationCount=function(e){switch(e){case no.SCALAR:case no.VEC2:case no.VEC3:case no.VEC4:return 1;case no.MAT2:return 2;case no.MAT3:return 3;case no.MAT4:return 4}};no.getGlslType=function(e){switch(e){case no.SCALAR:return"float";case no.VEC2:return"vec2";case no.VEC3:return"vec3";case no.VEC4:return"vec4";case no.MAT2:return"mat2";case no.MAT3:return"mat3";case no.MAT4:return"mat4"}};var on=Object.freeze(no);var HQ=1/256,GQ=256,go={};go.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*P.signNotZero(i),n.y=(1-Math.abs(i))*P.signNotZero(o)}return n.x=P.toSNorm(n.x,t),n.y=P.toSNorm(n.y,t),n};go.octEncode=function(e,t){return go.octEncodeInRange(e,255,t)};var fv=new U,WQ=new Uint8Array(1);function hO(e){return WQ[0]=e,WQ[0]}go.octEncodeToCartesian4=function(e,t){return go.octEncodeInRange(e,65535,fv),t.x=hO(fv.x*HQ),t.y=hO(fv.x),t.z=hO(fv.y*HQ),t.w=hO(fv.y),t};go.octDecodeInRange=function(e,t,n,i){if(i.x=P.fromSNorm(e,n),i.y=P.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*P.signNotZero(o),i.y=(1-Math.abs(o))*P.signNotZero(i.y)}return d.normalize(i,i)};go.octDecode=function(e,t,n){return go.octDecodeInRange(e,t,255,n)};go.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*GQ+i,a=o*GQ+r;return go.octDecodeInRange(s,a,65535,t)};go.octPackFloat=function(e){return 256*e.x+e.y};var c6=new U;go.octEncodeFloat=function(e){return go.octEncode(e,c6),go.octPackFloat(c6)};go.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return go.octDecode(i,o,t)};go.octPack=function(e,t,n,i){let o=go.octEncodeFloat(e),r=go.octEncodeFloat(t),s=go.octEncode(n,c6);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};go.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;go.octDecodeFloat(s,t),go.octDecodeFloat(c,n),go.octDecode(r,a,i)};go.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};go.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function a6(e){return e>>1^-(e&1)}go.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=a6(e[a]),r+=a6(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=a6(n[a]),n[a]=s)};go.dequantize=function(e,t,n,i){let o=on.getNumberOfComponents(n),r;switch(t){case X.BYTE:r=127;break;case X.UNSIGNED_BYTE:r=255;break;case X.SHORT:r=32767;break;case X.UNSIGNED_SHORT:r=65535;break;case X.INT:r=2147483647;break;case X.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};go.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,p=3*a;t[p]=u*r,t[p+1]=f*s,t[p+2]=h*r}return t};var Bn=go;var jQ=new d,qQ=new d,YQ=new d;function NDe(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,p;if(l(t.z)){if(d.equalsEpsilon(e,t,P.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,P.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,P.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,jQ),s=d.subtract(i,t,qQ),a=d.subtract(e,t,YQ),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),p=d.dot(s,a)}else{if(U.equalsEpsilon(e,t,P.EPSILON14))return d.clone(d.UNIT_X,o);if(U.equalsEpsilon(e,n,P.EPSILON14))return d.clone(d.UNIT_Y,o);if(U.equalsEpsilon(e,i,P.EPSILON14))return d.clone(d.UNIT_Z,o);r=U.subtract(n,t,jQ),s=U.subtract(i,t,qQ),a=U.subtract(e,t,YQ),c=U.dot(r,r),u=U.dot(r,s),f=U.dot(r,a),h=U.dot(s,s),p=U.dot(s,a)}o.y=h*f-u*p,o.z=c*p-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var BT=NDe;function Rh(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}Rh.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var pp={high:0,low:0};Rh.fromCartesian=function(e,t){l(t)||(t=new Rh);let n=t.high,i=t.low;return Rh.encode(e.x,pp),n.x=pp.high,i.x=pp.low,Rh.encode(e.y,pp),n.y=pp.high,i.y=pp.low,Rh.encode(e.z,pp),n.z=pp.high,i.z=pp.low,t};var l6=new Rh;Rh.writeElements=function(e,t,n){Rh.fromCartesian(e,l6);let i=l6.high,o=l6.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var Wn=Rh;var Fs={UNSIGNED_BYTE:te.UNSIGNED_BYTE,UNSIGNED_SHORT:te.UNSIGNED_SHORT,UNSIGNED_INT:te.UNSIGNED_INT};Fs.getSizeInBytes=function(e){switch(e){case Fs.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Fs.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Fs.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};Fs.fromSizeInBytes=function(e){switch(e){case 2:return Fs.UNSIGNED_SHORT;case 4:return Fs.UNSIGNED_INT;case 1:return Fs.UNSIGNED_BYTE}};Fs.validate=function(e){return l(e)&&(e===Fs.UNSIGNED_BYTE||e===Fs.UNSIGNED_SHORT||e===Fs.UNSIGNED_INT)};Fs.createTypedArray=function(e,t){return e>=P.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};Fs.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=P.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};Fs.fromTypedArray=function(e){if(e instanceof Uint8Array)return Fs.UNSIGNED_BYTE;if(e instanceof Uint16Array)return Fs.UNSIGNED_SHORT;if(e instanceof Uint32Array)return Fs.UNSIGNED_INT};var Be=Object.freeze(Fs);var u6={};u6.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function XQ(e,t,n){let i=e+t;return P.sign(e)!==P.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}u6.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<P.EPSILON14)return[0,0];if(c>u&&u/c<P.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=XQ(o,-r,P.EPSILON14);if(s<0)return[];let a=-.5*XQ(t,P.sign(t)*Math.sqrt(s),P.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var dl=u6;var d6={};d6.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function f6(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,p=o*s-f,g=o*a-r*s,m=r*a-h,x=4*p*m-g*g,b,T;if(x<0){let W,q,J;f*u>=c*h?(W=o,q=p,J=-2*r*p+o*g):(W=a,q=m,J=-a*g+2*s*m);let K=-(J<0?-1:1)*Math.abs(W)*Math.sqrt(-x);T=-J+K;let Q=T/2,he=Q<0?-Math.pow(-Q,1/3):Math.pow(Q,1/3),ye=T===K?-he:-q/he;return b=q<=0?he+ye:-J/(he*he+ye*ye+q),f*u>=c*h?[(b-r)/o]:[-a/(b+s)]}let C=p,A=-2*r*p+o*g,E=m,v=-a*g+2*s*m,D=Math.sqrt(x),R=Math.sqrt(3)/2,O=Math.abs(Math.atan2(o*D,-A)/3);b=2*Math.sqrt(-C);let M=Math.cos(O);T=b*M;let N=b*(-M/2-R*Math.sin(O)),_=T+N>2*r?T-r:N-r,S=o,w=_/S;O=Math.abs(Math.atan2(a*D,-v)/3),b=2*Math.sqrt(-E),M=Math.cos(O),T=b*M,N=b*(-M/2-R*Math.sin(O));let I=-a,L=T+N<2*s?T+s:N+s,B=I/L,H=S*L,V=-_*L-S*I,G=_*I,k=(s*V-r*G)/(-r*V+s*H);return w<=k?w<=B?k<=B?[w,k,B]:[w,B,k]:[B,w,k]:w<=B?[k,w,B]:k<=B?[k,B,w]:[B,k,w]}d6.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return dl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=dl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return f6(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):f6(e,t,0,i);if(i===0)return o=dl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return f6(e,t,n,i)};var kT=d6;var h6={};h6.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,p=h*i,g=o*o,m=g*o;return a*u*h-4*c*p-4*e*f*h+18*e*t*n*p-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function pd(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=kT.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<P.EPSILON14){let h=dl.computeRealRoots(1,r,a);if(h.length===2){let p=h[0],g=h[1],m;if(p>=0&&g>=0){let x=Math.sqrt(p),b=Math.sqrt(g);return[u-b,u-x,u+x,u+b]}else{if(p>=0&&g<0)return m=Math.sqrt(p),[u-m,u+m];if(p<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),p=(r+f-s/h)/2,g=(r+f+s/h)/2,m=dl.computeRealRoots(1,h,p),x=dl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,x.length!==0?(x[0]+=u,x[1]+=u,m[1]<=x[0]?[m[0],m[1],x[0],x[1]]:x[1]<=m[0]?[x[0],x[1],m[0],m[1]]:m[0]>=x[0]&&m[1]<=x[1]?[x[0],m[0],m[1],x[1]]:x[0]>=m[0]&&x[1]<=m[1]?[m[0],x[0],x[1],m[1]]:m[0]>x[0]&&m[0]<x[1]?[x[0],m[0],x[1],m[1]]:[m[0],x[0],m[1],x[1]]):m):x.length!==0?(x[0]+=u,x[1]+=u,x):[]}}return[]}function dv(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=kT.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],p=t-h,g=p*p,m=e/2,x=p/2,b=g-4*i,T=g+4*Math.abs(i),C=s-4*h,A=s+4*Math.abs(h),E,v;if(h<0||b*A<C*T){let S=Math.sqrt(C);E=S/2,v=S===0?0:(e*x-n)/S}else{let S=Math.sqrt(b);E=S===0?0:(e*x-n)/S,v=S/2}let D,R;m===0&&E===0?(D=0,R=0):P.sign(m)===P.sign(E)?(D=m+E,R=h/D):(R=m-E,D=h/R);let O,M;x===0&&v===0?(O=0,M=0):P.sign(x)===P.sign(v)?(O=x+v,M=i/O):(M=x-v,O=i/M);let N=dl.computeRealRoots(1,D,O),_=dl.computeRealRoots(1,R,M);if(N.length!==0)return _.length!==0?N[1]<=_[0]?[N[0],N[1],_[0],_[1]]:_[1]<=N[0]?[_[0],_[1],N[0],N[1]]:N[0]>=_[0]&&N[1]<=_[1]?[_[0],N[0],N[1],_[1]]:_[0]>=N[0]&&_[1]<=N[1]?[N[0],_[0],_[1],N[1]]:N[0]>_[0]&&N[0]<_[1]?[_[0],N[0],_[1],N[1]]:[N[0],_[0],N[1],_[1]]:N;if(_.length!==0)return _}return[]}h6.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<P.EPSILON15)return kT.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return pd(r,s,a,c);case 1:return dv(r,s,a,c);case 2:return dv(r,s,a,c);case 3:return pd(r,s,a,c);case 4:return pd(r,s,a,c);case 5:return dv(r,s,a,c);case 6:return pd(r,s,a,c);case 7:return pd(r,s,a,c);case 8:return dv(r,s,a,c);case 9:return pd(r,s,a,c);case 10:return pd(r,s,a,c);case 11:return dv(r,s,a,c);case 12:return pd(r,s,a,c);case 13:return pd(r,s,a,c);case 14:return pd(r,s,a,c);case 15:return pd(r,s,a,c);default:return}};var mO=h6;function pO(e,t){t=d.clone(y(t,d.ZERO)),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(y(e,d.ZERO)),this.direction=t}pO.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new pO(e.origin,e.direction)};pO.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var pn=pO;var Fo={};Fo.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<P.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var FDe=new d,BDe=new d,nJ=new d,KQ=new d,$Q=new d;Fo.rayTriangleParametric=function(e,t,n,i,o){o=y(o,!1);let r=e.origin,s=e.direction,a=d.subtract(n,t,FDe),c=d.subtract(i,t,BDe),u=d.cross(s,c,nJ),f=d.dot(a,u),h,p,g,m,x;if(o){if(f<P.EPSILON6||(h=d.subtract(r,t,KQ),g=d.dot(h,u),g<0||g>f)||(p=d.cross(h,a,$Q),m=d.dot(s,p),m<0||g+m>f))return;x=d.dot(c,p)/f}else{if(Math.abs(f)<P.EPSILON6)return;let b=1/f;if(h=d.subtract(r,t,KQ),g=d.dot(h,u)*b,g<0||g>1||(p=d.cross(h,a,$Q),m=d.dot(s,p)*b,m<0||g+m>1))return;x=d.dot(c,p)*b}return x};Fo.rayTriangle=function(e,t,n,i,o,r){let s=Fo.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var kDe=new pn;Fo.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=kDe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=Fo.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function VDe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var UDe={root0:0,root1:0};function iJ(e,t,n){l(n)||(n=new qa);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,nJ),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=VDe(c,u,f,UDe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}Fo.raySphere=function(e,t,n){if(n=iJ(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var zDe=new pn;Fo.lineSegmentSphere=function(e,t,n,i){let o=zDe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=iJ(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var HDe=new d,GDe=new d;Fo.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,HDe),o=d.multiplyComponents(n,e.direction,GDe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let p=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,p<u)return;if(p>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,x=a/h;return m<x?new qa(m,x):{start:x,stop:m}}let g=Math.sqrt(a/c);return new qa(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new qa(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new qa(0,-s/c)};function G0(e,t,n){let i=e+t;return P.sign(e)!==P.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}Fo.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[Z.COLUMN1ROW1]-e[Z.COLUMN2ROW2])*s,c=o*(i*G0(e[Z.COLUMN1ROW0],e[Z.COLUMN0ROW1],P.EPSILON15)+t.y),u=e[Z.COLUMN0ROW0]*r+e[Z.COLUMN2ROW2]*s+i*t.x+n,f=s*G0(e[Z.COLUMN2ROW1],e[Z.COLUMN1ROW2],P.EPSILON15),h=o*(i*G0(e[Z.COLUMN2ROW0],e[Z.COLUMN0ROW2])+t.z),p,g=[];if(h===0&&f===0){if(p=dl.computeRealRoots(a,c,u),p.length===0)return g;let O=p[0],M=Math.sqrt(Math.max(1-O*O,0));if(g.push(new d(i,o*O,o*-M)),g.push(new d(i,o*O,o*M)),p.length===2){let N=p[1],_=Math.sqrt(Math.max(1-N*N,0));g.push(new d(i,o*N,o*-_)),g.push(new d(i,o*N,o*_))}return g}let m=h*h,x=f*f,b=a*a,T=h*f,C=b+x,A=2*(c*a+T),E=2*u*a+c*c-x+m,v=2*(u*c-T),D=u*u-m;if(C===0&&A===0&&E===0&&v===0)return g;p=mO.computeRealRoots(C,A,E,v,D);let R=p.length;if(R===0)return g;for(let O=0;O<R;++O){let M=p[O],N=M*M,_=Math.max(1-N,0),S=Math.sqrt(_),w;P.sign(a)===P.sign(u)?w=G0(a*N+u,c*M,P.EPSILON12):P.sign(u)===P.sign(c*M)?w=G0(a*N,c*M+u,P.EPSILON12):w=G0(a*N+c*M,u,P.EPSILON12);let I=G0(f*M,h,P.EPSILON15),L=w*I;L<0?g.push(new d(i,o*M,o*S)):L>0?g.push(new d(i,o*M,o*-S)):S!==0?(g.push(new d(i,o*M,o*-S)),g.push(new d(i,o*M,o*S)),++O):g.push(new d(i,o*M,o*S))}return g};var m6=new d,ZQ=new d,QQ=new d,_O=new d,WDe=new d,jDe=new Z,qDe=new Z,YDe=new Z,XDe=new Z,KDe=new Z,JQ=new Z,eJ=new Z,tJ=new d,$De=new d,ZDe=new fe;Fo.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let D=t.geodeticSurfaceNormal(n,m6);if(d.dot(i,D)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,m6),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,_O),c=d.normalize(d.cross(a,s,ZQ),ZQ),u=d.normalize(d.cross(s,c,QQ),QQ),f=jDe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=Z.transpose(f,qDe),p=Z.fromScale(t.radii,YDe),g=Z.fromScale(t.oneOverRadii,XDe),m=KDe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let x=Z.multiply(Z.multiply(h,g,JQ),m,JQ),b=Z.multiply(Z.multiply(x,p,eJ),f,eJ),T=Z.multiplyByVector(x,n,WDe),C=Fo.quadraticVectorExpression(b,d.negate(T,m6),0,0,1),A,E,v=C.length;if(v>0){let D=d.clone(d.ZERO,$De),R=Number.NEGATIVE_INFINITY;for(let M=0;M<v;++M){A=Z.multiplyByVector(p,Z.multiplyByVector(f,C[M],tJ),tJ);let N=d.normalize(d.subtract(A,n,_O),_O),_=d.dot(N,i);_>R&&(R=_,D=d.clone(A,D))}let O=t.cartesianToCartographic(D,ZDe);return R=P.clamp(R,0,1),E=d.magnitude(d.subtract(D,n,_O))*Math.sqrt(1-R*R),E=o?-E:E,O.height=E,t.cartographicToCartesian(O,new d)}};var QDe=new d;Fo.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,QDe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<P.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};Fo.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return Fo.lineSegmentPlane(e,t,i,f),Fo.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return Fo.lineSegmentPlane(t,n,i,f),Fo.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return Fo.lineSegmentPlane(n,e,i,f),Fo.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return Fo.lineSegmentPlane(e,n,i,f),Fo.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return Fo.lineSegmentPlane(n,t,i,f),Fo.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return Fo.lineSegmentPlane(t,e,i,f),Fo.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var ti=Fo;function Bs(e,t){this.normal=d.clone(e),this.distance=t}Bs.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new Bs(t,i)};var JDe=new d;Bs.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,JDe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new Bs(n,i)};Bs.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var eIe=new d;Bs.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=Bs.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,eIe);return d.subtract(t,o,n)};var tIe=new F,nIe=new oe,iIe=new d;Bs.transform=function(e,t,n){let i=e.normal,o=e.distance,r=F.inverseTranspose(t,tIe),s=oe.fromElements(i.x,i.y,i.z,o,nIe);s=F.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,iIe);return s=oe.divideByScalar(s,d.magnitude(a),s),Bs.fromCartesian4(s,n)};Bs.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new Bs(e.normal,e.distance)};Bs.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};Bs.ORIGIN_XY_PLANE=Object.freeze(new Bs(d.UNIT_Z,0));Bs.ORIGIN_YZ_PLANE=Object.freeze(new Bs(d.UNIT_X,0));Bs.ORIGIN_ZX_PLANE=Object.freeze(new Bs(d.UNIT_Y,0));var sn=Bs;var p6={};p6.calculateACMR=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.indices,n=e.maximumIndex,i=y(e.cacheSize,24),o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};p6.tipsify=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.indices,n=e.maximumIndex,i=y(e.cacheSize,24),o;function r(_,S,w,I){for(;S.length>=1;){let L=S[S.length-1];if(S.splice(S.length-1,1),_[L].numLiveTriangles>0)return L}for(;o<I;){if(_[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(_,S,w,I,L,B,H){let V=-1,G,k=-1,W=0;for(;W<w.length;){let q=w[W];I[q].numLiveTriangles&&(G=0,L-I[q].timeStamp+2*I[q].numLiveTriangles<=S&&(G=L-I[q].timeStamp),(G>k||k===-1)&&(k=G,V=q)),++W}return V===-1?r(I,B,_,H):V}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let p=[],g;for(g=0;g<c;g++)p[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)p[t[u]].vertexTriangles.push(m),++p[t[u]].numLiveTriangles,p[t[u+1]].vertexTriangles.push(m),++p[t[u+1]].numLiveTriangles,p[t[u+2]].vertexTriangles.push(m),++p[t[u+2]].numLiveTriangles,++m,u+=3;let x=0,b=i+1;o=1;let T=[],C=[],A,E,v=0,D=[],R=a/3,O=[];for(g=0;g<R;g++)O[g]=!1;let M,N;for(;x!==-1;){T=[],E=p[x],N=E.vertexTriangles.length;for(let _=0;_<N;++_)if(m=E.vertexTriangles[_],!O[m]){O[m]=!0,u=m+m+m;for(let S=0;S<3;++S)M=t[u],T.push(M),C.push(M),D[v]=M,++v,A=p[M],--A.numLiveTriangles,b-A.timeStamp>i&&(A.timeStamp=b,++b),++u}x=s(t,i,T,p,b,C,c)}return D};var gO=p6;var vc={};function EO(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function oIe(e){let t=e.length,n=t/3*6,i=Be.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)EO(i,o,e[r],e[r+1],e[r+2]);return i}function rIe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Be.createTypedArray(t,n);EO(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)EO(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function sIe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Be.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)EO(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}vc.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Ne.TRIANGLES:e.indices=oIe(t);break;case Ne.TRIANGLE_STRIP:e.indices=rIe(t);break;case Ne.TRIANGLE_FAN:e.indices=sIe(t);break}e.primitiveType=Ne.LINES}return e};vc.createLineSegmentsForVectors=function(e,t,n){t=y(t,"normal"),n=y(n,1e4);let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new ce(u.center,u.radius+n)),new ut({attributes:{position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Ne.LINES,boundingSphere:c})};vc.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};vc.reorderForPreVertexCache=function(e){let t=ut.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let p=0;p<t;p++)i[p]=-1;let o=n,r=o.length,s=Be.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let p in h)if(h.hasOwnProperty(p)&&l(h[p])&&l(h[p].values)){let g=h[p],m=g.values,x=0,b=g.componentsPerAttribute,T=X.createTypedArray(g.componentDatatype,u*b);for(;x<t;){let C=i[x];if(C!==-1)for(let A=0;A<b;A++)T[b*C+A]=m[b*x+A];++x}g.values=T}}return e};vc.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Ne.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=gO.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function oJ(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new Se({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function aIe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}vc.fitToUnsignedShortIndices=function(e){let t=[],n=ut.computeNumberOfVertices(e);if(l(e.indices)&&n>=P.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=oJ(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Ne.TRIANGLES?u=3:e.primitiveType===Ne.LINES?u=2:e.primitiveType===Ne.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let p=a[f+h],g=i[p];l(g)||(g=r++,i[p]=g,aIe(s,e.attributes,p)),o.push(g)}r+u>=P.SIXTY_FOUR_KILOBYTES&&(t.push(new ut({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=oJ(e.attributes))}o.length!==0&&t.push(new ut({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rJ=new d,cIe=new fe;vc.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Ri;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,rJ),p=s.cartesianToCartographic(h,cIe),g=o.project(p,rJ);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var _6={high:0,low:0};vc.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)Wn.encode(r[f],_6),a[f]=_6.high,c[f]=_6.low;let u=o.componentsPerAttribute;return e.attributes[n]=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var gd=new d;function g6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,gd),F.multiplyByPoint(e,gd,gd),d.pack(gd,n,o)}}function y6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,gd),Z.multiplyByVector(e,gd,gd),gd=d.normalize(gd,gd),d.pack(gd,n,o)}}var yO=new F,xO=new Z;vc.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(F.equals(t,F.IDENTITY))return e;let n=e.geometry.attributes;g6(t,n.position),g6(t,n.prevPosition),g6(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(F.inverse(t,yO),F.transpose(yO,yO),F.getMatrix3(yO,xO),y6(xO,n.normal),y6(xO,n.tangent),y6(xO,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=ce.transform(i,t,i)),e.modelMatrix=F.clone(F.IDENTITY),e};function lIe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new Se({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:X.createTypedArray(s.componentDatatype,a)}))}return i}var uIe=new d;function x6(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=lIe(e,t),h,p,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(p=e[o][t].attributes[i].values,g=p.length,r=0;r<g;++r)h[s++]=p[r];let m;if(c){let C=0;for(o=0;o<n;++o)C+=e[o][t].indices.length;let A=ut.computeNumberOfVertices(new ut({attributes:f,primitiveType:Ne.POINTS})),E=Be.createTypedArray(A,C),v=0,D=0;for(o=0;o<n;++o){let R=e[o][t].indices,O=R.length;for(s=0;s<O;++s)E[v++]=D+R[s];D+=ut.computeNumberOfVertices(e[o][t])}m=E}let x=new d,b=0,T;for(o=0;o<n;++o){if(T=e[o][t].boundingSphere,!l(T)){x=void 0;break}d.add(T.center,x,x)}if(l(x))for(d.divideByScalar(x,n,x),o=0;o<n;++o){T=e[o][t].boundingSphere;let C=d.magnitude(d.subtract(T.center,x,uIe))+T.radius;C>b&&(b=C)}return new ut({attributes:f,indices:m,primitiveType:u,boundingSphere:l(x)?new ce(x,b):void 0})}vc.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(x6(t,"geometry")),n.length>0&&(o.push(x6(n,"westHemisphereGeometry")),o.push(x6(n,"eastHemisphereGeometry"))),o};var Ju=new d,hv=new d,VT=new d,UT=new d;vc.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],x=t[u+1],b=t[u+2],T=m*3,C=x*3,A=b*3;hv.x=i[T],hv.y=i[T+1],hv.z=i[T+2],VT.x=i[C],VT.y=i[C+1],VT.z=i[C+2],UT.x=i[A],UT.y=i[A+1],UT.z=i[A+2],s[m].count++,s[x].count++,s[b].count++,d.subtract(VT,hv,VT),d.subtract(UT,hv,UT),a[f]=d.cross(VT,UT,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let p;for(u=0;u<r;u+=3){p=s[t[u]];let m=p.indexOffset+p.currentCount;c[m]=f,p.currentCount++,p=s[t[u+1]],m=p.indexOffset+p.currentCount,c[m]=f,p.currentCount++,p=s[t[u+2]],m=p.indexOffset+p.currentCount,c[m]=f,p.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(p=s[u],d.clone(d.ZERO,Ju),p.count>0){for(f=0;f<p.count;f++)d.add(Ju,a[c[p.indexOffset+f]],Ju);d.equalsEpsilon(d.ZERO,Ju,P.EPSILON10)&&d.clone(a[c[p.indexOffset]],Ju)}d.equalsEpsilon(d.ZERO,Ju,P.EPSILON10)&&(Ju.z=1),d.normalize(Ju,Ju),g[m]=Ju.x,g[m+1]=Ju.y,g[m+2]=Ju.z}return e.attributes.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g}),e};var fIe=new d,sJ=new d,dIe=new d;vc.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,p;for(u=0;u<a;u+=3){let x=n[u],b=n[u+1],T=n[u+2];f=x*3,h=b*3,p=T*3;let C=x*2,A=b*2,E=T*2,v=i[f],D=i[f+1],R=i[f+2],O=r[C],M=r[C+1],N=r[A+1]-M,_=r[E+1]-M,S=1/((r[A]-O)*_-(r[E]-O)*N),w=(_*(i[h]-v)-N*(i[p]-v))*S,I=(_*(i[h+1]-D)-N*(i[p+1]-D))*S,L=(_*(i[h+2]-R)-N*(i[p+2]-R))*S;c[f]+=w,c[f+1]+=I,c[f+2]+=L,c[h]+=w,c[h+1]+=I,c[h+2]+=L,c[p]+=w,c[p+1]+=I,c[p+2]+=L}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,p=f+2;let x=d.fromArray(o,f,fIe),b=d.fromArray(c,f,dIe),T=d.dot(x,b);d.multiplyByScalar(x,T,sJ),d.normalize(d.subtract(b,sJ,b),b),g[f]=b.x,g[h]=b.y,g[p]=b.z,d.normalize(d.cross(x,b,b),b),m[f]=b.x,m[h]=b.y,m[p]=b.z}return e.attributes.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:m}),e};var mv=new U,_d=new d,aJ=new d,cJ=new d,bO=new U;vc.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let D=t.values;i=D.length/3;let R=new Float32Array(i*2),O=0;for(n=0;n<i;++n){if(d.fromArray(D,n*3,_d),d.equals(_d,d.ZERO)){O+=2;continue}bO=Bn.octEncodeInRange(_d,65535,bO),R[O++]=bO.x,R[O++]=bO.y}return e.attributes.compressedAttributes=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:R}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),p,g,m,x;s&&(p=o.values),a&&(g=r.values),f&&(m=c.values),h&&(x=u.values),i=(s?p.length:g.length)/(s?3:2);let C=i,A=a&&s?2:1;A+=f||h?1:0,C*=A;let E=new Float32Array(C),v=0;for(n=0;n<i;++n){a&&(U.fromArray(g,n*2,mv),E[v++]=Bn.compressTextureCoordinates(mv));let D=n*3;s&&l(m)&&l(x)?(d.fromArray(p,D,_d),d.fromArray(m,D,aJ),d.fromArray(x,D,cJ),Bn.octPack(_d,aJ,cJ,mv),E[v++]=mv.x,E[v++]=mv.y):(s&&(d.fromArray(p,D,_d),E[v++]=Bn.octEncodeFloat(_d)),f&&(d.fromArray(m,D,_d),E[v++]=Bn.octEncodeFloat(_d)),h&&(d.fromArray(x,D,_d),E[v++]=Bn.octEncodeFloat(_d)))}return e.attributes.compressedAttributes=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:A,values:E}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function hIe(e){if(l(e.indices))return e;let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function mIe(e){let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Ne.TRIANGLES,e}function pIe(e){let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Ne.TRIANGLES,e}function _Ie(e){if(l(e.indices))return e;let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function gIe(e){let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Ne.LINES,e}function yIe(e){let t=ut.computeNumberOfVertices(e),n=Be.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Ne.LINES,e}function xIe(e){switch(e.primitiveType){case Ne.TRIANGLE_FAN:return mIe(e);case Ne.TRIANGLE_STRIP:return pIe(e);case Ne.TRIANGLES:return hIe(e);case Ne.LINE_STRIP:return gIe(e);case Ne.LINE_LOOP:return yIe(e);case Ne.LINES:return _Ie(e)}return e}function K_(e,t){Math.abs(e.y)<P.EPSILON6&&(t?e.y=-P.EPSILON6:e.y=P.EPSILON6)}function bIe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){K_(e,e.y<0),K_(t,t.y<0),K_(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=P.sign(e.y):s=P.sign(n.y):o>r?s=P.sign(t.y):s=P.sign(n.y);let a=s<0;K_(e,a),K_(t,a),K_(n,a)}var lJ=new d;function ef(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,lJ),e.y/(e.y-t.y),lJ),n),d.clone(n,i),K_(n,!0),K_(i,!1)}var W0=new d,j0=new d,q0=new d,Y0=new d,b6={positions:new Array(7),indices:new Array(3*3)};function TIe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;bIe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=b6.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(ef(e,t,W0,q0),ef(e,n,j0,Y0),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(ef(t,n,W0,q0),ef(t,e,j0,Y0),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(ef(n,e,W0,q0),ef(n,t,j0,Y0),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(ef(n,e,W0,q0),ef(n,t,j0,Y0),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(ef(t,n,W0,q0),ef(t,e,j0,Y0),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(ef(e,t,W0,q0),ef(e,n,j0,Y0),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=b6.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=W0,c[4]=j0,c[5]=q0,c[6]=Y0,c.length=7),b6}function uJ(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=X.createTypedArray(r.componentDatatype,r.values)}let i=ut.computeNumberOfVertices(e);return e.indices=Be.createTypedArray(i,e.indices),t&&(e.boundingSphere=ce.fromVertices(n.position.values)),e}function HT(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new Se({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ut({attributes:n,indices:[],primitiveType:e.primitiveType})}function E6(e,t,n){let i=l(e.geometry.boundingSphere);t=uJ(t,i),n=uJ(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function S6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,p){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),x=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(x,c.z,x);let b=e.add(g,m,g);e.add(b,x,b),p&&e.normalize(b,b),e.pack(b,f,h*t)}}var CIe=S6(oe,4),AO=S6(d,3),_J=S6(U,2),AIe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>P.EPSILON6?1:0},pv=new d,T6=new d,C6=new d,EIe=new d;function TO(e,t,n,i,o,r,s,a,c,u,f,h,p,g,m,x){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let b=d.fromArray(o,e*3,pv),T=d.fromArray(o,t*3,T6),C=d.fromArray(o,n*3,C6),A=BT(i,b,T,C,EIe);if(l(A)){if(l(r)&&AO(e,t,n,A,r,h.normal.values,x,!0),l(u)){let E=d.fromArray(u,e*3,pv),v=d.fromArray(u,t*3,T6),D=d.fromArray(u,n*3,C6);d.multiplyByScalar(E,A.x,E),d.multiplyByScalar(v,A.y,v),d.multiplyByScalar(D,A.z,D);let R;!d.equals(E,d.ZERO)||!d.equals(v,d.ZERO)||!d.equals(D,d.ZERO)?(R=d.add(E,v,E),d.add(R,D,R),d.normalize(R,R)):(R=pv,R.x=0,R.y=0,R.z=0),d.pack(R,h.extrudeDirection.values,x*3)}if(l(f)&&AIe(e,t,n,A,f,h.applyOffset.values,x),l(s)&&AO(e,t,n,A,s,h.tangent.values,x,!0),l(a)&&AO(e,t,n,A,a,h.bitangent.values,x,!0),l(c)&&_J(e,t,n,A,c,h.st.values,x),g>0)for(let E=0;E<g;E++){let v=p[E];SIe(e,t,n,A,x,m[v],h[v])}}}function SIe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:CIe(e,t,n,i,c,u,o,!1);break;case 3:AO(e,t,n,i,c,u,o,!1);break;case 2:_J(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function Mh(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var vIe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function fJ(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let R in n)n.hasOwnProperty(R)&&!vIe[R]&&l(n[R])&&h.push(R);let p=h.length,g=HT(t),m=HT(t),x,b,T,C,A,E=[];E.length=i.length/3;let v=[];for(v.length=i.length/3,A=0;A<E.length;++A)E[A]=-1,v[A]=-1;let D=f.length;for(A=0;A<D;A+=3){let R=f[A],O=f[A+1],M=f[A+2],N=d.fromArray(i,R*3),_=d.fromArray(i,O*3),S=d.fromArray(i,M*3),w=TIe(N,_,S);if(l(w)&&w.positions.length>3){let I=w.positions,L=w.indices,B=L.length;for(let H=0;H<B;++H){let V=L[H],G=I[V];G.y<0?(x=m.attributes,b=m.indices,T=E):(x=g.attributes,b=g.indices,T=v),C=Mh(x,b,T,f,V<3?A+V:-1,G),TO(R,O,M,G,i,o,s,r,a,c,u,x,h,p,n,C)}}else l(w)&&(N=w.positions[0],_=w.positions[1],S=w.positions[2]),N.y<0?(x=m.attributes,b=m.indices,T=E):(x=g.attributes,b=g.indices,T=v),C=Mh(x,b,T,f,A,N),TO(R,O,M,N,i,o,s,r,a,c,u,x,h,p,n,C),C=Mh(x,b,T,f,A+1,_),TO(R,O,M,_,i,o,s,r,a,c,u,x,h,p,n,C),C=Mh(x,b,T,f,A+2,S),TO(R,O,M,S,i,o,s,r,a,c,u,x,h,p,n,C)}E6(e,m,g)}var gJ=sn.fromPointNormal(d.ZERO,d.UNIT_Y),wIe=new d,DIe=new d;function zT(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,pv);d.equalsEpsilon(a,n,P.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function dJ(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=HT(t),a=HT(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let p=r[c],g=r[c+1],m=d.fromArray(i,p*3,pv),x=d.fromArray(i,g*3,T6),b;Math.abs(m.y)<P.EPSILON6&&(m.y<0?m.y=-P.EPSILON6:m.y=P.EPSILON6),Math.abs(x.y)<P.EPSILON6&&(x.y<0?x.y=-P.EPSILON6:x.y=P.EPSILON6);let T=s.attributes,C=s.indices,A=h,E=a.attributes,v=a.indices,D=f,R=ti.lineSegmentPlane(m,x,gJ,C6);if(l(R)){let O=d.multiplyByScalar(d.UNIT_Y,5*P.EPSILON9,wIe);m.y<0&&(d.negate(O,O),T=a.attributes,C=a.indices,A=f,E=s.attributes,v=s.indices,D=h);let M=d.add(R,O,DIe);b=Mh(T,C,A,r,c,m),zT(p,g,m,i,b,T,o),b=Mh(T,C,A,r,-1,M),zT(p,g,M,i,b,T,o),d.negate(O,O),d.add(R,O,M),b=Mh(E,v,D,r,-1,M),zT(p,g,M,i,b,E,o),b=Mh(E,v,D,r,c+1,x),zT(p,g,x,i,b,E,o)}else{let O,M,N;m.y<0?(O=a.attributes,M=a.indices,N=f):(O=s.attributes,M=s.indices,N=h),b=Mh(O,M,N,r,c,m),zT(p,g,m,i,b,O,o),b=Mh(O,M,N,r,c+1,x),zT(p,g,x,i,b,O,o)}}E6(e,a,s)}var hJ=new U,IIe=new U,yJ=new d,xJ=new d,A6=new d,PIe=new d,OIe=new d,RIe=new d,mJ=new oe;function pJ(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,yJ);if(a.x>0)continue;let c=d.unpack(i,s,xJ);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,A6);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var MIe=5*P.EPSILON9,CO=P.EPSILON6;function LIe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=HT(t),f=HT(t),h,p,g,m=!1,x=i.length/3;for(h=0;h<x;h+=4){let b=h,T=h+2,C=d.fromArray(i,b*3,yJ),A=d.fromArray(i,T*3,xJ);if(Math.abs(C.y)<CO)for(C.y=CO*(A.y<0?-1:1),i[h*3+1]=C.y,i[(h+1)*3+1]=C.y,p=b*3;p<b*3+4*3;p+=3)o[p]=i[h*3],o[p+1]=i[h*3+1],o[p+2]=i[h*3+2];if(Math.abs(A.y)<CO)for(A.y=CO*(C.y<0?-1:1),i[(h+2)*3+1]=A.y,i[(h+3)*3+1]=A.y,p=b*3;p<b*3+4*3;p+=3)r[p]=i[(h+2)*3],r[p+1]=i[(h+2)*3+1],r[p+2]=i[(h+2)*3+2];let E=u.attributes,v=u.indices,D=f.attributes,R=f.indices,O=ti.lineSegmentPlane(C,A,gJ,PIe);if(l(O)){m=!0;let M=d.multiplyByScalar(d.UNIT_Y,MIe,OIe);C.y<0&&(d.negate(M,M),E=f.attributes,v=f.indices,D=u.attributes,R=u.indices);let N=d.add(O,M,RIe);E.position.values.push(C.x,C.y,C.z,C.x,C.y,C.z),E.position.values.push(N.x,N.y,N.z),E.position.values.push(N.x,N.y,N.z),E.prevPosition.values.push(o[b*3],o[b*3+1],o[b*3+2]),E.prevPosition.values.push(o[b*3+3],o[b*3+4],o[b*3+5]),E.prevPosition.values.push(C.x,C.y,C.z,C.x,C.y,C.z),E.nextPosition.values.push(N.x,N.y,N.z),E.nextPosition.values.push(N.x,N.y,N.z),E.nextPosition.values.push(N.x,N.y,N.z),E.nextPosition.values.push(N.x,N.y,N.z),d.negate(M,M),d.add(O,M,N),D.position.values.push(N.x,N.y,N.z),D.position.values.push(N.x,N.y,N.z),D.position.values.push(A.x,A.y,A.z,A.x,A.y,A.z),D.prevPosition.values.push(N.x,N.y,N.z),D.prevPosition.values.push(N.x,N.y,N.z),D.prevPosition.values.push(N.x,N.y,N.z),D.prevPosition.values.push(N.x,N.y,N.z),D.nextPosition.values.push(A.x,A.y,A.z,A.x,A.y,A.z),D.nextPosition.values.push(r[T*3],r[T*3+1],r[T*3+2]),D.nextPosition.values.push(r[T*3+3],r[T*3+4],r[T*3+5]);let _=U.fromArray(s,b*2,hJ),S=Math.abs(_.y);E.expandAndWidth.values.push(-1,S,1,S),E.expandAndWidth.values.push(-1,-S,1,-S),D.expandAndWidth.values.push(-1,S,1,S),D.expandAndWidth.values.push(-1,-S,1,-S);let w=d.magnitudeSquared(d.subtract(O,C,A6));if(w/=d.magnitudeSquared(d.subtract(A,C,A6)),l(c)){let I=oe.fromArray(c,b*4,mJ),L=oe.fromArray(c,T*4,mJ),B=P.lerp(I.x,L.x,w),H=P.lerp(I.y,L.y,w),V=P.lerp(I.z,L.z,w),G=P.lerp(I.w,L.w,w);for(p=b*4;p<b*4+2*4;++p)E.color.values.push(c[p]);for(E.color.values.push(B,H,V,G),E.color.values.push(B,H,V,G),D.color.values.push(B,H,V,G),D.color.values.push(B,H,V,G),p=T*4;p<T*4+2*4;++p)D.color.values.push(c[p])}if(l(a)){let I=U.fromArray(a,b*2,hJ),L=U.fromArray(a,(h+3)*2,IIe),B=P.lerp(I.x,L.x,w);for(p=b*2;p<b*2+2*2;++p)E.st.values.push(a[p]);for(E.st.values.push(B,I.y),E.st.values.push(B,L.y),D.st.values.push(B,I.y),D.st.values.push(B,L.y),p=T*2;p<T*2+2*2;++p)D.st.values.push(a[p])}g=E.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3),g=D.position.values.length/3-4,R.push(g,g+2,g+1),R.push(g+1,g+2,g+3)}else{let M,N;for(C.y<0?(M=f.attributes,N=f.indices):(M=u.attributes,N=u.indices),M.position.values.push(C.x,C.y,C.z),M.position.values.push(C.x,C.y,C.z),M.position.values.push(A.x,A.y,A.z),M.position.values.push(A.x,A.y,A.z),p=h*3;p<h*3+4*3;++p)M.prevPosition.values.push(o[p]),M.nextPosition.values.push(r[p]);for(p=h*2;p<h*2+4*2;++p)M.expandAndWidth.values.push(s[p]),l(a)&&M.st.values.push(a[p]);if(l(c))for(p=h*4;p<h*4+4*4;++p)M.color.values.push(c[p]);g=M.position.values.length/3-4,N.push(g,g+2,g+1),N.push(g+1,g+2,g+3)}}m&&(pJ(f),pJ(u)),E6(e,f,u)}vc.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||ce.intersectPlane(n,sn.ORIGIN_ZX_PLANE)!==jt.INTERSECTING))return e;if(t.geometryType!==md.NONE)switch(t.geometryType){case md.POLYLINES:LIe(e);break;case md.TRIANGLES:fJ(e);break;case md.LINES:dJ(e);break}else xIe(t),t.primitiveType===Ne.TRIANGLES?fJ(e):t.primitiveType===Ne.LINES&&dJ(e);return e};var kn=vc;var fi={UNSIGNED_BYTE:te.UNSIGNED_BYTE,UNSIGNED_SHORT:te.UNSIGNED_SHORT,UNSIGNED_INT:te.UNSIGNED_INT,FLOAT:te.FLOAT,HALF_FLOAT:te.HALF_FLOAT_OES,UNSIGNED_INT_24_8:te.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:te.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:te.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:te.UNSIGNED_SHORT_5_6_5};fi.toWebGLConstant=function(e,t){switch(e){case fi.UNSIGNED_BYTE:return te.UNSIGNED_BYTE;case fi.UNSIGNED_SHORT:return te.UNSIGNED_SHORT;case fi.UNSIGNED_INT:return te.UNSIGNED_INT;case fi.FLOAT:return te.FLOAT;case fi.HALF_FLOAT:return t.webgl2?te.HALF_FLOAT:te.HALF_FLOAT_OES;case fi.UNSIGNED_INT_24_8:return te.UNSIGNED_INT_24_8;case fi.UNSIGNED_SHORT_4_4_4_4:return te.UNSIGNED_SHORT_4_4_4_4;case fi.UNSIGNED_SHORT_5_5_5_1:return te.UNSIGNED_SHORT_5_5_5_1;case fi.UNSIGNED_SHORT_5_6_5:return fi.UNSIGNED_SHORT_5_6_5}};fi.isPacked=function(e){return e===fi.UNSIGNED_INT_24_8||e===fi.UNSIGNED_SHORT_4_4_4_4||e===fi.UNSIGNED_SHORT_5_5_5_1||e===fi.UNSIGNED_SHORT_5_6_5};fi.sizeInBytes=function(e){switch(e){case fi.UNSIGNED_BYTE:return 1;case fi.UNSIGNED_SHORT:case fi.UNSIGNED_SHORT_4_4_4_4:case fi.UNSIGNED_SHORT_5_5_5_1:case fi.UNSIGNED_SHORT_5_6_5:case fi.HALF_FLOAT:return 2;case fi.UNSIGNED_INT:case fi.FLOAT:case fi.UNSIGNED_INT_24_8:return 4}};fi.validate=function(e){return e===fi.UNSIGNED_BYTE||e===fi.UNSIGNED_SHORT||e===fi.UNSIGNED_INT||e===fi.FLOAT||e===fi.HALF_FLOAT||e===fi.UNSIGNED_INT_24_8||e===fi.UNSIGNED_SHORT_4_4_4_4||e===fi.UNSIGNED_SHORT_5_5_5_1||e===fi.UNSIGNED_SHORT_5_6_5};fi.getTypedArrayConstructor=function(e){let t=fi.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===fi.FLOAT?Float32Array:Uint32Array};var Ke=Object.freeze(fi);var ot={DEPTH_COMPONENT:te.DEPTH_COMPONENT,DEPTH_STENCIL:te.DEPTH_STENCIL,ALPHA:te.ALPHA,RED:te.RED,R:te.RED,RG:te.RG,RGB:te.RGB,RGBA:te.RGBA,LUMINANCE:te.LUMINANCE,LUMINANCE_ALPHA:te.LUMINANCE_ALPHA,RGB_DXT1:te.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:te.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:te.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:te.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:te.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:te.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:te.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:te.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:te.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:te.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:te.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:te.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:te.COMPRESSED_RGBA_BPTC_UNORM};ot.componentsLength=function(e){switch(e){case ot.RGB:return 3;case ot.RGBA:return 4;case ot.LUMINANCE_ALPHA:case ot.RG:return 2;case ot.ALPHA:case ot.RED:case ot.LUMINANCE:return 1;case ot.R:return 4;default:return 1}};ot.validate=function(e){return e===ot.DEPTH_COMPONENT||e===ot.DEPTH_STENCIL||e===ot.ALPHA||e===ot.RED||e===ot.RG||e===ot.RGB||e===ot.RGBA||e===ot.LUMINANCE||e===ot.LUMINANCE_ALPHA||e===ot.RGB_DXT1||e===ot.RGBA_DXT1||e===ot.RGBA_DXT3||e===ot.RGBA_DXT5||e===ot.RGB_PVRTC_4BPPV1||e===ot.RGB_PVRTC_2BPPV1||e===ot.RGBA_PVRTC_4BPPV1||e===ot.RGBA_PVRTC_2BPPV1||e===ot.RGBA_ASTC||e===ot.RGB_ETC1||e===ot.RGB8_ETC2||e===ot.RGBA8_ETC2_EAC||e===ot.RGBA_BC7||e===ot.R};ot.isColorFormat=function(e){return e===ot.RED||e===ot.ALPHA||e===ot.RGB||e===ot.RGBA||e===ot.LUMINANCE||e===ot.LUMINANCE_ALPHA||e===ot.R};ot.isDepthFormat=function(e){return e===ot.DEPTH_COMPONENT||e===ot.DEPTH_STENCIL};ot.isCompressedFormat=function(e){return e===ot.RGB_DXT1||e===ot.RGBA_DXT1||e===ot.RGBA_DXT3||e===ot.RGBA_DXT5||e===ot.RGB_PVRTC_4BPPV1||e===ot.RGB_PVRTC_2BPPV1||e===ot.RGBA_PVRTC_4BPPV1||e===ot.RGBA_PVRTC_2BPPV1||e===ot.RGBA_ASTC||e===ot.RGB_ETC1||e===ot.RGB8_ETC2||e===ot.RGBA8_ETC2_EAC||e===ot.RGBA_BC7};ot.isDXTFormat=function(e){return e===ot.RGB_DXT1||e===ot.RGBA_DXT1||e===ot.RGBA_DXT3||e===ot.RGBA_DXT5};ot.isPVRTCFormat=function(e){return e===ot.RGB_PVRTC_4BPPV1||e===ot.RGB_PVRTC_2BPPV1||e===ot.RGBA_PVRTC_4BPPV1||e===ot.RGBA_PVRTC_2BPPV1};ot.isASTCFormat=function(e){return e===ot.RGBA_ASTC};ot.isETC1Format=function(e){return e===ot.RGB_ETC1};ot.isETC2Format=function(e){return e===ot.RGB8_ETC2||e===ot.RGBA8_ETC2_EAC};ot.isBC7Format=function(e){return e===ot.RGBA_BC7};ot.compressedTextureSizeInBytes=function(e,t,n){switch(e){case ot.RGB_DXT1:case ot.RGBA_DXT1:case ot.RGB_ETC1:case ot.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case ot.RGBA_DXT3:case ot.RGBA_DXT5:case ot.RGBA_ASTC:case ot.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case ot.RGB_PVRTC_4BPPV1:case ot.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case ot.RGB_PVRTC_2BPPV1:case ot.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case ot.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};ot.textureSizeInBytes=function(e,t,n,i){let o=ot.componentsLength(e);return Ke.isPacked(t)&&(o=1),o*Ke.sizeInBytes(t)*n*i};ot.alignmentInBytes=function(e,t,n){let i=ot.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};ot.createTypedArray=function(e,t,n,i){let o=Ke.getTypedArrayConstructor(t),r=ot.componentsLength(e)*n*i;return new o(r)};ot.flipY=function(e,t,n,i,o){if(o===1)return e;let r=ot.createTypedArray(t,n,i,o),s=ot.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};ot.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===ot.DEPTH_STENCIL)return te.DEPTH24_STENCIL8;if(e===ot.DEPTH_COMPONENT){if(t===Ke.UNSIGNED_SHORT)return te.DEPTH_COMPONENT16;if(t===Ke.UNSIGNED_INT)return te.DEPTH_COMPONENT24}if(t===Ke.FLOAT)switch(e){case ot.RGBA:return te.RGBA32F;case ot.RGB:return te.RGB32F;case ot.RG:return te.RG32F;case ot.RED:case ot.R:return te.R32F}if(t===Ke.HALF_FLOAT)switch(e){case ot.RGBA:return te.RGBA16F;case ot.RGB:return te.RGB16F;case ot.RG:return te.RG16F;case ot.RED:case ot.R:return te.R16F}return e};var nt=Object.freeze(ot);var SO={STREAM_DRAW:te.STREAM_DRAW,STATIC_DRAW:te.STATIC_DRAW,DYNAMIC_DRAW:te.DYNAMIC_DRAW,validate:function(e){return e===SO.STREAM_DRAW||e===SO.STATIC_DRAW||e===SO.DYNAMIC_DRAW}},ke=Object.freeze(SO);var hr={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(hr,{maximumCombinedTextureImageUnits:{get:function(){return hr._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return hr._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return hr._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return hr._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return hr._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return hr._maximumTextureSize}},maximumVaryingVectors:{get:function(){return hr._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return hr._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return hr._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return hr._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return hr._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return hr._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return hr._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return hr._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return hr._maximumViewportWidth}},maximumViewportHeight:{get:function(){return hr._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return hr._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return hr._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return hr._maximumColorAttachments}},maximumSamples:{get:function(){return hr._maximumSamples}},highpFloatSupported:{get:function(){return hr._highpFloatSupported}},highpIntSupported:{get:function(){return hr._highpIntSupported}}});var kt=hr;function _v(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(_v.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});_v.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,p=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,x=this._preMultiplyAlpha,b=this._flipY,T=4;l(f)&&(T=nt.alignmentInBytes(p,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,T),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let C=!1;if(!this._initialized){let A;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),b&&(f=nt.flipY(f,p,m,h,h)),A=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,x),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b),A=i),C=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),A=nt.createTypedArray(p,m,h,h)),a.texImage2D(u,0,g,h,h,0,p,Ke.toWebGLConstant(m,this._context),A),this._initialized=!0}C||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),b&&(f=nt.flipY(f,p,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,p,Ke.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,x),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b),a.texSubImage2D(u,0,t,n,p,Ke.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};_v.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=y(e,0),t=y(t,0),n=y(n,0),i=y(i,0),o=y(o,this._size),r=y(r,this._size);let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};_v.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=y(e,0),t=y(t,0),n=y(n,this._size),i=y(i,this._size),o=y(o,0);let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var vO=_v;function v6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function wO(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function yd(e){e=y(e,y.EMPTY_OBJECT);let n=e.context._gl,i=kt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=y(e.destroyAttachments,!0),this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;v6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;wO(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;v6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;wO(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;wO(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;v6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;wO(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(yd.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});yd.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};yd.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};yd.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};yd.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};yd.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};yd.prototype.getColorTexture=function(e){return this._colorTextures[e]};yd.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};yd.prototype.isDestroyed=function(){return!1};yd.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var Wr=yd;var DO={DONT_CARE:te.DONT_CARE,FASTEST:te.FASTEST,NICEST:te.NICEST,validate:function(e){return e===DO.DONT_CARE||e===DO.FASTEST||e===DO.NICEST}},_p=Object.freeze(DO);var IO={NEAREST:te.NEAREST,LINEAR:te.LINEAR};IO.validate=function(e){return e===IO.NEAREST||e===IO.LINEAR};var pi=Object.freeze(IO);var $_={NEAREST:te.NEAREST,LINEAR:te.LINEAR,NEAREST_MIPMAP_NEAREST:te.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:te.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:te.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:te.LINEAR_MIPMAP_LINEAR};$_.validate=function(e){return e===$_.NEAREST||e===$_.LINEAR||e===$_.NEAREST_MIPMAP_NEAREST||e===$_.LINEAR_MIPMAP_NEAREST||e===$_.NEAREST_MIPMAP_LINEAR||e===$_.LINEAR_MIPMAP_LINEAR};var $t=Object.freeze($_);var PO={CLAMP_TO_EDGE:te.CLAMP_TO_EDGE,REPEAT:te.REPEAT,MIRRORED_REPEAT:te.MIRRORED_REPEAT,validate:function(e){return e===PO.CLAMP_TO_EDGE||e===PO.REPEAT||e===PO.MIRRORED_REPEAT}},En=Object.freeze(PO);function gv(e){e=y(e,y.EMPTY_OBJECT);let{wrapS:t=En.CLAMP_TO_EDGE,wrapT:n=En.CLAMP_TO_EDGE,minificationFilter:i=$t.LINEAR,magnificationFilter:o=pi.LINEAR,maximumAnisotropy:r=1}=e;this._wrapS=t,this._wrapT=n,this._minificationFilter=i,this._magnificationFilter=o,this._maximumAnisotropy=r}Object.defineProperties(gv.prototype,{wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});gv.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};gv.NEAREST=Object.freeze(new gv({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST}));var Zt=gv;function tf(e){e=y(e,y.EMPTY_OBJECT);let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Yn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}tf.createVertexBuffer=function(e){return new tf({context:e.context,bufferTarget:te.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};tf.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Be.getSizeInBytes(n),o=new tf({context:t,bufferTarget:te.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(tf.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});tf.prototype._getBuffer=function(){return this._buffer};tf.prototype.copyFromArrayView=function(e,t){t=y(t,0);let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};tf.prototype.copyFromBuffer=function(e,t,n,i){let o=te.COPY_READ_BUFFER,r=te.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};tf.prototype.getBufferData=function(e,t,n,i){t=y(t,0),n=y(n,0);let o=this._gl,r=te.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};tf.prototype.isDestroyed=function(){return!1};tf.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Tt=tf;function NIe(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:y(t.index,n),enabled:y(t.enabled,!0),vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:y(t.componentDatatype,X.FLOAT),normalize:y(t.normalize,!1),offsetInBytes:y(t.offsetInBytes,0),strideInBytes:y(t.strideInBytes,0),instanceDivisor:y(t.instanceDivisor,0)};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function TJ(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function gp(e){e=y(e,y.EMPTY_OBJECT);let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)NIe(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let p=s[r];if(l(p.vertexBuffer)&&p.instanceDivisor===0){let g=p.strideInBytes||p.componentsPerAttribute*X.getSizeInBytes(p.componentDatatype);a=p.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),TJ(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function bJ(e){return e.values.length/e.componentsPerAttribute}function FIe(e){return X.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function BIe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===X.DOUBLE&&(e[n].componentDatatype=X.FLOAT,e[n].values=X.createTypedArray(X.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=bJ(e[o[0]]),t=1;t<s;++t){let u=bJ(e[o[t]]);if(u!==r)throw new se(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return X.getSizeInBytes(e[f].componentDatatype)-X.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=FIe(i);if(a>0){let u=X.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,p=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=X.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:X.createTypedArray(e[n].componentDatatype,p),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let x=i.values,b=g[n],T=b.pointer,C=i.componentsPerAttribute;for(let A=0;A<C;++A)T[b.index+A]=x[t*C+A];b.index+=b.strideInComponentType}return{buffer:p,offsetsInBytes:c,vertexSizeInBytes:a}}}gp.fromGeometry=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.context,n=y(e.geometry,y.EMPTY_OBJECT),i=y(e.bufferUsage,ke.DYNAMIC_DRAW),o=y(e.attributeLocations,y.EMPTY_OBJECT),r=y(e.interleave,!1),s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=BIe(h);if(l(m)){u=Tt.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let x=m.offsetsInBytes,b=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:x[a],strideInBytes:b}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===X.DOUBLE&&(m=X.FLOAT),u=void 0,l(c.values)&&(u=Tt.createVertexBuffer({context:t,typedArray:X.createTypedArray(m,c.values),usage:i})),f.push({index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize})}let p,g=n.indices;return l(g)&&(ut.computeNumberOfVertices(n)>=P.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?p=Tt.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Be.UNSIGNED_INT}):p=Tt.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Be.UNSIGNED_SHORT})),new gp({context:t,attributes:f,indexBuffer:p})};Object.defineProperties(gp.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});gp.prototype.getAttribute=function(e){return this._attributes[e]};function kIe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=kt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function VIe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}gp.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&kIe(this),this._hasConstantAttributes&&VIe(this,this._gl)):TJ(this._gl,this._attributes,this._indexBuffer)};gp.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};gp.prototype.isDestroyed=function(){return!1};gp.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var oi=gp;function Yo(e){e=y(e,y.EMPTY_OBJECT);let{context:t,source:n,pixelFormat:i=nt.RGBA,pixelDatatype:o=Ke.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new Zt}=e,c=e.preMultiplyAlpha||i===nt.RGB||i===nt.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,p=nt.textureSizeInBytes(i,o,h,h)*6,g=nt.toInternalFormat(i,o,t),m=t._gl,x=m.TEXTURE_CUBE_MAP,b=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=x,this._texture=b,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=p,this._preMultiplyAlpha=c,this._flipY=r;let T=l(n);function C(A){return new vO(t,b,x,A,g,i,o,h,c,r,T)}this._positiveX=C(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=C(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=C(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=C(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=C(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=C(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,CJ(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(x,b),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let A of Yo.faceNames())w6(this[A],n==null?void 0:n[A],0);m.bindTexture(x,null)}Yo.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new Wr({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,y(i,0)),r._unBind(),r.destroy()};Yo.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*UIe(){yield Yo.FaceName.POSITIVEX,yield Yo.FaceName.NEGATIVEX,yield Yo.FaceName.POSITIVEY,yield Yo.FaceName.NEGATIVEY,yield Yo.FaceName.POSITIVEZ,yield Yo.FaceName.NEGATIVEZ}Yo.faceNames=function(){return UIe()};function w6(e,t,n){n=y(n,0);let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,Ke.toWebGLConstant(s,f),null);return}let{arrayBufferView:p}=t,g=4;l(p)&&(g=nt.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(p)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(p=nt.flipY(p,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,Ke.toWebGLConstant(s,f),p)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,Ke.toWebGLConstant(s,f),t))}Yo.loadFace=w6;Object.defineProperties(Yo.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){CJ(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});Yo.getDirection=function(e,t){switch(e){case Yo.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case Yo.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case Yo.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case Yo.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case Yo.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case Yo.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function CJ(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[$t.NEAREST_MIPMAP_NEAREST,$t.NEAREST_MIPMAP_LINEAR,$t.LINEAR_MIPMAP_NEAREST,$t.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===Ke.FLOAT&&!r.textureFloatLinear||s===Ke.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?$t.NEAREST_MIPMAP_NEAREST:$t.NEAREST,i=pi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}Yo.prototype.loadMipmaps=function(e,t){t=y(t,!1);let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of Yo.faceNames())w6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};Yo.prototype.generateMipmap=function(e){e=y(e,_p.DONT_CARE),this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};Yo.createVertexArray=function(e){let t=Ya.createGeometry(Ya.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Ie.POSITION_ONLY})),n=this._attributeLocations=kn.createAttributeLocations(t);return oi.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:ke.STATIC_DRAW})};Yo.prototype.isDestroyed=function(){return!1};Yo.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var Or=Yo;function xd(e){var x,b,T,C,A;e=y(e,y.EMPTY_OBJECT);let{context:t,source:n,pixelFormat:i=nt.RGBA,pixelDatatype:o=Ke.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new Zt}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=(b=(x=n.videoWidth)!=null?x:n.naturalWidth)!=null?b:n.width),l(u)||(u=(C=(T=n.videoHeight)!=null?T:n.naturalHeight)!=null?C:n.height));let f=e.preMultiplyAlpha||i===nt.RGB||i===nt.LUMINANCE,h=nt.toInternalFormat(i,o,t),p=nt.isCompressedFormat(h),g=t._gl,m=p?nt.compressedTextureSizeInBytes(i,c,u):nt.textureSizeInBytes(i,o,c,u);this._id=(A=e.id)!=null?A:Yn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new U(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,vJ(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?nt.isCompressedFormat(h)?zIe(this,n):AJ(this,n):l(n.framebuffer)?GIe(this,n):EJ(this,n),this._initialized=!0):SJ(this),g.bindTexture(this._textureTarget,null)}function zIe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=OO(c),u=OO(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function AJ(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=nt.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:p}=t;if(f&&(p=nt.flipY(p,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,Ke.toWebGLConstant(u,n),p),l(t.mipLevels)){let g=s,m=a;for(let x=0;x<t.mipLevels.length;++x)g=OO(g),m=OO(m),i.texImage2D(o,x+1,r,g,m,0,c,Ke.toWebGLConstant(u,n),t.mipLevels[x])}}function HIe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=nt.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=nt.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,Ke.toWebGLConstant(u,s),t)}function GIe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function EJ(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,Ke.toWebGLConstant(e.pixelDatatype,n),t)}function WIe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,Ke.toWebGLConstant(e.pixelDatatype,o),t)}function OO(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function SJ(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,Ke.toWebGLConstant(e._pixelDatatype,t),null)}xd.create=function(e){return new xd(e)};xd.fromFramebuffer=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.context,n=t._gl,{pixelFormat:i=nt.RGB,framebufferXOffset:o=0,framebufferYOffset:r=0,width:s=n.drawingBufferWidth,height:a=n.drawingBufferHeight,framebuffer:c}=e;return new xd({context:t,width:s,height:a,pixelFormat:i,source:{framebuffer:l(c)?c:t.defaultFramebuffer,xOffset:o,yOffset:r,width:s,height:a}})};Object.defineProperties(xd.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){vJ(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function vJ(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[$t.NEAREST_MIPMAP_NEAREST,$t.NEAREST_MIPMAP_LINEAR,$t.LINEAR_MIPMAP_NEAREST,$t.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ke.FLOAT&&!r.textureFloatLinear||a===Ke.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?$t.NEAREST_MIPMAP_NEAREST:$t.NEAREST,i=pi.NEAREST),r.webgl2&&nt.isDepthFormat(s)&&(n=$t.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}xd.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?AJ(this,i):EJ(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),SJ(this)),this._initialized=!0),f||(l(i.arrayBufferView)?HIe(this,i.arrayBufferView,t,n,c,u):WIe(this,i,t,n)),s.bindTexture(a,null)};xd.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=y(e,0),t=y(t,0),n=y(n,0),i=y(i,0),o=y(o,this._width),r=y(r,this._height);let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};xd.prototype.generateMipmap=function(e){e=y(e,_p.DONT_CARE),this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};xd.prototype.isDestroyed=function(){return!1};xd.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Rt=xd;var RO=`uniform sampler2D image;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5));
rampColor = czm_gammaCorrect(rampColor);
material.diffuse = rampColor.rgb;
material.alpha = rampColor.a;
return material;
}
`;var MO=`uniform sampler2D image;
uniform float strength;
uniform vec2 repeat;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
vec2 centerPixel = fract(repeat * st);
float centerBump = texture(image, centerPixel).channel;
float imageWidth = float(imageDimensions.x);
vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0)));
float rightBump = texture(image, rightPixel).channel;
float imageHeight = float(imageDimensions.y);
vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight)));
float topBump = texture(image, leftPixel).channel;
vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0)));
vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;
material.normal = normalEC;
material.diffuse = vec3(0.01);
return material;
}
`;var LO=`uniform vec4 lightColor;
uniform vec4 darkColor;
uniform vec2 repeat;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
// From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0
// Find the distance from the closest separator (region between two colors)
float scaledWidth = fract(repeat.s * st.s);
scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));
float scaledHeight = fract(repeat.t * st.t);
scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));
float value = min(scaledWidth, scaledHeight);
vec4 currentColor = mix(lightColor, darkColor, b);
vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03);
color = czm_gammaCorrect(color);
material.diffuse = color.rgb;
material.alpha = color.a;
return material;
}
`;var NO=`uniform vec4 lightColor;
uniform vec4 darkColor;
uniform vec2 repeat;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
// From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0
vec4 color = mix(lightColor, darkColor, b);
color = czm_gammaCorrect(color);
material.diffuse = color.rgb;
material.alpha = color.a;
return material;
}
`;var FO=`uniform sampler2D heights;
uniform sampler2D colors;
// This material expects heights to be sorted from lowest to highest.
float getHeight(int idx, float invTexSize)
{
vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5);
#ifdef OES_texture_float
return texture(heights, uv).x;
#else
return czm_unpackFloat(texture(heights, uv));
#endif
}
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
float height = materialInput.height;
float invTexSize = 1.0 / float(heightsDimensions.x);
float minHeight = getHeight(0, invTexSize);
float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize);
// early-out when outside the height range
if (height < minHeight || height > maxHeight) {
material.diffuse = vec3(0.0);
material.alpha = 0.0;
return material;
}
// Binary search to find heights above and below.
int idxBelow = 0;
int idxAbove = heightsDimensions.x;
float heightBelow = minHeight;
float heightAbove = maxHeight;
// while loop not allowed, so use for loop with max iterations.
// maxIterations of 16 supports a texture size up to 65536 (2^16).
const int maxIterations = 16;
for (int i = 0; i < maxIterations; i++) {
if (idxBelow >= idxAbove - 1) {
break;
}
int idxMid = (idxBelow + idxAbove) / 2;
float heightTex = getHeight(idxMid, invTexSize);
if (height > heightTex) {
idxBelow = idxMid;
heightBelow = heightTex;
} else {
idxAbove = idxMid;
heightAbove = heightTex;
}
}
float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow);
vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5);
vec4 color = texture(colors, colorUv);
// undo preumultiplied alpha
if (color.a > 0.0)
{
color.rgb /= color.a;
}
color.rgb = czm_gammaCorrect(color.rgb);
material.diffuse = color.rgb;
material.alpha = color.a;
return material;
}
`;var BO=`uniform vec4 color;
uniform float spacing;
uniform float width;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
float distanceToContour = mod(materialInput.height, spacing);
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
float dxc = abs(dFdx(materialInput.height));
float dyc = abs(dFdy(materialInput.height));
float dF = max(dxc, dyc) * czm_pixelRatio * width;
float alpha = (distanceToContour < dF) ? 1.0 : 0.0;
#else
// If no derivatives available (IE 10?), use pixel ratio
float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0;
#endif
vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a));
material.diffuse = outColor.rgb;
material.alpha = outColor.a;
return material;
}
`;var kO=`uniform sampler2D image;
uniform float minimumHeight;
uniform float maximumHeight;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0);
vec4 rampColor = texture(image, vec2(scaledHeight, 0.5));
rampColor = czm_gammaCorrect(rampColor);
material.diffuse = rampColor.rgb;
material.alpha = rampColor.a;
return material;
}
`;var VO=`uniform vec4 fadeInColor;
uniform vec4 fadeOutColor;
uniform float maximumDistance;
uniform bool repeat;
uniform vec2 fadeDirection;
uniform vec2 time;
float getTime(float t, float coord)
{
float scalar = 1.0 / maximumDistance;
float q = distance(t, coord) * scalar;
if (repeat)
{
float r = distance(t, coord + 1.0) * scalar;
float s = distance(t, coord - 1.0) * scalar;
q = min(min(r, s), q);
}
return clamp(q, 0.0, 1.0);
}
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
float s = getTime(time.x, st.s) * fadeDirection.s;
float t = getTime(time.y, st.t) * fadeDirection.t;
float u = length(vec2(s, t));
vec4 color = mix(fadeInColor, fadeOutColor, u);
color = czm_gammaCorrect(color);
material.emission = color.rgb;
material.alpha = color.a;
return material;
}
`;var UO=`uniform vec4 color;
uniform float cellAlpha;
uniform vec2 lineCount;
uniform vec2 lineThickness;
uniform vec2 lineOffset;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
float scaledWidth = fract(lineCount.s * st.s - lineOffset.s);
scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));
float scaledHeight = fract(lineCount.t * st.t - lineOffset.t);
scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));
float value;
// Fuzz Factor - Controls blurriness of lines
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
const float fuzz = 1.2;
vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0;
// From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13.
vec2 dx = abs(dFdx(st));
vec2 dy = abs(dFdy(st));
vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount;
value = min(
smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth),
smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight));
#else
// If no derivatives available (IE 10?), revert to view-dependent fuzz
const float fuzz = 0.05;
vec2 range = 0.5 - (lineThickness * 0.05);
value = min(
1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth),
1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight));
#endif
// Edges taken from RimLightingMaterial.glsl
// See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html
float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)));
float sRim = smoothstep(0.8, 1.0, dRim);
value *= (1.0 - sRim);
vec4 halfColor;
halfColor.rgb = color.rgb * 0.5;
halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value));
halfColor = czm_gammaCorrect(halfColor);
material.diffuse = halfColor.rgb;
material.emission = halfColor.rgb;
material.alpha = halfColor.a;
return material;
}
`;var zO=`uniform sampler2D image;
uniform float strength;
uniform vec2 repeat;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec4 textureValue = texture(image, fract(repeat * materialInput.st));
vec3 normalTangentSpace = textureValue.channels;
normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0;
normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0);
normalTangentSpace = normalize(normalTangentSpace);
vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;
material.normal = normalEC;
return material;
}
`;var HO=`uniform vec4 color;
float getPointOnLine(vec2 p0, vec2 p1, float x)
{
float slope = (p0.y - p1.y) / (p0.x - p1.x);
return slope * (x - p0.x) + p0.y;
}
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio;
#else
// If no derivatives available (IE 10?), 2.5% of the line will be the arrow head
float base = 0.975;
#endif
vec2 center = vec2(1.0, 0.5);
float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s);
float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s);
float halfWidth = 0.15;
float s = step(0.5 - halfWidth, st.t);
s *= 1.0 - step(0.5 + halfWidth, st.t);
s *= 1.0 - step(base, st.s);
float t = step(base, materialInput.st.s);
t *= 1.0 - step(ptOnUpperLine, st.t);
t *= step(ptOnLowerLine, st.t);
// Find the distance from the closest separator (region between two colors)
float dist;
if (st.s < base)
{
float d1 = abs(st.t - (0.5 - halfWidth));
float d2 = abs(st.t - (0.5 + halfWidth));
dist = min(d1, d2);
}
else
{
float d1 = czm_infinity;
if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth)
{
d1 = abs(st.s - base);
}
float d2 = abs(st.t - ptOnUpperLine);
float d3 = abs(st.t - ptOnLowerLine);
dist = min(min(d1, d2), d3);
}
vec4 outsideColor = vec4(0.0);
vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0));
vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist);
outColor = czm_gammaCorrect(outColor);
material.diffuse = outColor.rgb;
material.alpha = outColor.a;
return material;
}
`;var GO=`uniform vec4 color;
uniform vec4 gapColor;
uniform float dashLength;
uniform float dashPattern;
in float v_polylineAngle;
const float maskLength = 16.0;
mat2 rotate(float rad) {
float c = cos(rad);
float s = sin(rad);
return mat2(
c, s,
-s, c
);
}
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy;
// Get the relative position within the dash from 0 to 1
float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio));
// Figure out the mask index.
float maskIndex = floor(dashPosition * maskLength);
// Test the bit mask.
float maskTest = floor(dashPattern / pow(2.0, maskIndex));
vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color;
if (fragColor.a < 0.005) { // matches 0/255 and 1/255
discard;
}
fragColor = czm_gammaCorrect(fragColor);
material.emission = fragColor.rgb;
material.alpha = fragColor.a;
return material;
}
`;var WO=`uniform vec4 color;
uniform float glowPower;
uniform float taperPower;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5);
if (taperPower <= 0.99999) {
glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5));
}
vec4 fragColor;
fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb);
fragColor.a = clamp(0.0, 1.0, glow) * color.a;
fragColor = czm_gammaCorrect(fragColor);
material.emission = fragColor.rgb;
material.alpha = fragColor.a;
return material;
}
`;var jO=`uniform vec4 color;
uniform vec4 outlineColor;
uniform float outlineWidth;
in float v_width;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width;
float b = step(0.5 - halfInteriorWidth, st.t);
b *= 1.0 - step(0.5 + halfInteriorWidth, st.t);
// Find the distance from the closest separator (region between two colors)
float d1 = abs(st.t - (0.5 - halfInteriorWidth));
float d2 = abs(st.t - (0.5 + halfInteriorWidth));
float dist = min(d1, d2);
vec4 currentColor = mix(outlineColor, color, b);
vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist);
outColor = czm_gammaCorrect(outColor);
material.diffuse = outColor.rgb;
material.alpha = outColor.a;
return material;
}
`;var qO=`uniform vec4 color;
uniform vec4 rimColor;
uniform float width;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
// See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html
float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC));
float s = smoothstep(1.0 - width, 1.0, d);
vec4 outColor = czm_gammaCorrect(color);
vec4 outRimColor = czm_gammaCorrect(rimColor);
material.diffuse = outColor.rgb;
material.emission = outRimColor.rgb * s;
material.alpha = mix(outColor.a, outRimColor.a, s);
return material;
}
`;var YO=`uniform sampler2D image;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5));
rampColor = czm_gammaCorrect(rampColor);
material.diffuse = rampColor.rgb;
material.alpha = rampColor.a;
return material;
}
`;var XO=`uniform vec4 evenColor;
uniform vec4 oddColor;
uniform float offset;
uniform float repeat;
uniform bool horizontal;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
// Based on the Stripes Fragment Shader in the Orange Book (11.1.2)
float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal));
float value = fract((coord - offset) * (repeat * 0.5));
float dist = min(value, min(abs(value - 0.5), 1.0 - value));
vec4 currentColor = mix(evenColor, oddColor, step(0.5, value));
vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist);
color = czm_gammaCorrect(color);
material.diffuse = color.rgb;
material.alpha = color.a;
return material;
}
`;var KO=`uniform vec4 waterColor;
uniform vec4 landColor;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec4 outColor = mix(landColor, waterColor, materialInput.waterMask);
outColor = czm_gammaCorrect(outColor);
material.diffuse = outColor.rgb;
material.alpha = outColor.a;
return material;
}
`;var $O=`// Thanks for the contribution Jonas
// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog
uniform sampler2D specularMap;
uniform sampler2D normalMap;
uniform vec4 baseWaterColor;
uniform vec4 blendColor;
uniform float frequency;
uniform float animationSpeed;
uniform float amplitude;
uniform float specularIntensity;
uniform float fadeFactor;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
float time = czm_frameNumber * animationSpeed;
// fade is a function of the distance from the fragment and the frequency of the waves
float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor);
float specularMapValue = texture(specularMap, materialInput.st).r;
// note: not using directional motion at this time, just set the angle to 0.0;
vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0);
vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude));
// fade out the normal perturbation as we move further from the water surface
normalTangentSpace.xy /= fade;
// attempt to fade out the normal perturbation as we approach non water areas (low specular map value)
normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue);
normalTangentSpace = normalize(normalTangentSpace);
// get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane
float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0);
// fade out water effect as specular map value decreases
material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue;
// base color is a blend of the water and non-water color based on the value from the specular map
// may need a uniform blend factor to better control this
material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue);
// diffuse highlights are based on how perturbed the normal is
material.diffuse += (0.1 * tsPerturbationRatio);
material.diffuse = material.diffuse;
material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace);
material.specular = specularIntensity;
material.shininess = 10.0;
return material;
}
`;function Ge(e){var t;this.type=void 0,this.autoDestroyOldTexture=(t=e.autoDestroyOldTexture)!=null?t:!0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=y(e.minificationFilter,$t.LINEAR),this._magnificationFilter=y(e.magnificationFilter,pi.LINEAR),this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,jIe(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Ge._uniformList[this.type])||(Ge._uniformList[this.type]=Object.keys(this._uniforms))}Ge._uniformList={};Ge.fromType=function(e,t){let n=new Ge({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Ge.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};Ge.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(x){return x.bufferView}),u=u[0]);let h=new Zt({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),p;l(u.internalFormat)?p=new Rt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):p=new Rt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=p;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let x=this.uniforms[m];x.x=p._width,x.y=p._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new Or({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new Zt({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};Ge.prototype.isDestroyed=function(){return!1};Ge.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function jIe(e,t){e=y(e,y.EMPTY_OBJECT),t._strict=y(e.strict,!1),t._count=y(e.count,0),t._template=He(y(e.fabric,y.EMPTY_OBJECT)),t._template.uniforms=He(y(t._template.uniforms,y.EMPTY_OBJECT)),t._template.materials=He(y(t._template.materials,y.EMPTY_OBJECT)),t.type=l(t._template.type)?t._template.type:Yn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=Ge._materialCache.getMaterial(t.type);if(l(i)){let r=He(i.fabric,!0);t._template=At(t._template,r,!0),n=i.translucent}KIe(t),l(i)||Ge._materialCache.addMaterial(t.type,t),ZIe(t),tPe(t),iPe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=y(n,o),n=y(e.translucent,n),l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function D6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function wJ(e,t){}function qIe(e,t){}var YIe=["type","materials","uniforms","components","source"],XIe=["diffuse","specular","shininess","normal","emission","alpha"];function KIe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;D6(t,YIe,wJ,!0),D6(o,XIe,wJ,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);D6(n,r,qIe,!1)}function $Ie(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function ZIe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n}
`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput)
{
`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput);
`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&$Ie(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s};
`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha};
`:e.shaderSource+=`material.${o} = ${t[o]};
`}e.shaderSource+=`return material;
}
`}}var DJ={mat2:Mi,mat3:Z,mat4:F},QIe=/\.ktx2$/i;function JIe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Ge.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let p=new Zt({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Rt({context:i,source:r,sampler:p}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Rt&&r!==c){n._texturePaths[e]=void 0;let p=n._textures[e];l(p)&&p!==n._defaultTexture&&!p.isDestroyed()&&n.autoDestroyOldTexture&&p.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof Ee;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let p=h?r:Ee.createIfNeeded(r),g;QIe.test(p.url)?g=eu(p.url):g=p.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function ePe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof Or){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Ge.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[Ee.createIfNeeded(i.positiveX).fetchImage(),Ee.createIfNeeded(i.negativeX).fetchImage(),Ee.createIfNeeded(i.positiveY).fetchImage(),Ee.createIfNeeded(i.negativeY).fetchImage(),Ee.createIfNeeded(i.positiveZ).fetchImage(),Ee.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function tPe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&IJ(e,n)}function IJ(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=nPe(o),s;if(r==="channels")s=yv(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;oPe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},IJ(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=yv(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(JIe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(ePe(t));else if(r.indexOf("mat")!==-1){let u=new DJ[r];e._uniforms[c]=function(){return DJ[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function nPe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof Ee||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof Rt)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Ge.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function iPe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ge({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=At(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;yv(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=yv(e,i,a)}}function yv(e,t,n,i){i=y(i,!0);let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function oPe(e,t,n){return yv(e,t,t,n)}Ge._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Ge.DefaultImageId="czm_defaultImage";Ge.DefaultCubeMapId="czm_defaultCubeMap";Ge.ColorType="Color";Ge._materialCache.addMaterial(Ge.ColorType,{fabric:{type:Ge.ColorType,uniforms:{color:new z(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ge.ImageType="Image";Ge._materialCache.addMaterial(Ge.ImageType,{fabric:{type:Ge.ImageType,uniforms:{image:Ge.DefaultImageId,repeat:new U(1,1),color:new z(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ge.DiffuseMapType="DiffuseMap";Ge._materialCache.addMaterial(Ge.DiffuseMapType,{fabric:{type:Ge.DiffuseMapType,uniforms:{image:Ge.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ge.AlphaMapType="AlphaMap";Ge._materialCache.addMaterial(Ge.AlphaMapType,{fabric:{type:Ge.AlphaMapType,uniforms:{image:Ge.DefaultImageId,channel:"a",repeat:new U(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ge.SpecularMapType="SpecularMap";Ge._materialCache.addMaterial(Ge.SpecularMapType,{fabric:{type:Ge.SpecularMapType,uniforms:{image:Ge.DefaultImageId,channel:"r",repeat:new U(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ge.EmissionMapType="EmissionMap";Ge._materialCache.addMaterial(Ge.EmissionMapType,{fabric:{type:Ge.EmissionMapType,uniforms:{image:Ge.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ge.BumpMapType="BumpMap";Ge._materialCache.addMaterial(Ge.BumpMapType,{fabric:{type:Ge.BumpMapType,uniforms:{image:Ge.DefaultImageId,channel:"r",strength:.8,repeat:new U(1,1)},source:MO},translucent:!1});Ge.NormalMapType="NormalMap";Ge._materialCache.addMaterial(Ge.NormalMapType,{fabric:{type:Ge.NormalMapType,uniforms:{image:Ge.DefaultImageId,channels:"rgb",strength:.8,repeat:new U(1,1)},source:zO},translucent:!1});Ge.GridType="Grid";Ge._materialCache.addMaterial(Ge.GridType,{fabric:{type:Ge.GridType,uniforms:{color:new z(0,1,0,1),cellAlpha:.1,lineCount:new U(8,8),lineThickness:new U(1,1),lineOffset:new U(0,0)},source:UO},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Ge.StripeType="Stripe";Ge._materialCache.addMaterial(Ge.StripeType,{fabric:{type:Ge.StripeType,uniforms:{horizontal:!0,evenColor:new z(1,1,1,.5),oddColor:new z(0,0,1,.5),offset:0,repeat:5},source:XO},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Ge.CheckerboardType="Checkerboard";Ge._materialCache.addMaterial(Ge.CheckerboardType,{fabric:{type:Ge.CheckerboardType,uniforms:{lightColor:new z(1,1,1,.5),darkColor:new z(0,0,0,.5),repeat:new U(5,5)},source:LO},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ge.DotType="Dot";Ge._materialCache.addMaterial(Ge.DotType,{fabric:{type:Ge.DotType,uniforms:{lightColor:new z(1,1,0,.75),darkColor:new z(0,1,1,.75),repeat:new U(5,5)},source:NO},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ge.WaterType="Water";Ge._materialCache.addMaterial(Ge.WaterType,{fabric:{type:Ge.WaterType,uniforms:{baseWaterColor:new z(.2,.3,.6,1),blendColor:new z(0,1,.699,1),specularMap:Ge.DefaultImageId,normalMap:Ge.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:$O},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Ge.RimLightingType="RimLighting";Ge._materialCache.addMaterial(Ge.RimLightingType,{fabric:{type:Ge.RimLightingType,uniforms:{color:new z(1,0,0,.7),rimColor:new z(1,1,1,.4),width:.3},source:qO},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Ge.FadeType="Fade";Ge._materialCache.addMaterial(Ge.FadeType,{fabric:{type:Ge.FadeType,uniforms:{fadeInColor:new z(1,0,0,1),fadeOutColor:new z(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new U(.5,.5)},source:VO},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Ge.PolylineArrowType="PolylineArrow";Ge._materialCache.addMaterial(Ge.PolylineArrowType,{fabric:{type:Ge.PolylineArrowType,uniforms:{color:new z(1,1,1,1)},source:HO},translucent:!0});Ge.PolylineDashType="PolylineDash";Ge._materialCache.addMaterial(Ge.PolylineDashType,{fabric:{type:Ge.PolylineDashType,uniforms:{color:new z(1,0,1,1),gapColor:new z(0,0,0,0),dashLength:16,dashPattern:255},source:GO},translucent:!0});Ge.PolylineGlowType="PolylineGlow";Ge._materialCache.addMaterial(Ge.PolylineGlowType,{fabric:{type:Ge.PolylineGlowType,uniforms:{color:new z(0,.5,1,1),glowPower:.25,taperPower:1},source:WO},translucent:!0});Ge.PolylineOutlineType="PolylineOutline";Ge._materialCache.addMaterial(Ge.PolylineOutlineType,{fabric:{type:Ge.PolylineOutlineType,uniforms:{color:new z(1,1,1,1),outlineColor:new z(1,0,0,1),outlineWidth:1},source:jO},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Ge.ElevationContourType="ElevationContour";Ge._materialCache.addMaterial(Ge.ElevationContourType,{fabric:{type:Ge.ElevationContourType,uniforms:{spacing:100,color:new z(1,0,0,1),width:1},source:BO},translucent:!1});Ge.ElevationRampType="ElevationRamp";Ge._materialCache.addMaterial(Ge.ElevationRampType,{fabric:{type:Ge.ElevationRampType,uniforms:{image:Ge.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:kO},translucent:!1});Ge.SlopeRampMaterialType="SlopeRamp";Ge._materialCache.addMaterial(Ge.SlopeRampMaterialType,{fabric:{type:Ge.SlopeRampMaterialType,uniforms:{image:Ge.DefaultImageId},source:YO},translucent:!1});Ge.AspectRampMaterialType="AspectRamp";Ge._materialCache.addMaterial(Ge.AspectRampMaterialType,{fabric:{type:Ge.AspectRampMaterialType,uniforms:{image:Ge.DefaultImageId},source:RO},translucent:!1});Ge.ElevationBandType="ElevationBand";Ge._materialCache.addMaterial(Ge.ElevationBandType,{fabric:{type:Ge.ElevationBandType,uniforms:{heights:Ge.DefaultImageId,colors:Ge.DefaultImageId},source:FO},translucent:!0});Ge.WaterMaskType="WaterMask";Ge._materialCache.addMaterial(Ge.WaterMaskType,{fabric:{type:Ge.WaterMaskType,source:KO,uniforms:{waterColor:new z(1,1,1,1),landColor:new z(0,0,0,0)}},translucent:!1});var Zi=Ge;function X0(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.translucent,!0),n=y(e.closed,!1),i=y(e.materialSupport,X0.MaterialSupport.TEXTURED);this.material=l(e.material)?e.material:Zi.fromType(Zi.ColorType),this.translucent=t,this._vertexShaderSource=y(e.vertexShaderSource,i.vertexShaderSource),this._fragmentShaderSource=y(e.fragmentShaderSource,i.fragmentShaderSource),this._renderState=ro.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=y(e.flat,!1),this._faceForward=y(e.faceForward,!n)}Object.defineProperties(X0.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});X0.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;X0.prototype.isTranslucent=ro.prototype.isTranslucent;X0.prototype.getRenderState=ro.prototype.getRenderState;X0.MaterialSupport={BASIC:Object.freeze({vertexFormat:Ie.POSITION_AND_NORMAL,vertexShaderSource:cO,fragmentShaderSource:aO}),TEXTURED:Object.freeze({vertexFormat:Ie.POSITION_NORMAL_AND_ST,vertexShaderSource:uO,fragmentShaderSource:lO}),ALL:Object.freeze({vertexFormat:Ie.ALL,vertexShaderSource:sO,fragmentShaderSource:rO})};var uo=X0;var ZO=`in vec3 v_positionEC;
in vec3 v_normalEC;
in vec4 v_color;
void main()
{
vec3 positionToEyeEC = -v_positionEC;
vec3 normalEC = normalize(v_normalEC);
#ifdef FACE_FORWARD
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
#endif
vec4 color = czm_gammaCorrect(v_color);
czm_materialInput materialInput;
materialInput.normalEC = normalEC;
materialInput.positionToEyeEC = positionToEyeEC;
czm_material material = czm_getDefaultMaterial(materialInput);
material.diffuse = color.rgb;
material.alpha = color.a;
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
}
`;var QO=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 normal;
in vec4 color;
in float batchId;
out vec3 v_positionEC;
out vec3 v_normalEC;
out vec4 v_color;
void main()
{
vec4 p = czm_computePosition();
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
v_normalEC = czm_normal * normal; // normal in eye coordinates
v_color = color;
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;var GT=`in vec4 v_color;
void main()
{
out_FragColor = czm_gammaCorrect(v_color);
}
`;var JO=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec4 color;
in float batchId;
out vec4 v_color;
void main()
{
vec4 p = czm_computePosition();
v_color = color;
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;function yp(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.translucent,!0),n=y(e.closed,!1),i=y(e.flat,!1),o=i?JO:QO,r=i?GT:ZO,s=i?yp.FLAT_VERTEX_FORMAT:yp.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=y(e.vertexShaderSource,o),this._fragmentShaderSource=y(e.fragmentShaderSource,r),this._renderState=ro.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=y(e.faceForward,!n)}Object.defineProperties(yp.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});yp.VERTEX_FORMAT=Ie.POSITION_AND_NORMAL;yp.FLAT_VERTEX_FORMAT=Ie.POSITION_ONLY;yp.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;yp.prototype.isTranslucent=ro.prototype.isTranslucent;yp.prototype.getRenderState=ro.prototype.getRenderState;var ln=yp;function WT(e){this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(WT.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color")});WT.prototype.getType=function(e){return"Color"};var rPe=new $;WT.prototype.getValue=function(e,t){return l(e)||(e=$.now(rPe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,z.WHITE,t.color),t};WT.prototype.equals=function(e){return this===e||e instanceof WT&&Y.equals(this._color,e._color)};var zt=WT;function Z_(e){e=y(e,y.EMPTY_OBJECT),this._ellipsoid=y(e.ellipsoid,ee.default),this._rectangle=y(e.rectangle,ae.MAX_VALUE),this._projection=new Ri(this._ellipsoid),this._numberOfLevelZeroTilesX=y(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=y(e.numberOfLevelZeroTilesY,1)}Object.defineProperties(Z_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});Z_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};Z_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};Z_.prototype.rectangleToNativeRectangle=function(e,t){let n=P.toDegrees(e.west),i=P.toDegrees(e.south),o=P.toDegrees(e.east),r=P.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};Z_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=P.toDegrees(o.west),o.south=P.toDegrees(o.south),o.east=P.toDegrees(o.east),o.north=P.toDegrees(o.north),o};Z_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,p=o.north-(t+1)*f;return l(i)||(i=new ae(c,p,u,h)),i.west=c,i.south=p,i.east=u,i.north=h,i};Z_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=P.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new U(u,f)};var Qi=Z_;var PJ=new d,OJ=new d,RJ=new fe,I6=new d,sPe=new d,MJ=new ce,aPe=new Qi,xv=[new fe,new fe,new fe,new fe],bv=new U,jr={};jr.initialize=function(){let e=jr._initPromise;return l(e)||(e=Ee.fetchJson(nn("Assets/approximateTerrainHeights.json")).then(function(t){jr._terrainHeights=t}),jr._initPromise=e),e};jr.getMinimumMaximumHeights=function(e,t){t=y(t,ee.default);let n=LJ(e),i=jr._defaultMinTerrainHeight,o=jr._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=jr._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,RJ),PJ),t.cartographicToCartesian(ae.southwest(e,RJ),OJ),d.midpoint(OJ,PJ,I6);let a=t.scaleToGeodeticSurface(I6,sPe);if(l(a)){let c=d.distance(I6,a);i=Math.min(i,-c)}else i=jr._defaultMinTerrainHeight}return i=Math.max(jr._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};jr.getBoundingSphere=function(e,t){t=y(t,ee.default);let n=LJ(e),i=jr._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=jr._terrainHeights[r];l(s)&&(i=s[1])}let o=ce.fromRectangle3D(e,t,0);return ce.fromRectangle3D(e,t,i,MJ),ce.union(o,MJ,o)};function LJ(e){fe.fromRadians(e.east,e.north,0,xv[0]),fe.fromRadians(e.west,e.north,0,xv[1]),fe.fromRadians(e.east,e.south,0,xv[2]),fe.fromRadians(e.west,e.south,0,xv[3]);let t=0,n=0,i=0,o=0,r=jr._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=xv[c];if(aPe.positionToTileXY(u,s,bv),c===0)i=bv.x,o=bv.y;else if(i!==bv.x||o!==bv.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}jr._terrainHeightsMaxLevel=6;jr._defaultMaxTerrainHeight=9e3;jr._defaultMinTerrainHeight=-1e5;jr._terrainHeights=void 0;jr._initPromise=void 0;Object.defineProperties(jr,{initialized:{get:function(){return l(jr._terrainHeights)}}});var di=jr;function wc(e,t,n){this.minimum=d.clone(y(e,d.ZERO)),this.maximum=d.clone(y(t,d.ZERO)),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}wc.fromCorners=function(e,t,n){return l(n)||(n=new wc),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};wc.fromPoints=function(e,t){if(l(t)||(t=new wc),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let p=e[h],g=p.x,m=p.y,x=p.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(x,o),a=Math.max(x,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};wc.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new wc(e.minimum,e.maximum,e.center)};wc.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var eR=new d;wc.intersectPlane=function(e,t){eR=d.subtract(e.maximum,e.minimum,eR);let n=d.multiplyByScalar(eR,.5,eR),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?jt.INSIDE:r+o<0?jt.OUTSIDE:jt.INTERSECTING};wc.prototype.clone=function(e){return wc.clone(this,e)};wc.prototype.intersectPlane=function(e){return wc.intersectPlane(this,e)};wc.prototype.equals=function(e){return wc.equals(this,e)};var K0=wc;var P6=new oe;function Lh(e,t){t=y(t,ee.default),e=t.scaleToGeodeticSurface(e);let n=Mt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(F.getColumn(n,0,P6)),this._yAxis=d.fromCartesian4(F.getColumn(n,1,P6));let i=d.fromCartesian4(F.getColumn(n,2,P6));this._plane=sn.fromPointNormal(e,i)}Object.defineProperties(Lh.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var cPe=new K0;Lh.fromPoints=function(e,t){let n=K0.fromPoints(e,cPe);return new Lh(n.center,t)};var NJ=new pn,tR=new d;Lh.prototype.projectPointOntoPlane=function(e,t){let n=NJ;n.origin=e,d.normalize(e,n.direction);let i=ti.rayPlane(n,this._plane,tR);if(l(i)||(d.negate(n.direction,n.direction),i=ti.rayPlane(n,this._plane,tR)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new U(r,s)}};Lh.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};Lh.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new U);let n=NJ;n.origin=e,d.clone(this._plane.normal,n.direction);let i=ti.rayPlane(n,this._plane,tR);l(i)||(d.negate(n.direction,n.direction),i=ti.rayPlane(n,this._plane,tR));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};Lh.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var lPe=new d;Lh.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=lPe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};Lh.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var os=Lh;function Li(e,t){this.center=d.clone(y(e,d.ZERO)),this.halfAxes=Z.clone(y(t,Z.ZERO))}Li.packedLength=d.packedLength+Z.packedLength;Li.pack=function(e,t,n){return n=y(n,0),d.pack(e.center,t,n),Z.pack(e.halfAxes,t,n+d.packedLength),t};Li.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new Li),d.unpack(e,t,n.center),Z.unpack(e,t+d.packedLength,n.halfAxes),n};var uPe=new d,fPe=new d,dPe=new d,hPe=new d,mPe=new d,pPe=new d,_Pe=new Z,gPe={unitary:new Z,diagonal:new Z};Li.fromPoints=function(e,t){if(l(t)||(t=new Li),!l(e)||e.length===0)return t.halfAxes=Z.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],uPe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,p;for(n=0;n<i;n++)p=d.subtract(e[n],o,fPe),s+=p.x*p.x,a+=p.x*p.y,c+=p.x*p.z,u+=p.y*p.y,f+=p.y*p.z,h+=p.z*p.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=_Pe;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=Z.computeEigenDecomposition(g,gPe),x=Z.clone(m.unitary,t.halfAxes),b=Z.getColumn(x,0,hPe),T=Z.getColumn(x,1,mPe),C=Z.getColumn(x,2,pPe),A=-Number.MAX_VALUE,E=-Number.MAX_VALUE,v=-Number.MAX_VALUE,D=Number.MAX_VALUE,R=Number.MAX_VALUE,O=Number.MAX_VALUE;for(n=0;n<i;n++)p=e[n],A=Math.max(d.dot(b,p),A),E=Math.max(d.dot(T,p),E),v=Math.max(d.dot(C,p),v),D=Math.min(d.dot(b,p),D),R=Math.min(d.dot(T,p),R),O=Math.min(d.dot(C,p),O);b=d.multiplyByScalar(b,.5*(D+A),b),T=d.multiplyByScalar(T,.5*(R+E),T),C=d.multiplyByScalar(C,.5*(O+v),C);let M=d.add(b,T,t.center);d.add(M,C,M);let N=dPe;return N.x=A-D,N.y=E-R,N.z=v-O,d.multiplyByScalar(N,.5,N),Z.multiplyByScale(t.halfAxes,N,t.halfAxes),t};var zJ=new d,yPe=new d;function FJ(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new Li);let h=f.halfAxes;Z.setColumn(h,0,t,h),Z.setColumn(h,1,n,h),Z.setColumn(h,2,i,h);let p=zJ;p.x=(o+r)/2,p.y=(s+a)/2,p.z=(c+u)/2;let g=yPe;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return p=Z.multiplyByVector(h,p,p),d.add(e,p,m),Z.multiplyByScale(h,g,h),f}var BJ=new fe,xPe=new d,bPe=new fe,TPe=new fe,CPe=new fe,APe=new fe,EPe=new fe,SPe=new d,kJ=new d,vPe=new d,VJ=new d,wPe=new d,DPe=new U,IPe=new U,PPe=new U,OPe=new U,RPe=new U,MPe=new d,LPe=new d,NPe=new d,FPe=new d,BPe=new U,kPe=new d,VPe=new d,UPe=new d,zPe=new sn(d.UNIT_X,0);Li.fromRectangle=function(e,t,n,i,o){t=y(t,0),n=y(n,0),i=y(i,ee.default);let r,s,a,c,u,f,h;if(e.width<=P.PI){let R=ae.center(e,BJ),O=i.cartographicToCartesian(R,xPe),M=new os(O,i);h=M.plane;let N=R.longitude,_=e.south<0&&e.north>0?0:R.latitude,S=fe.fromRadians(N,e.north,n,bPe),w=fe.fromRadians(e.west,e.north,n,TPe),I=fe.fromRadians(e.west,_,n,CPe),L=fe.fromRadians(e.west,e.south,n,APe),B=fe.fromRadians(N,e.south,n,EPe),H=i.cartographicToCartesian(S,SPe),V=i.cartographicToCartesian(w,kJ),G=i.cartographicToCartesian(I,vPe),k=i.cartographicToCartesian(L,VJ),W=i.cartographicToCartesian(B,wPe),q=M.projectPointToNearestOnPlane(H,DPe),J=M.projectPointToNearestOnPlane(V,IPe),j=M.projectPointToNearestOnPlane(G,PPe),K=M.projectPointToNearestOnPlane(k,OPe),Q=M.projectPointToNearestOnPlane(W,RPe);return r=Math.min(J.x,j.x,K.x),s=-r,c=Math.max(J.y,q.y),a=Math.min(K.y,Q.y),w.height=L.height=t,V=i.cartographicToCartesian(w,kJ),k=i.cartographicToCartesian(L,VJ),u=Math.min(sn.getPointDistance(h,V),sn.getPointDistance(h,k)),f=n,FJ(M.origin,M.xAxis,M.yAxis,M.zAxis,r,s,a,c,u,f,o)}let p=e.south>0,g=e.north<0,m=p?e.south:g?e.north:0,x=ae.center(e,BJ).longitude,b=d.fromRadians(x,m,n,i,MPe);b.z=0;let C=Math.abs(b.x)<P.EPSILON10&&Math.abs(b.y)<P.EPSILON10?d.UNIT_X:d.normalize(b,LPe),A=d.UNIT_Z,E=d.cross(C,A,NPe);h=sn.fromPointNormal(b,C,zPe);let v=d.fromRadians(x+P.PI_OVER_TWO,m,n,i,FPe);s=d.dot(sn.projectPointOntoPlane(h,v,BPe),E),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,kPe).z,a=d.fromRadians(0,e.south,p?t:n,i,VPe).z;let D=d.fromRadians(e.east,m,n,i,UPe);return u=sn.getPointDistance(h,D),f=0,FJ(b,E,A,C,r,s,a,c,u,f,o)};Li.fromTransformation=function(e,t){return l(t)||(t=new Li),t.center=F.getTranslation(e,t.center),t.halfAxes=F.getMatrix3(e,t.halfAxes),t.halfAxes=Z.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};Li.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),Z.clone(e.halfAxes,t.halfAxes),t):new Li(e.center,e.halfAxes)};Li.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[Z.COLUMN0ROW0]+s*o[Z.COLUMN0ROW1]+a*o[Z.COLUMN0ROW2])+Math.abs(r*o[Z.COLUMN1ROW0]+s*o[Z.COLUMN1ROW1]+a*o[Z.COLUMN1ROW2])+Math.abs(r*o[Z.COLUMN2ROW0]+s*o[Z.COLUMN2ROW1]+a*o[Z.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?jt.OUTSIDE:u>=c?jt.INSIDE:jt.INTERSECTING};var HJ=new d,GJ=new d,WJ=new d,HPe=new d,UJ=new d,GPe=new d;Li.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,zJ),i=e.halfAxes,o=Z.getColumn(i,0,HJ),r=Z.getColumn(i,1,GJ),s=Z.getColumn(i,2,WJ),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,p=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):p=!1;let g=!f+!h+!p,m,x,b;if(g===1){let E=o;m=r,x=s,h?p||(E=s,x=o):(E=r,m=o),b=d.cross(m,x,UJ),E===o?o=b:E===r?r=b:E===s&&(s=b)}else if(g===2){m=o,h?m=r:p&&(m=s);let E=d.UNIT_Y;E.equalsEpsilon(m,P.EPSILON3)&&(E=d.UNIT_X),x=d.cross(m,E,HPe),d.normalize(x,x),b=d.cross(m,x,UJ),d.normalize(b,b),m===o?(r=x,s=b):m===r?(s=x,o=b):m===s&&(o=x,r=b)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let T=GPe;T.x=d.dot(n,o),T.y=d.dot(n,r),T.z=d.dot(n,s);let C=0,A;return T.x<-a?(A=T.x+a,C+=A*A):T.x>a&&(A=T.x-a,C+=A*A),T.y<-c?(A=T.y+c,C+=A*A):T.y>c&&(A=T.y-c,C+=A*A),T.z<-u?(A=T.z+u,C+=A*A):T.z>u&&(A=T.z-u,C+=A*A),C};var WPe=new d,jPe=new d;Li.computePlaneDistances=function(e,t,n,i){l(i)||(i=new qa);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=Z.getColumn(a,0,HJ),u=Z.getColumn(a,1,GJ),f=Z.getColumn(a,2,WJ),h=d.add(c,u,WPe);d.add(h,f,h),d.add(h,s,h);let p=d.subtract(h,t,jPe),g=d.dot(n,p);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,p),g=d.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var qPe=new d,YPe=new d,XPe=new d;Li.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=Z.getColumn(i,0,qPe),r=Z.getColumn(i,1,YPe),s=Z.getColumn(i,2,XPe);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var KPe=new Z;Li.computeTransformation=function(e,t){l(t)||(t=new F);let n=e.center,i=Z.multiplyByUniformScale(e.halfAxes,2,KPe);return F.fromRotationTranslation(i,n,t)};var $Pe=new ce;Li.isOccluded=function(e,t){let n=ce.fromOrientedBoundingBox(e,$Pe);return!t.isBoundingSphereVisible(n)};Li.prototype.intersectPlane=function(e){return Li.intersectPlane(this,e)};Li.prototype.distanceSquaredTo=function(e){return Li.distanceSquaredTo(this,e)};Li.prototype.computePlaneDistances=function(e,t,n){return Li.computePlaneDistances(this,e,t,n)};Li.prototype.computeCorners=function(e){return Li.computeCorners(this,e)};Li.prototype.computeTransformation=function(e){return Li.computeTransformation(this,e)};Li.prototype.isOccluded=function(e){return Li.isOccluded(this,e)};Li.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&Z.equals(e.halfAxes,t.halfAxes)};Li.prototype.clone=function(e){return Li.clone(this,e)};Li.prototype.equals=function(e){return Li.equals(this,e)};var Dn=Li;var nR={};nR.getHeight=function(e,t,n){return(e-n)*t+n};var ZPe=new fe;nR.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,ZPe);if(!l(r))return d.clone(e,o);let s=nR.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Rr=nR;var mr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function Tv(e){e=y(e,y.EMPTY_OBJECT),this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=y(e.primitiveType,Ne.TRIANGLES),this._vertexArray=e.vertexArray,this._count=e.count,this._offset=y(e.offset,0),this._instanceCount=y(e.instanceCount,0),this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=y(e.cull,!0),this.occlude=y(e.occlude,!0),this.executeInClosestFrustum=y(e.executeInClosestFrustum,!1),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.castShadows=y(e.castShadows,!1),this.receiveShadows=y(e.receiveShadows,!1),this.pickOnly=y(e.pickOnly,!1),this.depthForTranslucentClassification=y(e.depthForTranslucentClassification,!1),this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Ka(e,t){return(e._flags&t)===t}function Q_(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(Tv.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Ka(this,mr.CULL)},set:function(e){Ka(this,mr.CULL)!==e&&(Q_(this,mr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Ka(this,mr.OCCLUDE)},set:function(e){Ka(this,mr.OCCLUDE)!==e&&(Q_(this,mr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Ka(this,mr.CAST_SHADOWS)},set:function(e){Ka(this,mr.CAST_SHADOWS)!==e&&(Q_(this,mr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Ka(this,mr.RECEIVE_SHADOWS)},set:function(e){Ka(this,mr.RECEIVE_SHADOWS)!==e&&(Q_(this,mr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Ka(this,mr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Ka(this,mr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(Q_(this,mr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Ka(this,mr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Ka(this,mr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(Q_(this,mr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Ka(this,mr.PICK_ONLY)},set:function(e){Ka(this,mr.PICK_ONLY)!==e&&(Q_(this,mr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Ka(this,mr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Ka(this,mr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(Q_(this,mr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});Tv.shallowClone=function(e,t){if(l(e))return l(t)||(t=new Tv),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};Tv.prototype.execute=function(e,t){e.draw(this,t)};var Qe=Tv;var QPe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,OVERLAY:10,NUMBER_OF_PASSES:11},ve=Object.freeze(QPe);var iR={CLOCKWISE:te.CW,COUNTER_CLOCKWISE:te.CCW};iR.validate=function(e){return e===iR.CLOCKWISE||e===iR.COUNTER_CLOCKWISE};var Cs=Object.freeze(iR);function jJ(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=jJ(e[t]));return Object.freeze(e)}var qJ=jJ;function Fh(e){let t=y(e,y.EMPTY_OBJECT),n=y(t.cull,y.EMPTY_OBJECT),i=y(t.polygonOffset,y.EMPTY_OBJECT),o=y(t.scissorTest,y.EMPTY_OBJECT),r=y(o.rectangle,y.EMPTY_OBJECT),s=y(t.depthRange,y.EMPTY_OBJECT),a=y(t.depthTest,y.EMPTY_OBJECT),c=y(t.colorMask,y.EMPTY_OBJECT),u=y(t.blending,y.EMPTY_OBJECT),f=y(u.color,y.EMPTY_OBJECT),h=y(t.stencilTest,y.EMPTY_OBJECT),p=y(h.frontOperation,y.EMPTY_OBJECT),g=y(h.backOperation,y.EMPTY_OBJECT),m=y(t.sampleCoverage,y.EMPTY_OBJECT),x=t.viewport;this.frontFace=y(t.frontFace,Cs.COUNTER_CLOCKWISE),this.cull={enabled:y(n.enabled,!1),face:y(n.face,te.BACK)},this.lineWidth=y(t.lineWidth,1),this.polygonOffset={enabled:y(i.enabled,!1),factor:y(i.factor,0),units:y(i.units,0)},this.scissorTest={enabled:y(o.enabled,!1),rectangle:je.clone(r)},this.depthRange={near:y(s.near,0),far:y(s.far,1)},this.depthTest={enabled:y(a.enabled,!1),func:y(a.func,te.LESS)},this.colorMask={red:y(c.red,!0),green:y(c.green,!0),blue:y(c.blue,!0),alpha:y(c.alpha,!0)},this.depthMask=y(t.depthMask,!0),this.stencilMask=y(t.stencilMask,-1),this.blending={enabled:y(u.enabled,!1),color:new z(y(f.red,0),y(f.green,0),y(f.blue,0),y(f.alpha,0)),equationRgb:y(u.equationRgb,te.FUNC_ADD),equationAlpha:y(u.equationAlpha,te.FUNC_ADD),functionSourceRgb:y(u.functionSourceRgb,te.ONE),functionSourceAlpha:y(u.functionSourceAlpha,te.ONE),functionDestinationRgb:y(u.functionDestinationRgb,te.ZERO),functionDestinationAlpha:y(u.functionDestinationAlpha,te.ZERO)},this.stencilTest={enabled:y(h.enabled,!1),frontFunction:y(h.frontFunction,te.ALWAYS),backFunction:y(h.backFunction,te.ALWAYS),reference:y(h.reference,0),mask:y(h.mask,-1),frontOperation:{fail:y(p.fail,te.KEEP),zFail:y(p.zFail,te.KEEP),zPass:y(p.zPass,te.KEEP)},backOperation:{fail:y(g.fail,te.KEEP),zFail:y(g.zFail,te.KEEP),zPass:y(g.zPass,te.KEEP)}},this.sampleCoverage={enabled:y(m.enabled,!1),value:y(m.value,1),invert:y(m.invert,!1)},this.viewport=l(x)?new je(x.x,x.y,x.width,x.height):void 0,this.id=0,this._applyFunctions=[]}var JPe=0,Nh={};Fh.fromCache=function(e){let t=JSON.stringify(e),n=Nh[t];if(l(n))return++n.referenceCount,n.state;let i=new Fh(e),o=JSON.stringify(i);return n=Nh[o],l(n)||(i.id=JPe++,n={referenceCount:0,state:i},Nh[o]=n),++n.referenceCount,Nh[t]={referenceCount:1,state:n.state},n.state};Fh.removeFromCache=function(e){let t=new Fh(e),n=JSON.stringify(t),i=Nh[n],o=JSON.stringify(e),r=Nh[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete Nh[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete Nh[n]};Fh.getCache=function(){return Nh};Fh.clearCache=function(){Nh={}};function $0(e,t,n){n?e.enable(t):e.disable(t)}function YJ(e,t){e.frontFace(t.frontFace)}function XJ(e,t){let n=t.cull,i=n.enabled;$0(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function KJ(e,t){e.lineWidth(t.lineWidth)}function $J(e,t){let n=t.polygonOffset,i=n.enabled;$0(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function ZJ(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if($0(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function QJ(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function JJ(e,t){let n=t.depthTest,i=n.enabled;$0(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function eee(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function tee(e,t){e.depthMask(t.depthMask)}function nee(e,t){e.stencilMask(t.stencilMask)}function e1e(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function iee(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;$0(e,e.BLEND,o),o&&(e1e(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function oee(e,t){let n=t.stencilTest,i=n.enabled;if($0(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let p=n.backOperation,g=p.fail,m=p.zFail,x=p.zPass;e.stencilOpSeparate(e.BACK,g,m,x)}}function ree(e,t){let n=t.sampleCoverage,i=n.enabled;$0(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var t1e=new je;function see(e,t,n){let i=y(t.viewport,n.viewport);l(i)||(i=t1e,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}Fh.apply=function(e,t,n){YJ(e,t),XJ(e,t),KJ(e,t),$J(e,t),QJ(e,t),JJ(e,t),eee(e,t),tee(e,t),nee(e,t),oee(e,t),ree(e,t),ZJ(e,t,n),iee(e,t,n),see(e,t,n)};function n1e(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(YJ),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(XJ),e.lineWidth!==t.lineWidth&&n.push(KJ),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push($J),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(QJ),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(JJ),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push(eee),e.depthMask!==t.depthMask&&n.push(tee),e.stencilMask!==t.stencilMask&&n.push(nee),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(oee),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(ree),n}Fh.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=n1e(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let p=0;p<h;++p)f[p](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&ZJ(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&iee(e,n,o),(t!==n||i!==o||i.context!==o.context)&&see(e,n,o)};Fh.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:je.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:z.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?je.clone(e.viewport):void 0}};var Ve=Fh;var i1e=new d;function Pt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var ra={};ra[te.FLOAT]="float";ra[te.FLOAT_VEC2]="vec2";ra[te.FLOAT_VEC3]="vec3";ra[te.FLOAT_VEC4]="vec4";ra[te.INT]="int";ra[te.INT_VEC2]="ivec2";ra[te.INT_VEC3]="ivec3";ra[te.INT_VEC4]="ivec4";ra[te.BOOL]="bool";ra[te.BOOL_VEC2]="bvec2";ra[te.BOOL_VEC3]="bvec3";ra[te.BOOL_VEC4]="bvec4";ra[te.FLOAT_MAT2]="mat2";ra[te.FLOAT_MAT3]="mat3";ra[te.FLOAT_MAT4]="mat4";ra[te.SAMPLER_2D]="sampler2D";ra[te.SAMPLER_CUBE]="samplerCube";Pt.prototype.getDeclaration=function(e){let t=`uniform ${ra[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var o1e={czm_viewport:new Pt({size:1,datatype:te.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Pt({size:1,datatype:te.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Pt({size:1,datatype:te.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Pt({size:1,datatype:te.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Pt({size:1,datatype:te.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Pt({size:1,datatype:te.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Pt({size:1,datatype:te.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Pt({size:1,datatype:te.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return F.getTranslation(e.inverseView,i1e)}}),czm_frameNumber:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Pt({size:1,datatype:te.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Pt({size:1,datatype:te.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Pt({size:1,datatype:te.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Pt({size:1,datatype:te.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Pt({size:9,datatype:te.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Pt({size:1,datatype:te.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Pt({size:1,datatype:te.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Pt({size:1,datatype:te.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Pt({size:1,datatype:te.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},J_=o1e;function r1e(e,t,n,i){switch(t.type){case e.FLOAT:return new aee(e,t,n,i);case e.FLOAT_VEC2:return new cee(e,t,n,i);case e.FLOAT_VEC3:return new lee(e,t,n,i);case e.FLOAT_VEC4:return new uee(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_CUBE:case e.SAMPLER_3D:case e.SAMPLER_2D_ARRAY:return new O6(e,t,n,i);case e.INT:case e.BOOL:return new fee(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new dee(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new hee(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new mee(e,t,n,i);case e.FLOAT_MAT2:return new pee(e,t,n,i);case e.FLOAT_MAT3:return new _ee(e,t,n,i);case e.FLOAT_MAT4:return new gee(e,t,n,i);default:throw new se(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function aee(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}aee.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function cee(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}cee.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function lee(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}lee.prototype.set=function(){let e=this.value;e&&(l(e.red)?z.equals(e,this._value)||(this._value=z.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z))))};function uee(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}uee.prototype.set=function(){let e=this.value;l(e.red)?z.equals(e,this._value)||(this._value=z.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(oe.equals(e,this._value)||(this._value=oe.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function O6(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}O6.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;t&&e.bindTexture(t._target,t._texture)};O6.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function fee(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}fee.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function dee(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}dee.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function hee(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}hee.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function mee(e,t,n,i){this.name=n,this.value=void 0,this._value=new oe,this._gl=e,this._location=i}mee.prototype.set=function(){let e=this.value;oe.equals(e,this._value)||(oe.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var s1e=new Float32Array(4);function pee(e,t,n,i){this.name=n,this.value=void 0,this._value=new Mi,this._gl=e,this._location=i}pee.prototype.set=function(){if(!Mi.equalsArray(this.value,this._value,0)){Mi.clone(this.value,this._value);let e=Mi.toArray(this.value,s1e);this._gl.uniformMatrix2fv(this._location,!1,e)}};var a1e=new Float32Array(9);function _ee(e,t,n,i){this.name=n,this.value=void 0,this._value=new Z,this._gl=e,this._location=i}_ee.prototype.set=function(){if(!Z.equalsArray(this.value,this._value,0)){Z.clone(this.value,this._value);let e=Z.toArray(this.value,a1e);this._gl.uniformMatrix3fv(this._location,!1,e)}};var c1e=new Float32Array(16);function gee(e,t,n,i){this.name=n,this.value=void 0,this._value=new F,this._gl=e,this._location=i}gee.prototype.set=function(){if(!F.equalsArray(this.value,this._value,0)){F.clone(this.value,this._value);let e=F.toArray(this.value,c1e);this._gl.uniformMatrix4fv(this._location,!1,e)}};var oR=r1e;function l1e(e,t,n,i){switch(t.type){case e.FLOAT:return new yee(e,t,n,i);case e.FLOAT_VEC2:return new xee(e,t,n,i);case e.FLOAT_VEC3:return new bee(e,t,n,i);case e.FLOAT_VEC4:return new Tee(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_CUBE:return new R6(e,t,n,i);case e.INT:case e.BOOL:return new Cee(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Aee(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new Eee(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new See(e,t,n,i);case e.FLOAT_MAT2:return new vee(e,t,n,i);case e.FLOAT_MAT3:return new wee(e,t,n,i);case e.FLOAT_MAT4:return new Dee(e,t,n,i);default:throw new se(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function yee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}yee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function xee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}xee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function bee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}bee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Tee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Tee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?z.equalsArray(s,n,o)||(z.pack(s,n,o),i=!0):l(s.x)&&(oe.equalsArray(s,n,o)||(oe.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function R6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}R6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];r&&(e.activeTexture(t+o),e.bindTexture(r._target,r._texture))}};R6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Cee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Cee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Aee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Aee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function Eee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}Eee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function See(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}See.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];oe.equalsArray(s,n,o)||(oe.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function vee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}vee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Mi.equalsArray(s,n,o)||(Mi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function wee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}wee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Z.equalsArray(s,n,o)||(Z.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function Dee(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}Dee.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];F.equalsArray(s,n,o)||(F.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var rR=l1e;var u1e=0;function xp(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=f1e(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=u1e++}xp.fromCache=function(e){return e=y(e,y.EMPTY_OBJECT),e.context.shaderCache.getShaderProgram(e)};xp.replaceCache=function(e){return e=y(e,y.EMPTY_OBJECT),e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(xp.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return sR(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return sR(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return sR(this),this._uniformsByName}}});function Iee(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function f1e(e,t){let n={};if(!kt.highpFloatSupported||!kt.highpIntSupported){let i,o,r,s,a=Iee(e),c=Iee(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var Bh="[Cesium WebGL] ";function d1e(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let p in a)a.hasOwnProperty(p)&&e.bindAttribLocation(s,a[p],p);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${Bh}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${Bh}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${Bh}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${Bh}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${Bh}Vertex shader compile log: ${c}`),console.error(`${Bh} Vertex shader source:
${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${Bh}Fragment shader compile log: ${c}`),console.error(`${Bh} Fragment shader source:
${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new se(u);function h(p,g){if(!l(f))return;let m=f.getTranslatedShaderSource(p);if(m===""){console.error(`${Bh}${g} shader translation failed.`);return}console.error(`${Bh}Translated ${g} shaderSource:
${m}`)}}function h1e(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function m1e(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=oR(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,p,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(p=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),p.push(e.getUniform(t,g))))}else{h=[];for(let x=0;x<a.size;++x)g=e.getUniformLocation(t,`${u}[${x}]`),g!==null&&h.push(g);f=rR(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function p1e(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=J_[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function _1e(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function sR(e){l(e._program)||Pee(e)}function Pee(e){let t=e._program,n=e._gl,i=d1e(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=m1e(n,i),s=p1e(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=h1e(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=_1e(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,p=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Pee(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=p;let b=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(b?b[1]:m.message)}})}xp.prototype._bind=function(){sR(this),this._gl.useProgram(this._program)};xp.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};xp.prototype.isDestroyed=function(){return!1};xp.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};xp.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var Jt=xp;var aR=`/**
* A built-in GLSL floating-point constant for converting radians to degrees.
*
* @alias czm_degreesPerRadian
* @glslConstant
*
* @see CesiumMath.DEGREES_PER_RADIAN
*
* @example
* // GLSL declaration
* const float czm_degreesPerRadian = ...;
*
* // Example
* float deg = czm_degreesPerRadian * rad;
*/
const float czm_degreesPerRadian = 57.29577951308232;
`;var cR=`/**
* A built-in GLSL vec2 constant for defining the depth range.
* This is a workaround to a bug where IE11 does not implement gl_DepthRange.
*
* @alias czm_depthRange
* @glslConstant
*
* @example
* // GLSL declaration
* float depthRangeNear = czm_depthRange.near;
* float depthRangeFar = czm_depthRange.far;
*
*/
const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0);
`;var lR=`/**
* 0.1
*
* @name czm_epsilon1
* @glslConstant
*/
const float czm_epsilon1 = 0.1;
`;var uR=`/**
* 0.01
*
* @name czm_epsilon2
* @glslConstant
*/
const float czm_epsilon2 = 0.01;
`;var fR=`/**
* 0.001
*
* @name czm_epsilon3
* @glslConstant
*/
const float czm_epsilon3 = 0.001;
`;var dR=`/**
* 0.0001
*
* @name czm_epsilon4
* @glslConstant
*/
const float czm_epsilon4 = 0.0001;
`;var hR=`/**
* 0.00001
*
* @name czm_epsilon5
* @glslConstant
*/
const float czm_epsilon5 = 0.00001;
`;var mR=`/**
* 0.000001
*
* @name czm_epsilon6
* @glslConstant
*/
const float czm_epsilon6 = 0.000001;
`;var pR=`/**
* 0.0000001
*
* @name czm_epsilon7
* @glslConstant
*/
const float czm_epsilon7 = 0.0000001;
`;var _R=`/**
* DOC_TBA
*
* @name czm_infinity
* @glslConstant
*/
const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp?
`;var gR=`/**
* A built-in GLSL floating-point constant for <code>1/pi</code>.
*
* @alias czm_oneOverPi
* @glslConstant
*
* @see CesiumMath.ONE_OVER_PI
*
* @example
* // GLSL declaration
* const float czm_oneOverPi = ...;
*
* // Example
* float pi = 1.0 / czm_oneOverPi;
*/
const float czm_oneOverPi = 0.3183098861837907;
`;var yR=`/**
* A built-in GLSL floating-point constant for <code>1/2pi</code>.
*
* @alias czm_oneOverTwoPi
* @glslConstant
*
* @see CesiumMath.ONE_OVER_TWO_PI
*
* @example
* // GLSL declaration
* const float czm_oneOverTwoPi = ...;
*
* // Example
* float pi = 2.0 * czm_oneOverTwoPi;
*/
const float czm_oneOverTwoPi = 0.15915494309189535;
`;var xR=`/**
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE}
*
* @name czm_passCesium3DTile
* @glslConstant
*
* @see czm_pass
*/
const float czm_passCesium3DTile = 4.0;
`;var bR=`/**
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION}
*
* @name czm_passCesium3DTileClassification
* @glslConstant
*
* @see czm_pass
*/
const float czm_passCesium3DTileClassification = 5.0;
`;var TR=`/**
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW}
*
* @name czm_passCesium3DTileClassificationIgnoreShow
* @glslConstant
*
* @see czm_pass
*/
const float czm_passCesium3DTileClassificationIgnoreShow = 6.0;
`;var CR=`/**
* The automatic GLSL constant for {@link Pass#CLASSIFICATION}
*
* @name czm_passClassification
* @glslConstant
*
* @see czm_pass
*/
const float czm_passClassification = 7.0;
`;var AR=`/**
* The automatic GLSL constant for {@link Pass#COMPUTE}
*
* @name czm_passCompute
* @glslConstant
*
* @see czm_pass
*/
const float czm_passCompute = 1.0;
`;var ER=`/**
* The automatic GLSL constant for {@link Pass#ENVIRONMENT}
*
* @name czm_passEnvironment
* @glslConstant
*
* @see czm_pass
*/
const float czm_passEnvironment = 0.0;
`;var SR=`/**
* The automatic GLSL constant for {@link Pass#GLOBE}
*
* @name czm_passGlobe
* @glslConstant
*
* @see czm_pass
*/
const float czm_passGlobe = 2.0;
`;var vR=`/**
* The automatic GLSL constant for {@link Pass#OPAQUE}
*
* @name czm_passOpaque
* @glslConstant
*
* @see czm_pass
*/
const float czm_passOpaque = 7.0;
`;var wR=`/**
* The automatic GLSL constant for {@link Pass#OVERLAY}
*
* @name czm_passOverlay
* @glslConstant
*
* @see czm_pass
*/
const float czm_passOverlay = 10.0;
`;var DR=`/**
* The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION}
*
* @name czm_passTerrainClassification
* @glslConstant
*
* @see czm_pass
*/
const float czm_passTerrainClassification = 3.0;
`;var IR=`/**
* The automatic GLSL constant for {@link Pass#TRANSLUCENT}
*
* @name czm_passTranslucent
* @glslConstant
*
* @see czm_pass
*/
const float czm_passTranslucent = 8.0;
`;var PR=`/**
* The automatic GLSL constant for {@link Pass#VOXELS}
*
* @name czm_passVoxels
* @glslConstant
*
* @see czm_pass
*/
const float czm_passVoxels = 9.0;
`;var OR=`/**
* A built-in GLSL floating-point constant for <code>Math.PI</code>.
*
* @alias czm_pi
* @glslConstant
*
* @see CesiumMath.PI
*
* @example
* // GLSL declaration
* const float czm_pi = ...;
*
* // Example
* float twoPi = 2.0 * czm_pi;
*/
const float czm_pi = 3.141592653589793;
`;var RR=`/**
* A built-in GLSL floating-point constant for <code>pi/4</code>.
*
* @alias czm_piOverFour
* @glslConstant
*
* @see CesiumMath.PI_OVER_FOUR
*
* @example
* // GLSL declaration
* const float czm_piOverFour = ...;
*
* // Example
* float pi = 4.0 * czm_piOverFour;
*/
const float czm_piOverFour = 0.7853981633974483;
`;var MR=`/**
* A built-in GLSL floating-point constant for <code>pi/6</code>.
*
* @alias czm_piOverSix
* @glslConstant
*
* @see CesiumMath.PI_OVER_SIX
*
* @example
* // GLSL declaration
* const float czm_piOverSix = ...;
*
* // Example
* float pi = 6.0 * czm_piOverSix;
*/
const float czm_piOverSix = 0.5235987755982988;
`;var LR=`/**
* A built-in GLSL floating-point constant for <code>pi/3</code>.
*
* @alias czm_piOverThree
* @glslConstant
*
* @see CesiumMath.PI_OVER_THREE
*
* @example
* // GLSL declaration
* const float czm_piOverThree = ...;
*
* // Example
* float pi = 3.0 * czm_piOverThree;
*/
const float czm_piOverThree = 1.0471975511965976;
`;var NR=`/**
* A built-in GLSL floating-point constant for <code>pi/2</code>.
*
* @alias czm_piOverTwo
* @glslConstant
*
* @see CesiumMath.PI_OVER_TWO
*
* @example
* // GLSL declaration
* const float czm_piOverTwo = ...;
*
* // Example
* float pi = 2.0 * czm_piOverTwo;
*/
const float czm_piOverTwo = 1.5707963267948966;
`;var FR=`/**
* A built-in GLSL floating-point constant for converting degrees to radians.
*
* @alias czm_radiansPerDegree
* @glslConstant
*
* @see CesiumMath.RADIANS_PER_DEGREE
*
* @example
* // GLSL declaration
* const float czm_radiansPerDegree = ...;
*
* // Example
* float rad = czm_radiansPerDegree * deg;
*/
const float czm_radiansPerDegree = 0.017453292519943295;
`;var BR=`/**
* The constant identifier for the 2D {@link SceneMode}
*
* @name czm_sceneMode2D
* @glslConstant
* @see czm_sceneMode
* @see czm_sceneModeColumbusView
* @see czm_sceneMode3D
* @see czm_sceneModeMorphing
*/
const float czm_sceneMode2D = 2.0;
`;var kR=`/**
* The constant identifier for the 3D {@link SceneMode}
*
* @name czm_sceneMode3D
* @glslConstant
* @see czm_sceneMode
* @see czm_sceneMode2D
* @see czm_sceneModeColumbusView
* @see czm_sceneModeMorphing
*/
const float czm_sceneMode3D = 3.0;
`;var VR=`/**
* The constant identifier for the Columbus View {@link SceneMode}
*
* @name czm_sceneModeColumbusView
* @glslConstant
* @see czm_sceneMode
* @see czm_sceneMode2D
* @see czm_sceneMode3D
* @see czm_sceneModeMorphing
*/
const float czm_sceneModeColumbusView = 1.0;
`;var UR=`/**
* The constant identifier for the Morphing {@link SceneMode}
*
* @name czm_sceneModeMorphing
* @glslConstant
* @see czm_sceneMode
* @see czm_sceneMode2D
* @see czm_sceneModeColumbusView
* @see czm_sceneMode3D
*/
const float czm_sceneModeMorphing = 0.0;
`;var zR=`/**
* A built-in GLSL floating-point constant for one solar radius.
*
* @alias czm_solarRadius
* @glslConstant
*
* @see CesiumMath.SOLAR_RADIUS
*
* @example
* // GLSL declaration
* const float czm_solarRadius = ...;
*/
const float czm_solarRadius = 695500000.0;
`;var HR=`/**
* A built-in GLSL floating-point constant for <code>3pi/2</code>.
*
* @alias czm_threePiOver2
* @glslConstant
*
* @see CesiumMath.THREE_PI_OVER_TWO
*
* @example
* // GLSL declaration
* const float czm_threePiOver2 = ...;
*
* // Example
* float pi = (2.0 / 3.0) * czm_threePiOver2;
*/
const float czm_threePiOver2 = 4.71238898038469;
`;var GR=`/**
* A built-in GLSL floating-point constant for <code>2pi</code>.
*
* @alias czm_twoPi
* @glslConstant
*
* @see CesiumMath.TWO_PI
*
* @example
* // GLSL declaration
* const float czm_twoPi = ...;
*
* // Example
* float pi = czm_twoPi / 2.0;
*/
const float czm_twoPi = 6.283185307179586;
`;var WR=`/**
* The maximum latitude, in radians, both North and South, supported by a Web Mercator
* (EPSG:3857) projection. Technically, the Mercator projection is defined
* for any latitude up to (but not including) 90 degrees, but it makes sense
* to cut it off sooner because it grows exponentially with increasing latitude.
* The logic behind this particular cutoff value, which is the one used by
* Google Maps, Bing Maps, and Esri, is that it makes the projection
* square. That is, the rectangle is equal in the X and Y directions.
*
* The constant value is computed as follows:
* czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi)))
*
* @name czm_webMercatorMaxLatitude
* @glslConstant
*/
const float czm_webMercatorMaxLatitude = 1.4844222297453324;
`;var jR=`/**
* @name czm_depthRangeStruct
* @glslStruct
*/
struct czm_depthRangeStruct
{
float near;
float far;
};
`;var qR=`/**
* Holds material information that can be used for lighting. Returned by all czm_getMaterial functions.
*
* @name czm_material
* @glslStruct
*
* @property {vec3} diffuse Incoming light that scatters evenly in all directions.
* @property {float} specular Intensity of incoming light reflecting in a single direction.
* @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight.
* @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal.
* @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light.
* @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque.
*/
struct czm_material
{
vec3 diffuse;
float specular;
float shininess;
vec3 normal;
vec3 emission;
float alpha;
};
`;var YR=`/**
* Used as input to every material's czm_getMaterial function.
*
* @name czm_materialInput
* @glslStruct
*
* @property {float} s 1D texture coordinates.
* @property {vec2} st 2D texture coordinates.
* @property {vec3} str 3D texture coordinates.
* @property {vec3} normalEC Unperturbed surface normal in eye coordinates.
* @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space.
* @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye.
* @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials.
* @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials.
* @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials.
* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials.
*/
struct czm_materialInput
{
float s;
vec2 st;
vec3 str;
vec3 normalEC;
mat3 tangentToEyeMatrix;
vec3 positionToEyeEC;
float height;
float slope;
float aspect;
float waterMask;
};
`;var XR=`/**
* Struct for representing a material for a {@link Model}. The model
* rendering pipeline will pass this struct between material, custom shaders,
* and lighting stages. This is not to be confused with {@link czm_material}
* which is used by the older Fabric materials system, although they are similar.
* <p>
* All color values (diffuse, specular, emissive) are in linear color space.
* </p>
*
* @name czm_modelMaterial
* @glslStruct
*
* @property {vec4} baseColor The base color of the material.
* @property {vec3} diffuse Incoming light that scatters evenly in all directions.
* @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque.
* @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature.
* @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces.
* @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal.
* @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded.
* @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light.
*/
struct czm_modelMaterial {
vec4 baseColor;
vec3 diffuse;
float alpha;
vec3 specular;
float roughness;
vec3 normalEC;
float occlusion;
vec3 emissive;
#ifdef USE_SPECULAR
float specularWeight;
#endif
#ifdef USE_ANISOTROPY
vec3 anisotropicT;
vec3 anisotropicB;
float anisotropyStrength;
#endif
#ifdef USE_CLEARCOAT
float clearcoatFactor;
float clearcoatRoughness;
vec3 clearcoatNormal;
// Add clearcoatF0 when KHR_materials_ior is implemented
#endif
};
`;var KR=`/**
* Struct for representing the output of a custom vertex shader.
*
* @name czm_modelVertexOutput
* @glslStruct
*
* @see {@link CustomShader}
* @see {@link Model}
*
* @property {vec3} positionMC The position of the vertex in model coordinates
* @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives.
*/
struct czm_modelVertexOutput {
vec3 positionMC;
float pointSize;
};
`;var $R=`/**
* DOC_TBA
*
* @name czm_ray
* @glslStruct
*/
struct czm_ray
{
vec3 origin;
vec3 direction;
};
`;var ZR=`/**
* DOC_TBA
*
* @name czm_raySegment
* @glslStruct
*/
struct czm_raySegment
{
float start;
float stop;
};
/**
* DOC_TBA
*
* @name czm_emptyRaySegment
* @glslConstant
*/
const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity);
/**
* DOC_TBA
*
* @name czm_fullRaySegment
* @glslConstant
*/
const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity);
`;var QR=`struct czm_shadowParameters
{
#ifdef USE_CUBE_MAP_SHADOW
vec3 texCoords;
#else
vec2 texCoords;
#endif
float depthBias;
float depth;
float nDotL;
vec2 texelStepSize;
float normalShadingSmooth;
float darkness;
};
`;var JR=`// See:
// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
vec3 czm_acesTonemapping(vec3 color) {
float g = 0.985;
float a = 0.065;
float b = 0.0001;
float c = 0.433;
float d = 0.238;
color = (color * (color + a) - b) / (color * (g * color + c) + d);
color = clamp(color, 0.0, 1.0);
return color;
}
`;var eM=`/**
* @private
*/
float czm_alphaWeight(float a)
{
float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];
// See Weighted Blended Order-Independent Transparency for examples of different weighting functions:
// http://jcgt.org/published/0002/02/09/
return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0))));
}
`;var tM=`/**
* Procedural anti-aliasing by blurring two colors that meet at a sharp edge.
*
* @name czm_antialias
* @glslFunction
*
* @param {vec4} color1 The color on one side of the edge.
* @param {vec4} color2 The color on the other side of the edge.
* @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>.
* @param {float} dist The distance to the edge in texture coordinates.
* @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors.
* @returns {vec4} The anti-aliased color.
*
* @example
* // GLSL declarations
* vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor);
* vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist);
*
* // get the color for a material that has a sharp edge at the line y = 0.5 in texture space
* float dist = abs(textureCoordinates.t - 0.5);
* vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t));
* vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1);
*/
vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor)
{
float val1 = clamp(dist / fuzzFactor, 0.0, 1.0);
float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0);
val1 = val1 * (1.0 - val2);
val1 = val1 * val1 * (3.0 - (2.0 * val1));
val1 = pow(val1, 0.5); //makes the transition nicer
vec4 midColor = (color1 + color2) * 0.5;
return mix(midColor, currentColor, val1);
}
vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist)
{
return czm_antialias(color1, color2, currentColor, dist, 0.1);
}
`;var nM=`/**
* Apply a HSB color shift to an RGB color.
*
* @param {vec3} rgb The color in RGB space.
* @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment
* @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects.
*
* @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range.
*/
vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) {
// Convert rgb color to hsb
vec3 hsb = czm_RGBToHSB(rgb);
// Perform hsb shift
// Hue cycles around so no clamp is needed.
hsb.x += hsbShift.x; // hue
hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation
// brightness
//
// Some shaders such as atmosphere-related effects need to leave black
// pixels unchanged
if (ignoreBlackPixels) {
hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0;
} else {
hsb.z = hsb.z + hsbShift.z;
}
hsb.z = clamp(hsb.z, 0.0, 1.0);
// Convert shifted hsb back to rgb
return czm_HSBToRGB(hsb);
}
`;var iM=`/**
* Approximately computes spherical coordinates given a normal.
* Uses approximate inverse trigonometry for speed and consistency,
* since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU.
*
* @name czm_approximateSphericalCoordinates
* @glslFunction
*
* @param {vec3} normal arbitrary-length normal.
*
* @returns {vec2} Approximate latitude and longitude spherical coordinates.
*/
vec2 czm_approximateSphericalCoordinates(vec3 normal) {
// Project into plane with vertical for latitude
float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z);
float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y);
return vec2(latitudeApproximation, longitudeApproximation);
}
`;var oM=`/**
* Compute a rational approximation to tanh(x)
*
* @param {float} x A real number input
* @returns {float} An approximation for tanh(x)
*/
float czm_approximateTanh(float x) {
float x2 = x * x;
return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2)));
}
`;var rM=`/**
* Determines if the fragment is back facing
*
* @name czm_backFacing
* @glslFunction
*
* @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>.
*/
bool czm_backFacing()
{
// !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494.
return gl_FrontFacing == false;
}
`;var sM=`/**
* Branchless ternary operator to be used when it's inexpensive to explicitly
* evaluate both possibilities for a float expression.
*
* @name czm_branchFreeTernary
* @glslFunction
*
* @param {bool} comparison A comparison statement
* @param {float} a Value to return if the comparison is true.
* @param {float} b Value to return if the comparison is false.
*
* @returns {float} equivalent of comparison ? a : b
*/
float czm_branchFreeTernary(bool comparison, float a, float b) {
float useA = float(comparison);
return a * useA + b * (1.0 - useA);
}
/**
* Branchless ternary operator to be used when it's inexpensive to explicitly
* evaluate both possibilities for a vec2 expression.
*
* @name czm_branchFreeTernary
* @glslFunction
*
* @param {bool} comparison A comparison statement
* @param {vec2} a Value to return if the comparison is true.
* @param {vec2} b Value to return if the comparison is false.
*
* @returns {vec2} equivalent of comparison ? a : b
*/
vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) {
float useA = float(comparison);
return a * useA + b * (1.0 - useA);
}
/**
* Branchless ternary operator to be used when it's inexpensive to explicitly
* evaluate both possibilities for a vec3 expression.
*
* @name czm_branchFreeTernary
* @glslFunction
*
* @param {bool} comparison A comparison statement
* @param {vec3} a Value to return if the comparison is true.
* @param {vec3} b Value to return if the comparison is false.
*
* @returns {vec3} equivalent of comparison ? a : b
*/
vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) {
float useA = float(comparison);
return a * useA + b * (1.0 - useA);
}
/**
* Branchless ternary operator to be used when it's inexpensive to explicitly
* evaluate both possibilities for a vec4 expression.
*
* @name czm_branchFreeTernary
* @glslFunction
*
* @param {bool} comparison A comparison statement
* @param {vec3} a Value to return if the comparison is true.
* @param {vec3} b Value to return if the comparison is false.
*
* @returns {vec3} equivalent of comparison ? a : b
*/
vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) {
float useA = float(comparison);
return a * useA + b * (1.0 - useA);
}
`;var aM=`
vec4 czm_cascadeColor(vec4 weights)
{
return vec4(1.0, 0.0, 0.0, 1.0) * weights.x +
vec4(0.0, 1.0, 0.0, 1.0) * weights.y +
vec4(0.0, 0.0, 1.0, 1.0) * weights.z +
vec4(1.0, 0.0, 1.0, 1.0) * weights.w;
}
`;var cM=`
uniform vec4 shadowMap_cascadeDistances;
float czm_cascadeDistance(vec4 weights)
{
return dot(shadowMap_cascadeDistances, weights);
}
`;var lM=`
uniform mat4 shadowMap_cascadeMatrices[4];
mat4 czm_cascadeMatrix(vec4 weights)
{
return shadowMap_cascadeMatrices[0] * weights.x +
shadowMap_cascadeMatrices[1] * weights.y +
shadowMap_cascadeMatrices[2] * weights.z +
shadowMap_cascadeMatrices[3] * weights.w;
}
`;var uM=`
uniform vec4 shadowMap_cascadeSplits[2];
vec4 czm_cascadeWeights(float depthEye)
{
// One component is set to 1.0 and all others set to 0.0.
vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye));
vec4 far = step(depthEye, shadowMap_cascadeSplits[1]);
return near * far;
}
`;var fM=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) {
float signedDistance = texture(clippingDistance, uv).r;
return (signedDistance - 0.5) * 2.0;
}
void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) {
// Position is completely outside of polygons bounds
vec2 rectUv = clippingPosition;
if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) {
#ifdef CLIPPING_INVERSE
discard;
#endif
return;
}
vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0));
vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005));
float dimension = float(extentsLength);
if (extentsLength > 2) {
dimension = ceil(log2(float(extentsLength)));
}
vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension;
vec2 uv = textureOffset + rectUv / dimension;
float signedDistance = getSignedDistance(uv, clippingDistance);
#ifdef CLIPPING_INVERSE
if (signedDistance > 0.0) {
discard;
}
#else
if (signedDistance < 0.0) {
discard;
}
#endif
}
`;var dM=`/**
* DOC_TBA
*
* @name czm_columbusViewMorph
* @glslFunction
*/
vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time)
{
// Just linear for now.
vec3 p = mix(position2D.xyz, position3D.xyz, time);
return vec4(p, 1.0);
}
`;var hM=`/**
* Compute the atmosphere color, applying Rayleigh and Mie scattering. This
* builtin uses automatic uniforms so the atmophere settings are synced with the
* state of the Scene, even in other contexts like Model.
*
* @name czm_computeAtmosphereColor
* @glslFunction
*
* @param {vec3} positionWC Position of the fragment in world coords (low precision)
* @param {vec3} lightDirection Light direction from the sun or other light source.
* @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function
* @param {vec3} mieColor The Mie scattering color computed by a scattering function
* @param {float} opacity The opacity computed by a scattering function.
*/
vec4 czm_computeAtmosphereColor(
vec3 positionWC,
vec3 lightDirection,
vec3 rayleighColor,
vec3 mieColor,
float opacity
) {
// Setup the primary ray: from the camera position to the vertex position.
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
float cosAngle = dot(cameraToPositionWCDirection, lightDirection);
float cosAngleSq = cosAngle * cosAngle;
float G = czm_atmosphereMieAnisotropy;
float GSq = G * G;
// The Rayleigh phase function.
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
// The Mie phase function.
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
vec3 rayleigh = rayleighPhase * rayleighColor;
vec3 mie = miePhase * mieColor;
vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity;
return vec4(color, opacity);
}
/**
* Compute the atmosphere color, applying Rayleigh and Mie scattering. This
* builtin uses automatic uniforms so the atmophere settings are synced with the
* state of the Scene, even in other contexts like Model.
*
* @name czm_computeAtmosphereColor
* @glslFunction
*
* @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision)
* @param {vec3} lightDirection Light direction from the sun or other light source.
* @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function
* @param {vec3} mieColor The Mie scattering color computed by a scattering function
* @param {float} opacity The opacity computed by a scattering function.
*/
vec4 czm_computeAtmosphereColor(
czm_ray primaryRay,
vec3 lightDirection,
vec3 rayleighColor,
vec3 mieColor,
float opacity
) {
vec3 direction = normalize(primaryRay.direction);
float cosAngle = dot(direction, lightDirection);
float cosAngleSq = cosAngle * cosAngle;
float G = czm_atmosphereMieAnisotropy;
float GSq = G * G;
// The Rayleigh phase function.
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
// The Mie phase function.
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
vec3 rayleigh = rayleighPhase * rayleighColor;
vec3 mie = miePhase * mieColor;
vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity;
return vec4(color, opacity);
}
`;var mM=`/**
* Compute atmosphere scattering for the ground atmosphere and fog. This method
* uses automatic uniforms so it is always synced with the scene settings.
*
* @name czm_computeGroundAtmosphereScattering
* @glslfunction
*
* @param {vec3} positionWC The position of the fragment in world coordinates.
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
* @param {vec3} mieColor The variable the Mie scattering will be written to.
* @param {float} opacity The variable the transmittance will be written to.
*/
void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) {
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
float atmosphereInnerRadius = length(positionWC);
czm_computeScattering(
primaryRay,
length(cameraToPositionWC),
lightDirection,
atmosphereInnerRadius,
rayleighColor,
mieColor,
opacity
);
}
`;var pM=`/**
* Returns a position in model coordinates relative to eye taking into
* account the current scene mode: 3D, 2D, or Columbus view.
* <p>
* This uses standard position attributes, <code>position3DHigh</code>,
* <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>,
* and should be used when writing a vertex shader for an {@link Appearance}.
* </p>
*
* @name czm_computePosition
* @glslFunction
*
* @returns {vec4} The position relative to eye.
*
* @example
* vec4 p = czm_computePosition();
* v_positionEC = (czm_modelViewRelativeToEye * p).xyz;
* gl_Position = czm_modelViewProjectionRelativeToEye * p;
*
* @see czm_translateRelativeToEye
*/
vec4 czm_computePosition();
`;var _M=`/**
* This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as
* the transmittance value for the ray. This function uses automatic uniforms
* so the atmosphere settings are always synced with the current scene.
*
* @name czm_computeScattering
* @glslfunction
*
* @param {czm_ray} primaryRay The ray from the camera to the position.
* @param {float} primaryRayLength The length of the primary ray.
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
* @param {vec3} mieColor The variable the Mie scattering will be written to.
* @param {float} opacity The variable the transmittance will be written to.
*/
void czm_computeScattering(
czm_ray primaryRay,
float primaryRayLength,
vec3 lightDirection,
float atmosphereInnerRadius,
out vec3 rayleighColor,
out vec3 mieColor,
out float opacity
) {
const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters.
const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled.
const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
// Initialize the default scattering amounts to 0.
rayleighColor = vec3(0.0);
mieColor = vec3(0.0);
opacity = 0.0;
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
vec3 origin = vec3(0.0);
// Calculate intersection from the camera to the outer ring of the atmosphere.
czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius);
// Return empty colors if no intersection with the atmosphere geometry.
if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) {
return;
}
// To deal with smaller values of PRIMARY_STEPS (e.g. 4)
// we implement a split strategy: sky or horizon.
// For performance reasons, instead of a if/else branch
// a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0
float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength);
// Value close to 0.0: close to the horizon
// Value close to 1.0: above in the sky
float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x));
// The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere.
float start_0 = primaryRayAtmosphereIntersect.start;
primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0);
// The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller.
primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength));
// For the number of ray steps, distinguish inside or outside atmosphere (outer space)
// (1) from outer space we have to use more ray steps to get a realistic rendering
// (2) within atmosphere we need fewer steps for faster rendering
float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters
float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a));
int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled.
int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
// Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere.
float rayPositionLength = primaryRayAtmosphereIntersect.start;
// (1) Outside the atmosphere: constant rayStepLength
// (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps
float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength;
float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0));
float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS));
vec3 rayleighAccumulation = vec3(0.0);
vec3 mieAccumulation = vec3(0.0);
vec2 opticalDepth = vec2(0.0);
vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight);
// Sample positions on the primary ray.
for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) {
// The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to break early instead
if (i >= PRIMARY_STEPS) {
break;
}
// Calculate sample position along viewpoint ray.
vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength);
// Calculate height of sample position above ellipsoid.
float sampleHeight = length(samplePosition) - atmosphereInnerRadius;
// Calculate and accumulate density of particles at the sample position.
vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength;
opticalDepth += sampleDensity;
// Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere.
czm_ray lightRay = czm_ray(samplePosition, lightDirection);
czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius);
float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS);
float lightPositionLength = 0.0;
vec2 lightOpticalDepth = vec2(0.0);
// Sample positions along the light ray, to accumulate incidence of light on the latest sample segment.
for (int j = 0; j < LIGHT_STEPS_MAX; ++j) {
// The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to break early instead
if (j >= LIGHT_STEPS) {
break;
}
// Calculate sample position along light ray.
vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5);
// Calculate height of the light sample position above ellipsoid.
float lightHeight = length(lightPosition) - atmosphereInnerRadius;
// Calculate density of photons at the light sample position.
lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength;
// Increment distance on light ray.
lightPositionLength += lightStepLength;
}
// Compute attenuation via the primary ray and the light ray.
vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x))));
// Accumulate the scattering.
rayleighAccumulation += sampleDensity.x * attenuation;
mieAccumulation += sampleDensity.y * attenuation;
// Increment distance on primary ray.
rayPositionLength += (rayStepLength += rayStepLengthIncrease);
}
// Compute the scattering amount.
rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation;
mieColor = czm_atmosphereMieCoefficient * mieAccumulation;
// Compute the transmittance i.e. how much light is passing through the atmosphere.
opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x))));
}
`;var gM=`/**
* @private
*/
vec2 cordic(float angle)
{
// Scale the vector by the appropriate factor for the 24 iterations to follow.
vec2 vector = vec2(6.0725293500888267e-1, 0.0);
// Iteration 1
float sense = (angle < 0.0) ? -1.0 : 1.0;
// float factor = sense * 1.0; // 2^-0
mat2 rotation = mat2(1.0, sense, -sense, 1.0);
vector = rotation * vector;
angle -= sense * 7.8539816339744828e-1; // atan(2^-0)
// Iteration 2
sense = (angle < 0.0) ? -1.0 : 1.0;
float factor = sense * 5.0e-1; // 2^-1
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 4.6364760900080609e-1; // atan(2^-1)
// Iteration 3
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 2.5e-1; // 2^-2
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 2.4497866312686414e-1; // atan(2^-2)
// Iteration 4
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.25e-1; // 2^-3
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.2435499454676144e-1; // atan(2^-3)
// Iteration 5
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 6.25e-2; // 2^-4
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 6.2418809995957350e-2; // atan(2^-4)
// Iteration 6
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 3.125e-2; // 2^-5
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 3.1239833430268277e-2; // atan(2^-5)
// Iteration 7
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.5625e-2; // 2^-6
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.5623728620476831e-2; // atan(2^-6)
// Iteration 8
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 7.8125e-3; // 2^-7
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 7.8123410601011111e-3; // atan(2^-7)
// Iteration 9
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 3.90625e-3; // 2^-8
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 3.9062301319669718e-3; // atan(2^-8)
// Iteration 10
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.953125e-3; // 2^-9
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.9531225164788188e-3; // atan(2^-9)
// Iteration 11
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 9.765625e-4; // 2^-10
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 9.7656218955931946e-4; // atan(2^-10)
// Iteration 12
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 4.8828125e-4; // 2^-11
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 4.8828121119489829e-4; // atan(2^-11)
// Iteration 13
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 2.44140625e-4; // 2^-12
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 2.4414062014936177e-4; // atan(2^-12)
// Iteration 14
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.220703125e-4; // 2^-13
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.2207031189367021e-4; // atan(2^-13)
// Iteration 15
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 6.103515625e-5; // 2^-14
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 6.1035156174208773e-5; // atan(2^-14)
// Iteration 16
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 3.0517578125e-5; // 2^-15
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 3.0517578115526096e-5; // atan(2^-15)
// Iteration 17
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.52587890625e-5; // 2^-16
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.5258789061315762e-5; // atan(2^-16)
// Iteration 18
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 7.62939453125e-6; // 2^-17
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 7.6293945311019700e-6; // atan(2^-17)
// Iteration 19
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 3.814697265625e-6; // 2^-18
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 3.8146972656064961e-6; // atan(2^-18)
// Iteration 20
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.9073486328125e-6; // 2^-19
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 1.9073486328101870e-6; // atan(2^-19)
// Iteration 21
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 9.5367431640625e-7; // 2^-20
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 9.5367431640596084e-7; // atan(2^-20)
// Iteration 22
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 4.76837158203125e-7; // 2^-21
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 4.7683715820308884e-7; // atan(2^-21)
// Iteration 23
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 2.384185791015625e-7; // 2^-22
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
angle -= sense * 2.3841857910155797e-7; // atan(2^-22)
// Iteration 24
sense = (angle < 0.0) ? -1.0 : 1.0;
factor = sense * 1.1920928955078125e-7; // 2^-23
rotation[0][1] = factor;
rotation[1][0] = -factor;
vector = rotation * vector;
// angle -= sense * 1.1920928955078068e-7; // atan(2^-23)
return vector;
}
/**
* Computes the cosine and sine of the provided angle using the CORDIC algorithm.
*
* @name czm_cosineAndSine
* @glslFunction
*
* @param {float} angle The angle in radians.
*
* @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate).
*
* @example
* vec2 v = czm_cosineAndSine(czm_piOverSix);
* float cosine = v.x;
* float sine = v.y;
*/
vec2 czm_cosineAndSine(float angle)
{
if (angle < -czm_piOverTwo || angle > czm_piOverTwo)
{
if (angle < 0.0)
{
return -cordic(angle + czm_pi);
}
else
{
return -cordic(angle - czm_pi);
}
}
else
{
return cordic(angle);
}
}
`;var yM=`/**
* Decompresses texture coordinates that were packed into a single float.
*
* @name czm_decompressTextureCoordinates
* @glslFunction
*
* @param {float} encoded The compressed texture coordinates.
* @returns {vec2} The decompressed texture coordinates.
*/
vec2 czm_decompressTextureCoordinates(float encoded)
{
float temp = encoded / 4096.0;
float xZeroTo4095 = floor(temp);
float stx = xZeroTo4095 / 4095.0;
float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0;
return vec2(stx, sty);
}
`;var xM=`// emulated noperspective
#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH)
out float v_WindowZ;
#endif
/**
* Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2.
* GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes,
* capping the shadow volume. More information here:
* https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt.
*
* When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring
* no geometry gets clipped by setting the clip space z value to 0.0 and then
* sending the unaltered screen space z value (using emulated noperspective
* interpolation) to the frag shader where it is clamped to [0,1] and then
* written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on:
* https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv.
*
* When GL_EXT_frag_depth is not available, which is the case on some mobile
* devices, we must attempt to fix this only in the vertex shader.
* The approach is to clamp the z value to the far plane, which closes the
* shadow volume but also distorts the geometry, so there can still be artifacts
* on frustum seams.
*
* @name czm_depthClamp
* @glslFunction
*
* @param {vec4} coords The vertex in clip coordinates.
* @returns {vec4} The modified vertex.
*
* @example
* gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0));
*
* @see czm_writeDepthClamp
*/
vec4 czm_depthClamp(vec4 coords)
{
#ifndef LOG_DEPTH
#if __VERSION__ == 300 || defined(GL_EXT_frag_depth)
v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w;
coords.z = 0.0;
#else
coords.z = min(coords.z, coords.w);
#endif
#endif
return coords;
}
`;var bM=`/**
* Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system
* to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the
* surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping.
* <br /><br />
* The ellipsoid is assumed to be centered at the model coordinate's origin.
*
* @name czm_eastNorthUpToEyeCoordinates
* @glslFunction
*
* @param {vec3} positionMC The position on the ellipsoid in model coordinates.
* @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates.
*
* @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates.
*
* @example
* // Transform a vector defined in the east-north-up coordinate
* // system, (0, 0, 1) which is the surface normal, to eye
* // coordinates.
* mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);
* vec3 normalEC = m * vec3(0.0, 0.0, 1.0);
*/
mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC)
{
vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates
vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates
vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates
return mat3(
tangentEC.x, tangentEC.y, tangentEC.z,
bitangentEC.x, bitangentEC.y, bitangentEC.z,
normalEC.x, normalEC.y, normalEC.z);
}
`;var TM=`/**
* DOC_TBA
*
* @name czm_ellipsoidContainsPoint
* @glslFunction
*
*/
bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point)
{
vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz;
return (dot(scaled, scaled) <= 1.0);
}
`;var CM=`/**
* Approximate uv coordinates based on the ellipsoid normal.
*
* @name czm_ellipsoidTextureCoordinates
* @glslFunction
*/
vec2 czm_ellipsoidTextureCoordinates(vec3 normal)
{
return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5);
}
`;var AM=`/**
* Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code>
* if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs
* <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s,
* <code>vec3</code>s, or <code>vec4</code>s.
*
* @name czm_equalsEpsilon
* @glslFunction
*
* @param {} left The first vector.
* @param {} right The second vector.
* @param {float} epsilon The epsilon to use for equality testing.
* @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise.
*
* @example
* // GLSL declarations
* bool czm_equalsEpsilon(float left, float right, float epsilon);
* bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon);
* bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon);
* bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon);
*/
bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) {
return all(lessThanEqual(abs(left - right), vec4(epsilon)));
}
bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) {
return all(lessThanEqual(abs(left - right), vec3(epsilon)));
}
bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) {
return all(lessThanEqual(abs(left - right), vec2(epsilon)));
}
bool czm_equalsEpsilon(float left, float right, float epsilon) {
return (abs(left - right) <= epsilon);
}
`;var EM=`/**
* DOC_TBA
*
* @name czm_eyeOffset
* @glslFunction
*
* @param {vec4} positionEC DOC_TBA.
* @param {vec3} eyeOffset DOC_TBA.
*
* @returns {vec4} DOC_TBA.
*/
vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset)
{
// This equation is approximate in x and y.
vec4 p = positionEC;
vec4 zEyeOffset = normalize(p) * eyeOffset.z;
p.xy += eyeOffset.xy + zEyeOffset.xy;
p.z += zEyeOffset.z;
return p;
}
`;var SM=`/**
* Transforms a position from eye to window coordinates. The transformation
* from eye to clip coordinates is done using {@link czm_projection}.
* The transform from normalized device coordinates to window coordinates is
* done using {@link czm_viewportTransformation}, which assumes a depth range
* of <code>near = 0</code> and <code>far = 1</code>.
* <br /><br />
* This transform is useful when there is a need to manipulate window coordinates
* in a vertex shader as done by {@link BillboardCollection}.
*
* @name czm_eyeToWindowCoordinates
* @glslFunction
*
* @param {vec4} position The position in eye coordinates to transform.
*
* @returns {vec4} The transformed position in window coordinates.
*
* @see czm_modelToWindowCoordinates
* @see czm_projection
* @see czm_viewportTransformation
* @see BillboardCollection
*
* @example
* vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
*/
vec4 czm_eyeToWindowCoordinates(vec4 positionEC)
{
vec4 q = czm_projection * positionEC; // clip coordinates
q.xyz /= q.w; // normalized device coordinates
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates
return q;
}
`;var vM=`/**
* Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input.
*
* Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on
* "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.
* Adapted from ShaderFastLibs under MIT License.
*
* Chosen for the following characteristics over range [0, 1]:
* - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan)
* - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator)
*
* The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301);
* Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2.
*
* @name czm_fastApproximateAtan
* @glslFunction
*
* @param {float} x Value between 0 and 1 inclusive.
*
* @returns {float} Approximation of atan(x)
*/
float czm_fastApproximateAtan(float x) {
return x * (-0.1784 * x - 0.0663 * x * x + 1.0301);
}
/**
* Approximation of atan2.
*
* Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html
* However, we replaced their atan curve with Michael Drobot's (see above).
*
* @name czm_fastApproximateAtan
* @glslFunction
*
* @param {float} x Value between -1 and 1 inclusive.
* @param {float} y Value between -1 and 1 inclusive.
*
* @returns {float} Approximation of atan2(x, y)
*/
float czm_fastApproximateAtan(float x, float y) {
// atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications.
// So range-reduce using abs and by flipping whether x or y is on top.
float t = abs(x); // t used as swap and atan result.
float opposite = abs(y);
float adjacent = max(t, opposite);
opposite = min(t, opposite);
t = czm_fastApproximateAtan(opposite / adjacent);
// Undo range reduction
t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t);
t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t);
t = czm_branchFreeTernary(y < 0.0, -t, t);
return t;
}
`;var wM=`/**
* Gets the color with fog at a distance from the camera.
*
* @name czm_fog
* @glslFunction
*
* @param {float} distanceToCamera The distance to the camera in meters.
* @param {vec3} color The original color.
* @param {vec3} fogColor The color of the fog.
*
* @returns {vec3} The color adjusted for fog at the distance from the camera.
*/
vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor)
{
float scalar = distanceToCamera * czm_fogDensity;
float fog = 1.0 - exp(-(scalar * scalar));
return mix(color, fogColor, fog);
}
/**
* Gets the color with fog at a distance from the camera.
*
* @name czm_fog
* @glslFunction
*
* @param {float} distanceToCamera The distance to the camera in meters.
* @param {vec3} color The original color.
* @param {vec3} fogColor The color of the fog.
* @param {float} fogModifierConstant A constant to modify the appearance of fog.
*
* @returns {vec3} The color adjusted for fog at the distance from the camera.
*/
vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant)
{
float scalar = distanceToCamera * czm_fogDensity;
float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant))));
return mix(color, fogColor, fog);
}
`;var DM=`/**
* Converts a color from RGB space to linear space.
*
* @name czm_gammaCorrect
* @glslFunction
*
* @param {vec3} color The color in RGB space.
* @returns {vec3} The color in linear space.
*/
vec3 czm_gammaCorrect(vec3 color) {
#ifdef HDR
color = pow(color, vec3(czm_gamma));
#endif
return color;
}
vec4 czm_gammaCorrect(vec4 color) {
#ifdef HDR
color.rgb = pow(color.rgb, vec3(czm_gamma));
#endif
return color;
}
`;var IM=`/**
* DOC_TBA
*
* @name czm_geodeticSurfaceNormal
* @glslFunction
*
* @param {vec3} positionOnEllipsoid DOC_TBA
* @param {vec3} ellipsoidCenter DOC_TBA
* @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA
*
* @returns {vec3} DOC_TBA.
*/
vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared)
{
return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared);
}
`;var PM=`/**
* An czm_material with default values. Every material's czm_getMaterial
* should use this default material as a base for the material it returns.
* The default normal value is given by materialInput.normalEC.
*
* @name czm_getDefaultMaterial
* @glslFunction
*
* @param {czm_materialInput} input The input used to construct the default material.
*
* @returns {czm_material} The default material.
*
* @see czm_materialInput
* @see czm_material
* @see czm_getMaterial
*/
czm_material czm_getDefaultMaterial(czm_materialInput materialInput)
{
czm_material material;
material.diffuse = vec3(0.0);
material.specular = 0.0;
material.shininess = 1.0;
material.normal = materialInput.normalEC;
material.emission = vec3(0.0);
material.alpha = 1.0;
return material;
}
`;var OM=`/**
* Select which direction vector to use for dynamic atmosphere lighting based on an enum value
*
* @name czm_getDynamicAtmosphereLightDirection
* @glslfunction
* @see DynamicAtmosphereLightingType.js
*
* @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off.
* @param {float} lightEnum The enum value for selecting between light sources.
* @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC
*/
vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) {
const float NONE = 0.0;
const float SCENE_LIGHT = 1.0;
const float SUNLIGHT = 2.0;
vec3 lightDirection =
positionWC * float(lightEnum == NONE) +
czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) +
czm_sunDirectionWC * float(lightEnum == SUNLIGHT);
return normalize(lightDirection);
}
`;var RM=`/**
* Calculates the intensity of diffusely reflected light.
*
* @name czm_getLambertDiffuse
* @glslFunction
*
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
* @param {vec3} normalEC The surface normal in eye coordinates.
*
* @returns {float} The intensity of the diffuse reflection.
*
* @see czm_phong
*
* @example
* float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC);
* float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200);
* vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity);
*/
float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC)
{
return max(dot(lightDirectionEC, normalEC), 0.0);
}
`;var MM=`/**
* Calculates the specular intensity of reflected light.
*
* @name czm_getSpecular
* @glslFunction
*
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
* @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates.
* @param {vec3} normalEC The surface normal in eye coordinates.
* @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight.
*
* @returns {float} The intensity of the specular highlight.
*
* @see czm_phong
*
* @example
* float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC);
* float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200);
* vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity);
*/
float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess)
{
vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC);
float specular = max(dot(toReflectedLight, toEyeEC), 0.0);
// pow has undefined behavior if both parameters <= 0.
// Prevent this by making sure shininess is at least czm_epsilon2.
return pow(specular, max(shininess, czm_epsilon2));
}
`;var LM=`/**
* @private
*/
vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians)
{
float cosAngle = cos(angleInRadians);
float sinAngle = sin(angleInRadians);
// time dependent sampling directions
vec2 s0 = vec2(1.0/17.0, 0.0);
vec2 s1 = vec2(-1.0/29.0, 0.0);
vec2 s2 = vec2(1.0/101.0, 1.0/59.0);
vec2 s3 = vec2(-1.0/109.0, -1.0/57.0);
// rotate sampling direction by specified angle
s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y));
s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y));
s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y));
s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y));
vec2 uv0 = (uv/103.0) + (time * s0);
vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23);
vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51);
vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71);
uv0 = fract(uv0);
uv1 = fract(uv1);
uv2 = fract(uv2);
uv3 = fract(uv3);
vec4 noise = (texture(normalMap, uv0)) +
(texture(normalMap, uv1)) +
(texture(normalMap, uv2)) +
(texture(normalMap, uv3));
// average and scale to between -1 and 1
return ((noise / 4.0) - 0.5) * 2.0;
}
`;var NM=`/**
* Converts an HSB color (hue, saturation, brightness) to RGB
* HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl}
*
* @name czm_HSBToRGB
* @glslFunction
*
* @param {vec3} hsb The color in HSB.
*
* @returns {vec3} The color in RGB.
*
* @example
* vec3 hsb = czm_RGBToHSB(rgb);
* hsb.z *= 0.1;
* rgb = czm_HSBToRGB(hsb);
*/
const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 czm_HSBToRGB(vec3 hsb)
{
vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www);
return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y);
}
`;var FM=`/**
* Converts an HSL color (hue, saturation, lightness) to RGB
* HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
*
* @name czm_HSLToRGB
* @glslFunction
*
* @param {vec3} rgb The color in HSL.
*
* @returns {vec3} The color in RGB.
*
* @example
* vec3 hsl = czm_RGBToHSL(rgb);
* hsl.z *= 0.1;
* rgb = czm_HSLToRGB(hsl);
*/
vec3 hueToRGB(float hue)
{
float r = abs(hue * 6.0 - 3.0) - 1.0;
float g = 2.0 - abs(hue * 6.0 - 2.0);
float b = 2.0 - abs(hue * 6.0 - 4.0);
return clamp(vec3(r, g, b), 0.0, 1.0);
}
vec3 czm_HSLToRGB(vec3 hsl)
{
vec3 rgb = hueToRGB(hsl.x);
float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;
return (rgb - 0.5) * c + hsl.z;
}
`;var BM=`/**
* Adjusts the hue of a color.
*
* @name czm_hue
* @glslFunction
*
* @param {vec3} rgb The color.
* @param {float} adjustment The amount to adjust the hue of the color in radians.
*
* @returns {float} The color with the hue adjusted.
*
* @example
* vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi)
*/
vec3 czm_hue(vec3 rgb, float adjustment)
{
const mat3 toYIQ = mat3(0.299, 0.587, 0.114,
0.595716, -0.274453, -0.321263,
0.211456, -0.522591, 0.311135);
const mat3 toRGB = mat3(1.0, 0.9563, 0.6210,
1.0, -0.2721, -0.6474,
1.0, -1.107, 1.7046);
vec3 yiq = toYIQ * rgb;
float hue = atan(yiq.z, yiq.y) + adjustment;
float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y);
vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue));
return toRGB * color;
}
`;var kM=`/**
* Converts a color in linear space to RGB space.
*
* @name czm_inverseGamma
* @glslFunction
*
* @param {vec3} color The color in linear space.
* @returns {vec3} The color in RGB space.
*/
vec3 czm_inverseGamma(vec3 color) {
return pow(color, vec3(1.0 / czm_gamma));
}
`;var VM=`/**
* Determines if a time interval is empty.
*
* @name czm_isEmpty
* @glslFunction
*
* @param {czm_raySegment} interval The interval to test.
*
* @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>.
*
* @example
* bool b0 = czm_isEmpty(czm_emptyRaySegment); // true
* bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false
* bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0.
*/
bool czm_isEmpty(czm_raySegment interval)
{
return (interval.stop < 0.0);
}
`;var UM=`/**
* Determines if a time interval is empty.
*
* @name czm_isFull
* @glslFunction
*
* @param {czm_raySegment} interval The interval to test.
*
* @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>.
*
* @example
* bool b0 = czm_isEmpty(czm_emptyRaySegment); // true
* bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false
* bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0.
*/
bool czm_isFull(czm_raySegment interval)
{
return (interval.start == 0.0 && interval.stop == czm_infinity);
}
`;var zM=`/**
* Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located.
*
* @name czm_latitudeToWebMercatorFraction
* @glslFunction
*
* @param {float} latitude The geodetic latitude, in radians.
* @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle.
* @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates.
*
* @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern
* boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return
* value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection.
*/
float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight)
{
float sinLatitude = sin(latitude);
float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude));
return (mercatorY - southMercatorY) * oneOverMercatorHeight;
}
`;var HM=`/**
* Converts a linear RGB color to an sRGB color.
*
* @param {vec3|vec4} linearIn The color in linear color space.
* @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input.
*/
vec3 czm_linearToSrgb(vec3 linearIn)
{
return pow(linearIn, vec3(1.0/2.2));
}
vec4 czm_linearToSrgb(vec4 linearIn)
{
vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2));
return vec4(srgbOut, linearIn.a);
}
`;var GM=`/**
* Computes distance from an point in 2D to a line in 2D.
*
* @name czm_lineDistance
* @glslFunction
*
* param {vec2} point1 A point along the line.
* param {vec2} point2 A point along the line.
* param {vec2} point A point that may or may not be on the line.
* returns {float} The distance from the point to the line.
*/
float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) {
return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1);
}
`;var WM=`/**
* Computes the luminance of a color.
*
* @name czm_luminance
* @glslFunction
*
* @param {vec3} rgb The color.
*
* @returns {float} The luminance.
*
* @example
* float light = czm_luminance(vec3(0.0)); // 0.0
* float dark = czm_luminance(vec3(1.0)); // ~1.0
*/
float czm_luminance(vec3 rgb)
{
// Algorithm from Chapter 10 of Graphics Shaders.
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
return dot(rgb, W);
}
`;var jM=`/**
* Find the maximum component of a vector.
*
* @name czm_maximumComponent
* @glslFunction
*
* @param {vec2|vec3|vec4} v The input vector.
* @returns {float} The value of the largest component.
*/
float czm_maximumComponent(vec2 v)
{
return max(v.x, v.y);
}
float czm_maximumComponent(vec3 v)
{
return max(max(v.x, v.y), v.z);
}
float czm_maximumComponent(vec4 v)
{
return max(max(max(v.x, v.y), v.z), v.w);
}
`;var qM=`/**
* Computes the size of a pixel in meters at a distance from the eye.
* <p>
* Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel.
* </p>
* @name czm_metersPerPixel
* @glslFunction
*
* @param {vec3} positionEC The position to get the meters per pixel in eye coordinates.
* @param {float} pixelRatio The scaling factor from pixel space to coordinate space
*
* @returns {float} The meters per pixel at positionEC.
*/
float czm_metersPerPixel(vec4 positionEC, float pixelRatio)
{
float width = czm_viewport.z;
float height = czm_viewport.w;
float pixelWidth;
float pixelHeight;
float top = czm_frustumPlanes.x;
float bottom = czm_frustumPlanes.y;
float left = czm_frustumPlanes.z;
float right = czm_frustumPlanes.w;
if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0)
{
float frustumWidth = right - left;
float frustumHeight = top - bottom;
pixelWidth = frustumWidth / width;
pixelHeight = frustumHeight / height;
}
else
{
float distanceToPixel = -positionEC.z;
float inverseNear = 1.0 / czm_currentFrustum.x;
float tanTheta = top * inverseNear;
pixelHeight = 2.0 * distanceToPixel * tanTheta / height;
tanTheta = right * inverseNear;
pixelWidth = 2.0 * distanceToPixel * tanTheta / width;
}
return max(pixelWidth, pixelHeight) * pixelRatio;
}
/**
* Computes the size of a pixel in meters at a distance from the eye.
* <p>
* Use this version when scaling by pixel ratio.
* </p>
* @name czm_metersPerPixel
* @glslFunction
*
* @param {vec3} positionEC The position to get the meters per pixel in eye coordinates.
*
* @returns {float} The meters per pixel at positionEC.
*/
float czm_metersPerPixel(vec4 positionEC)
{
return czm_metersPerPixel(positionEC, czm_pixelRatio);
}
`;var YM=`/**
* Transforms a position from model to window coordinates. The transformation
* from model to clip coordinates is done using {@link czm_modelViewProjection}.
* The transform from normalized device coordinates to window coordinates is
* done using {@link czm_viewportTransformation}, which assumes a depth range
* of <code>near = 0</code> and <code>far = 1</code>.
* <br /><br />
* This transform is useful when there is a need to manipulate window coordinates
* in a vertex shader as done by {@link BillboardCollection}.
* <br /><br />
* This function should not be confused with {@link czm_viewportOrthographic},
* which is an orthographic projection matrix that transforms from window
* coordinates to clip coordinates.
*
* @name czm_modelToWindowCoordinates
* @glslFunction
*
* @param {vec4} position The position in model coordinates to transform.
*
* @returns {vec4} The transformed position in window coordinates.
*
* @see czm_eyeToWindowCoordinates
* @see czm_modelViewProjection
* @see czm_viewportTransformation
* @see czm_viewportOrthographic
* @see BillboardCollection
*
* @example
* vec4 positionWC = czm_modelToWindowCoordinates(positionMC);
*/
vec4 czm_modelToWindowCoordinates(vec4 position)
{
vec4 q = czm_modelViewProjection * position; // clip coordinates
q.xyz /= q.w; // normalized device coordinates
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates
return q;
}
`;var XM=`/**
* DOC_TBA
*
* @name czm_multiplyWithColorBalance
* @glslFunction
*/
vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right)
{
// Algorithm from Chapter 10 of Graphics Shaders.
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
vec3 target = left * right;
float leftLuminance = dot(left, W);
float rightLuminance = dot(right, W);
float targetLuminance = dot(target, W);
return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target;
}
`;var KM=`/**
* Computes a value that scales with distance. The scaling is clamped at the near and
* far distances, and does not extrapolate. This function works with the
* {@link NearFarScalar} JavaScript class.
*
* @name czm_nearFarScalar
* @glslFunction
*
* @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w).
* @param {float} cameraDistSq The square of the current distance from the camera.
*
* @returns {float} The value at this distance.
*/
float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq)
{
float valueAtMin = nearFarScalar.y;
float valueAtMax = nearFarScalar.w;
float nearDistanceSq = nearFarScalar.x * nearFarScalar.x;
float farDistanceSq = nearFarScalar.z * nearFarScalar.z;
float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq);
t = pow(clamp(t, 0.0, 1.0), 0.2);
return mix(valueAtMin, valueAtMax, t);
}
`;var $M=` /**
* Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector.
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
*
* @name czm_octDecode
* @param {vec2} encoded The oct-encoded, unit-length vector
* @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.
* @returns {vec3} The decoded and normalized vector
*/
vec3 czm_octDecode(vec2 encoded, float range)
{
if (encoded.x == 0.0 && encoded.y == 0.0) {
return vec3(0.0, 0.0, 0.0);
}
encoded = encoded / range * 2.0 - 1.0;
vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));
if (v.z < 0.0)
{
v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy);
}
return normalize(v);
}
/**
* Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector.
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
*
* @name czm_octDecode
* @param {vec2} encoded The oct-encoded, unit-length vector
* @returns {vec3} The decoded and normalized vector
*/
vec3 czm_octDecode(vec2 encoded)
{
return czm_octDecode(encoded, 255.0);
}
/**
* Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector.
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
*
* @name czm_octDecode
* @param {float} encoded The oct-encoded, unit-length vector
* @returns {vec3} The decoded and normalized vector
*/
vec3 czm_octDecode(float encoded)
{
float temp = encoded / 256.0;
float x = floor(temp);
float y = (temp - x) * 256.0;
return czm_octDecode(vec2(x, y));
}
/**
* Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors.
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
*
* @name czm_octDecode
* @param {vec2} encoded The packed oct-encoded, unit-length vectors.
* @param {vec3} vector1 One decoded and normalized vector.
* @param {vec3} vector2 One decoded and normalized vector.
* @param {vec3} vector3 One decoded and normalized vector.
*/
void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3)
{
float temp = encoded.x / 65536.0;
float x = floor(temp);
float encodedFloat1 = (temp - x) * 65536.0;
temp = encoded.y / 65536.0;
float y = floor(temp);
float encodedFloat2 = (temp - y) * 65536.0;
vector1 = czm_octDecode(encodedFloat1);
vector2 = czm_octDecode(encodedFloat2);
vector3 = czm_octDecode(vec2(x, y));
}
`;var ZM=`/**
* Packs a depth value into a vec4 that can be represented by unsigned bytes.
*
* @name czm_packDepth
* @glslFunction
*
* @param {float} depth The floating-point depth.
* @returns {vec4} The packed depth.
*/
vec4 czm_packDepth(float depth)
{
// See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA
// http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/
vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth;
enc = fract(enc);
enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
return enc;
}
`;var QM=`vec3 lambertianDiffuse(vec3 diffuseColor)
{
return diffuseColor / czm_pi;
}
vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH)
{
float versine = 1.0 - VdotH;
// pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269
float versineSquared = versine * versine;
return f0 + (f90 - f0) * versineSquared * versineSquared * versine;
}
#ifdef USE_ANISOTROPY
/**
* @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent)
* @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent)
* @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates
* @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates
*/
float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection)
{
vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0);
float GGXV = lightDirection.z * length(roughnessScale * viewDirection);
float GGXL = viewDirection.z * length(roughnessScale * lightDirection);
float v = 0.5 / (GGXV + GGXL);
return clamp(v, 0.0, 1.0);
}
/**
* @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent)
* @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent)
* @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates
*/
float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection)
{
float roughnessSquared = bitangentRoughness * tangentialRoughness;
vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared);
float w2 = roughnessSquared / dot(f, f);
return roughnessSquared * w2 * w2 / czm_pi;
}
#endif
/**
* Estimate the geometric self-shadowing of the microfacets in a surface,
* using the Smith Joint GGX visibility function.
* Note: Vis = G / (4 * NdotL * NdotV)
* see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3
* see Real-Time Rendering. Page 331 to 336.
* see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg)
*
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
* @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source.
* @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera.
*/
float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV)
{
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
float GGX = GGXV + GGXL;
if (GGX > 0.0)
{
return 0.5 / GGX;
}
return 0.0;
}
/**
* Estimate the fraction of the microfacets in a surface that are aligned with
* the halfway vector, which is aligned halfway between the directions from
* the fragment to the camera and from the fragment to the light source.
*
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
* @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector.
* @return {float} The fraction of microfacets aligned to the halfway vector.
*/
float GGX(float alphaRoughness, float NdotH)
{
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0;
return alphaRoughnessSquared / (czm_pi * f * f);
}
/**
* Compute the strength of the specular reflection due to direct lighting.
*
* @param {vec3} normal The surface normal.
* @param {vec3} lightDirection The unit vector pointing from the fragment to the light source.
* @param {vec3} viewDirection The unit vector pointing from the fragment to the camera.
* @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera.
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
* @return {float} The strength of the specular reflection.
*/
float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness)
{
float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0);
float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0);
float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV);
float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0);
float D = GGX(alphaRoughness, NdotH);
return G * D;
}
/**
* Compute the diffuse and specular contributions using physically based
* rendering. This function only handles direct lighting.
* <p>
* This function only handles the lighting calculations. Metallic/roughness
* and specular/glossy must be handled separately. See {@MaterialStageFS}
* </p>
*
* @name czm_pbrLighting
* @glslFunction
*
* @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position
* @param {vec3} normalEC The surface normal in eye coordinates
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
* @param {czm_modelMaterial} The material properties.
* @return {vec3} The computed HDR color
*/
vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material)
{
vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC);
float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0);
float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0);
vec3 f0 = material.specular;
float reflectance = czm_maximumComponent(f0);
// Typical dielectrics will have reflectance 0.04, so f90 will be 1.0.
// In this case, at grazing angle, all incident energy is reflected.
vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0));
vec3 F = fresnelSchlick2(f0, f90, VdotH);
#if defined(USE_SPECULAR)
F *= material.specularWeight;
#endif
float alphaRoughness = material.roughness * material.roughness;
#ifdef USE_ANISOTROPY
mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC);
vec3 lightDirection = lightDirectionEC * tbn;
vec3 viewDirection = viewDirectionEC * tbn;
vec3 halfwayDirection = halfwayDirectionEC * tbn;
float anisotropyStrength = material.anisotropyStrength;
float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength);
float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0);
float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection);
float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection);
vec3 specularContribution = F * G * D;
#else
float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness);
vec3 specularContribution = F * specularStrength;
#endif
vec3 diffuseColor = material.diffuse;
// F here represents the specular contribution
vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor);
// Lo = (diffuse + specular) * Li * NdotL
return (diffuseContribution + specularContribution) * NdotL;
}
`;var JM=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral
// Input color is non-negative and resides in the Linear Rec. 709 color space.
// Output color is also Linear Rec. 709, but in the [0, 1] range.
vec3 czm_pbrNeutralTonemapping(vec3 color) {
const float startCompression = 0.8 - 0.04;
const float desaturation = 0.15;
float x = min(color.r, min(color.g, color.b));
float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04);
color -= offset;
float peak = max(color.r, max(color.g, color.b));
if (peak < startCompression) return color;
const float d = 1.0 - startCompression;
float newPeak = 1.0 - d * d / (peak + d - startCompression);
color *= newPeak / peak;
float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);
return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g);
}
`;var eL=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material)
{
return czm_getLambertDiffuse(lightDirectionEC, material.normal);
}
float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material)
{
return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess);
}
/**
* Computes a color using the Phong lighting model.
*
* @name czm_phong
* @glslFunction
*
* @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates.
* @param {czm_material} material The fragment's material.
*
* @returns {vec4} The computed color.
*
* @example
* vec3 positionToEyeEC = // ...
* czm_material material = // ...
* vec3 lightDirectionEC = // ...
* out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC);
*
* @see czm_getMaterial
*/
vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
{
// Diffuse from directional light sources at eye (for top-down)
float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material);
if (czm_sceneMode == czm_sceneMode3D) {
// (and horizon views in 3D)
diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material);
}
float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);
// Temporary workaround for adding ambient.
vec3 materialDiffuse = material.diffuse * 0.5;
vec3 ambient = materialDiffuse;
vec3 color = ambient + material.emission;
color += materialDiffuse * diffuse * czm_lightColor;
color += material.specular * specular * czm_lightColor;
return vec4(color, material.alpha);
}
vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
{
float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material);
float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);
vec3 ambient = vec3(0.0);
vec3 color = ambient + material.emission;
color += material.diffuse * diffuse * czm_lightColor;
color += material.specular * specular * czm_lightColor;
return vec4(color, material.alpha);
}
`;var tL=`/**
* Computes distance from a point to a plane.
*
* @name czm_planeDistance
* @glslFunction
*
* param {vec4} plane A Plane in Hessian Normal Form. See Plane.js
* param {vec3} point A point in the same space as the plane.
* returns {float} The distance from the point to the plane.
*/
float czm_planeDistance(vec4 plane, vec3 point) {
return (dot(plane.xyz, point) + plane.w);
}
/**
* Computes distance from a point to a plane.
*
* @name czm_planeDistance
* @glslFunction
*
* param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js
* param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js
* param {vec3} point A point in the same space as the plane.
* returns {float} The distance from the point to the plane.
*/
float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) {
return (dot(planeNormal, point) + planeDistance);
}
`;var nL=`/**
* Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero.
*
* @name czm_pointAlongRay
* @glslFunction
*
* @param {czm_ray} ray The ray to compute the point along.
* @param {float} time The time along the ray.
*
* @returns {vec3} The point along the ray at the given time.
*
* @example
* czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction
* vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0)
*/
vec3 czm_pointAlongRay(czm_ray ray, float time)
{
return ray.origin + (time * ray.direction);
}
`;var iL=`/**
* DOC_TBA
*
* @name czm_rayEllipsoidIntersectionInterval
* @glslFunction
*/
czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii)
{
// ray and ellipsoid center in eye coordinates. radii in model coordinates.
vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz;
vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz;
q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz;
float q2 = dot(q, q);
float qw = dot(q, w);
if (q2 > 1.0) // Outside ellipsoid.
{
if (qw >= 0.0) // Looking outward or tangent (0 intersections).
{
return czm_emptyRaySegment;
}
else // qw < 0.0.
{
float qw2 = qw * qw;
float difference = q2 - 1.0; // Positively valued.
float w2 = dot(w, w);
float product = w2 * difference;
if (qw2 < product) // Imaginary roots (0 intersections).
{
return czm_emptyRaySegment;
}
else if (qw2 > product) // Distinct roots (2 intersections).
{
float discriminant = qw * qw - product;
float temp = -qw + sqrt(discriminant); // Avoid cancellation.
float root0 = temp / w2;
float root1 = difference / temp;
if (root0 < root1)
{
czm_raySegment i = czm_raySegment(root0, root1);
return i;
}
else
{
czm_raySegment i = czm_raySegment(root1, root0);
return i;
}
}
else // qw2 == product. Repeated roots (2 intersections).
{
float root = sqrt(difference / w2);
czm_raySegment i = czm_raySegment(root, root);
return i;
}
}
}
else if (q2 < 1.0) // Inside ellipsoid (2 intersections).
{
float difference = q2 - 1.0; // Negatively valued.
float w2 = dot(w, w);
float product = w2 * difference; // Negatively valued.
float discriminant = qw * qw - product;
float temp = -qw + sqrt(discriminant); // Positively valued.
czm_raySegment i = czm_raySegment(0.0, temp / w2);
return i;
}
else // q2 == 1.0. On ellipsoid.
{
if (qw < 0.0) // Looking inward.
{
float w2 = dot(w, w);
czm_raySegment i = czm_raySegment(0.0, -qw / w2);
return i;
}
else // qw >= 0.0. Looking outward or tangent.
{
return czm_emptyRaySegment;
}
}
}
`;var oL=`/**
* Compute the intersection interval of a ray with a sphere.
*
* @name czm_raySphereIntersectionInterval
* @glslFunction
*
* @param {czm_ray} ray The ray.
* @param {vec3} center The center of the sphere.
* @param {float} radius The radius of the sphere.
* @return {czm_raySegment} The intersection interval of the ray with the sphere.
*/
czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius)
{
vec3 o = ray.origin;
vec3 d = ray.direction;
vec3 oc = o - center;
float a = dot(d, d);
float b = 2.0 * dot(d, oc);
float c = dot(oc, oc) - (radius * radius);
float det = (b * b) - (4.0 * a * c);
if (det < 0.0) {
return czm_emptyRaySegment;
}
float sqrtDet = sqrt(det);
float t0 = (-b - sqrtDet) / (2.0 * a);
float t1 = (-b + sqrtDet) / (2.0 * a);
czm_raySegment result = czm_raySegment(t0, t1);
return result;
}
`;var rL=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords)
{
return czm_reverseLogDepth(texture(depthTexture, texCoords).r);
}
`;var sL=`/**
* Reads a value previously transformed with {@link czm_writeNonPerspective}
* by dividing it by \`w\`, the value used in the perspective divide.
* This function is intended to be called in a fragment shader to access a
* \`varying\` that should not be subject to perspective interpolation.
* For example, screen-space texture coordinates. The value should have been
* previously written in the vertex shader with a call to
* {@link czm_writeNonPerspective}.
*
* @name czm_readNonPerspective
* @glslFunction
*
* @param {float|vec2|vec3|vec4} value The non-perspective value to be read.
* @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`.
* @returns {float|vec2|vec3|vec4} The usable value.
*/
float czm_readNonPerspective(float value, float oneOverW) {
return value * oneOverW;
}
vec2 czm_readNonPerspective(vec2 value, float oneOverW) {
return value * oneOverW;
}
vec3 czm_readNonPerspective(vec3 value, float oneOverW) {
return value * oneOverW;
}
vec4 czm_readNonPerspective(vec4 value, float oneOverW) {
return value * oneOverW;
}
`;var aL=`float czm_reverseLogDepth(float logZ)
{
#ifdef LOG_DEPTH
float near = czm_currentFrustum.x;
float far = czm_currentFrustum.y;
float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne;
float depthFromNear = exp2(log2Depth) - 1.0;
return far * (1.0 - near / (depthFromNear + near)) / (far - near);
#endif
return logZ;
}
`;var cL=`/**
* Converts an RGB color to HSB (hue, saturation, brightness)
* HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl}
*
* @name czm_RGBToHSB
* @glslFunction
*
* @param {vec3} rgb The color in RGB.
*
* @returns {vec3} The color in HSB.
*
* @example
* vec3 hsb = czm_RGBToHSB(rgb);
* hsb.z *= 0.1;
* rgb = czm_HSBToRGB(hsb);
*/
const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec3 czm_RGBToHSB(vec3 rgb)
{
vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g));
vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r));
float d = q.x - min(q.w, q.y);
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x);
}
`;var lL=`/**
* Converts an RGB color to HSL (hue, saturation, lightness)
* HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
*
* @name czm_RGBToHSL
* @glslFunction
*
* @param {vec3} rgb The color in RGB.
*
* @returns {vec3} The color in HSL.
*
* @example
* vec3 hsl = czm_RGBToHSL(rgb);
* hsl.z *= 0.1;
* rgb = czm_HSLToRGB(hsl);
*/
vec3 RGBtoHCV(vec3 rgb)
{
// Based on work by Sam Hocevar and Emil Persson
vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0);
vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx);
float c = q.x - min(q.w, q.y);
float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z);
return vec3(h, c, q.x);
}
vec3 czm_RGBToHSL(vec3 rgb)
{
vec3 hcv = RGBtoHCV(rgb);
float l = hcv.z - hcv.y * 0.5;
float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7);
return vec3(hcv.x, s, l);
}
`;var uL=`/**
* Converts an RGB color to CIE Yxy.
* <p>The conversion is described in
* {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform}
* </p>
*
* @name czm_RGBToXYZ
* @glslFunction
*
* @param {vec3} rgb The color in RGB.
*
* @returns {vec3} The color in CIE Yxy.
*
* @example
* vec3 xyz = czm_RGBToXYZ(rgb);
* xyz.x = max(xyz.x - luminanceThreshold, 0.0);
* rgb = czm_XYZToRGB(xyz);
*/
vec3 czm_RGBToXYZ(vec3 rgb)
{
const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193,
0.3576, 0.7152, 0.1192,
0.1805, 0.0722, 0.9505);
vec3 xyz = RGB2XYZ * rgb;
vec3 Yxy;
Yxy.r = xyz.g;
float temp = dot(vec3(1.0), xyz);
Yxy.gb = xyz.rg / temp;
return Yxy;
}
`;var fL=`/**
* Round a floating point value. This function exists because round() doesn't
* exist in GLSL 1.00.
*
* @param {float|vec2|vec3|vec4} value The value to round
* @param {float|vec2|vec3|vec3} The rounded value. The type matches the input.
*/
float czm_round(float value) {
return floor(value + 0.5);
}
vec2 czm_round(vec2 value) {
return floor(value + 0.5);
}
vec3 czm_round(vec3 value) {
return floor(value + 0.5);
}
vec4 czm_round(vec4 value) {
return floor(value + 0.5);
}
`;var dL=`/**
* Adjusts the saturation of a color.
*
* @name czm_saturation
* @glslFunction
*
* @param {vec3} rgb The color.
* @param {float} adjustment The amount to adjust the saturation of the color.
*
* @returns {float} The color with the saturation adjusted.
*
* @example
* vec3 greyScale = czm_saturation(color, 0.0);
* vec3 doubleSaturation = czm_saturation(color, 2.0);
*/
vec3 czm_saturation(vec3 rgb, float adjustment)
{
// Algorithm from Chapter 16 of OpenGL Shading Language
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
vec3 intensity = vec3(dot(rgb, W));
return mix(intensity, rgb, adjustment);
}
`;var hL=`
float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d)
{
return czm_unpackDepth(czm_textureCube(shadowMap, d));
}
float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv)
{
#ifdef USE_SHADOW_DEPTH_TEXTURE
return texture(shadowMap, uv).r;
#else
return czm_unpackDepth(texture(shadowMap, uv));
#endif
}
float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth)
{
return step(depth, czm_sampleShadowMap(shadowMap, uv));
}
float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth)
{
return step(depth, czm_sampleShadowMap(shadowMap, uv));
}
`;var mL=`
float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness)
{
#ifdef USE_NORMAL_SHADING
#ifdef USE_NORMAL_SHADING_SMOOTH
float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0);
#else
float strength = step(0.0, nDotL);
#endif
visibility *= strength;
#endif
visibility = max(visibility, darkness);
return visibility;
}
#ifdef USE_CUBE_MAP_SHADOW
float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters)
{
float depthBias = shadowParameters.depthBias;
float depth = shadowParameters.depth;
float nDotL = shadowParameters.nDotL;
float normalShadingSmooth = shadowParameters.normalShadingSmooth;
float darkness = shadowParameters.darkness;
vec3 uvw = shadowParameters.texCoords;
depth -= depthBias;
float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);
return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);
}
#else
float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters)
{
float depthBias = shadowParameters.depthBias;
float depth = shadowParameters.depth;
float nDotL = shadowParameters.nDotL;
float normalShadingSmooth = shadowParameters.normalShadingSmooth;
float darkness = shadowParameters.darkness;
vec2 uv = shadowParameters.texCoords;
depth -= depthBias;
#ifdef USE_SOFT_SHADOWS
vec2 texelStepSize = shadowParameters.texelStepSize;
float radius = 1.0;
float dx0 = -texelStepSize.x * radius;
float dy0 = -texelStepSize.y * radius;
float dx1 = texelStepSize.x * radius;
float dy1 = texelStepSize.y * radius;
float visibility = (
czm_shadowDepthCompare(shadowMap, uv, depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) +
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth)
) * (1.0 / 9.0);
#else
float visibility = czm_shadowDepthCompare(shadowMap, uv, depth);
#endif
return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);
}
#endif
`;var pL=`/**
* Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL
* built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0.
*
* @name czm_signNotZero
* @glslFunction
*
* @param {} value The value for which to determine the sign.
* @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative.
*/
float czm_signNotZero(float value)
{
return value >= 0.0 ? 1.0 : -1.0;
}
vec2 czm_signNotZero(vec2 value)
{
return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y));
}
vec3 czm_signNotZero(vec3 value)
{
return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z));
}
vec4 czm_signNotZero(vec4 value)
{
return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w));
}
`;var _L=`/**
* Computes a color from the third order spherical harmonic coefficients and a normalized direction vector.
* <p>
* The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22].
* </p>
*
* @name czm_sphericalHarmonics
* @glslFunction
*
* @param {vec3} normal The normalized direction.
* @param {vec3[9]} coefficients The third order spherical harmonic coefficients.
* @returns {vec3} The color at the direction.
*
* @see https://graphics.stanford.edu/papers/envmap/envmap.pdf
*/
vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9])
{
vec3 L00 = coefficients[0];
vec3 L1_1 = coefficients[1];
vec3 L10 = coefficients[2];
vec3 L11 = coefficients[3];
vec3 L2_2 = coefficients[4];
vec3 L2_1 = coefficients[5];
vec3 L20 = coefficients[6];
vec3 L21 = coefficients[7];
vec3 L22 = coefficients[8];
float x = normal.x;
float y = normal.y;
float z = normal.z;
vec3 L =
L00
+ L1_1 * y
+ L10 * z
+ L11 * x
+ L2_2 * (y * x)
+ L2_1 * (y * z)
+ L20 * (3.0 * z * z - 1.0)
+ L21 * (z * x)
+ L22 * (x * x - y * y);
return max(L, vec3(0.0));
}
`;var gL=`/**
* Converts an sRGB color to a linear RGB color.
*
* @param {vec3|vec4} srgbIn The color in sRGB space
* @returns {vec3|vec4} The color in linear color space. The vector type matches the input.
*/
vec3 czm_srgbToLinear(vec3 srgbIn)
{
return pow(srgbIn, vec3(2.2));
}
vec4 czm_srgbToLinear(vec4 srgbIn)
{
vec3 linearOut = pow(srgbIn.rgb, vec3(2.2));
return vec4(linearOut, srgbIn.a);
}
`;var yL=`/**
* Creates a matrix that transforms vectors from tangent space to eye space.
*
* @name czm_tangentToEyeSpaceMatrix
* @glslFunction
*
* @param {vec3} normalEC The normal vector in eye coordinates.
* @param {vec3} tangentEC The tangent vector in eye coordinates.
* @param {vec3} bitangentEC The bitangent vector in eye coordinates.
*
* @returns {mat3} The matrix that transforms from tangent space to eye space.
*
* @example
* mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC);
* vec3 normal = tangentToEye * texture(normalMap, st).xyz;
*/
mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC)
{
vec3 normal = normalize(normalEC);
vec3 tangent = normalize(tangentEC);
vec3 bitangent = normalize(bitangentEC);
return mat3(tangent.x , tangent.y , tangent.z,
bitangent.x, bitangent.y, bitangent.z,
normal.x , normal.y , normal.z);
}
`;var xL=`/**
* A wrapper around the texture (WebGL2) / textureCube (WebGL1)
* function to allow for WebGL 1 support.
*
* @name czm_textureCube
* @glslFunction
*
* @param {samplerCube} sampler The sampler.
* @param {vec3} p The coordinate at which to sample the texture.
*/
vec4 czm_textureCube(samplerCube sampler, vec3 p) {
#if __VERSION__ == 300
return texture(sampler, p);
#else
return textureCube(sampler, p);
#endif
}
/**
* A wrapper around the textureLod (WebGL2) / textureCube (WebGL1)
* function to allow for WebGL 1 support in fragment shaders.
*
* @name czm_textureCubeLod
* @glslFunction
*
* @param {samplerCube} sampler The sampler.
* @param {vec3} p The coordinate at which to sample the texture.
* @param {float} lod The mipmap level from which to sample.
*/
vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) {
#if __VERSION__ == 300
return textureLod(sampler, p, lod);
#elif defined(GL_EXT_shader_texture_lod)
return textureCubeLodEXT(sampler, p, lod);
#endif
}`;var bL=`/**
* Transforms a plane.
*
* @name czm_transformPlane
* @glslFunction
*
* @param {vec4} plane The plane in Hessian Normal Form.
* @param {mat4} transform The inverse-transpose of a transformation matrix.
*/
vec4 czm_transformPlane(vec4 plane, mat4 transform) {
vec4 transformedPlane = transform * plane;
// Convert the transformed plane to Hessian Normal Form
float normalMagnitude = length(transformedPlane.xyz);
return transformedPlane / normalMagnitude;
}
`;var TL=`/**
* Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3},
* and then provided to the shader as separate <code>high</code> and <code>low</code> bits to
* be relative to the eye. As shown in the example, the position can then be transformed in eye
* or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye},
* respectively.
* <p>
* This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as
* described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}.
* </p>
*
* @name czm_translateRelativeToEye
* @glslFunction
*
* @param {vec3} high The position's high bits.
* @param {vec3} low The position's low bits.
* @returns {vec3} The position translated to be relative to the camera's position.
*
* @example
* in vec3 positionHigh;
* in vec3 positionLow;
*
* void main()
* {
* vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
* gl_Position = czm_modelViewProjectionRelativeToEye * p;
* }
*
* @see czm_modelViewRelativeToEye
* @see czm_modelViewProjectionRelativeToEye
* @see czm_computePosition
* @see EncodedCartesian3
*/
vec4 czm_translateRelativeToEye(vec3 high, vec3 low)
{
vec3 highDifference = high - czm_encodedCameraPositionMCHigh;
// This check handles the case when NaN values have gotten into \`highDifference\`.
// Such a thing could happen on devices running iOS.
if (length(highDifference) == 0.0) {
highDifference = vec3(0);
}
vec3 lowDifference = low - czm_encodedCameraPositionMCLow;
return vec4(highDifference + lowDifference, 1.0);
}
`;var CL=`/**
* @private
*/
vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
{
// Diffuse from directional light sources at eye (for top-down and horizon views)
float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal);
if (czm_sceneMode == czm_sceneMode3D) {
// (and horizon views in 3D)
diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal);
}
diffuse = clamp(diffuse, 0.0, 1.0);
float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess);
// Temporary workaround for adding ambient.
vec3 materialDiffuse = material.diffuse * 0.5;
vec3 ambient = materialDiffuse;
vec3 color = ambient + material.emission;
color += materialDiffuse * diffuse * czm_lightColor;
color += material.specular * specular * czm_lightColor;
return vec4(color, material.alpha);
}
`;var AL=`/**
* Returns the transpose of the matrix. The input <code>matrix</code> can be
* a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>.
*
* @name czm_transpose
* @glslFunction
*
* @param {} matrix The matrix to transpose.
*
* @returns {} The transposed matrix.
*
* @example
* // GLSL declarations
* mat2 czm_transpose(mat2 matrix);
* mat3 czm_transpose(mat3 matrix);
* mat4 czm_transpose(mat4 matrix);
*
* // Transpose a 3x3 rotation matrix to find its inverse.
* mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates(
* positionMC, normalEC);
* mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye);
*/
mat2 czm_transpose(mat2 matrix)
{
return mat2(
matrix[0][0], matrix[1][0],
matrix[0][1], matrix[1][1]);
}
mat3 czm_transpose(mat3 matrix)
{
return mat3(
matrix[0][0], matrix[1][0], matrix[2][0],
matrix[0][1], matrix[1][1], matrix[2][1],
matrix[0][2], matrix[1][2], matrix[2][2]);
}
mat4 czm_transpose(mat4 matrix)
{
return mat4(
matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0],
matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1],
matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2],
matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]);
}
`;var EL=`vec2 getLookupUv(vec2 dimensions, int i) {
int pixY = i / int(dimensions.x);
int pixX = i - (pixY * int(dimensions.x));
float pixelWidth = 1.0 / dimensions.x;
float pixelHeight = 1.0 / dimensions.y;
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
float v = (float(pixY) + 0.5) * pixelHeight;
return vec2(u, v);
}
vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) {
vec2 textureDimensions = vec2(textureSize(extentsTexture, 0));
return texture(extentsTexture, getLookupUv(textureDimensions, index));
}`;var SL=`/**
* Unpacks a vec4 depth value to a float in [0, 1) range.
*
* @name czm_unpackDepth
* @glslFunction
*
* @param {vec4} packedDepth The packed depth.
*
* @returns {float} The floating-point depth in [0, 1) range.
*/
float czm_unpackDepth(vec4 packedDepth)
{
// See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA
// http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/
return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0));
}
`;var vL=`/**
* Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4.
*
* @name czm_unpackFloat
* @glslFunction
*
* @param {vec4} packedFloat The packed float.
*
* @returns {float} The floating-point depth in arbitrary range.
*/
float czm_unpackFloat(vec4 packedFloat)
{
// Convert to [0.0, 255.0] and round to integer
packedFloat = floor(packedFloat * 255.0 + 0.5);
float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0;
float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0;
if (exponent == -127.0)
{
return 0.0;
}
float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000);
float result = sign * exp2(exponent - 23.0) * mantissa;
return result;
}
`;var wL=`/**
* Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type,
* so the return value is an int.
* <p>
* There are also precision limitations in WebGL 1. highp int is still limited
* to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur.
* </p>
*
* @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order.
*
* @return {int} The unpacked value.
*/
int czm_unpackUint(float packedValue) {
float rounded = czm_round(packedValue * 255.0);
return int(rounded);
}
int czm_unpackUint(vec2 packedValue) {
vec2 rounded = czm_round(packedValue * 255.0);
return int(dot(rounded, vec2(1.0, 256.0)));
}
int czm_unpackUint(vec3 packedValue) {
vec3 rounded = czm_round(packedValue * 255.0);
return int(dot(rounded, vec3(1.0, 256.0, 65536.0)));
}
int czm_unpackUint(vec4 packedValue) {
vec4 rounded = czm_round(packedValue * 255.0);
return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0)));
}
`;var DL=`/**
* Transform metadata values following the EXT_structural_metadata spec
* by multiplying by scale and adding the offset. Operations are always
* performed component-wise, even for matrices.
*
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value.
*
* @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input.
*/
float czm_valueTransform(float offset, float scale, float value) {
return scale * value + offset;
}
vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) {
return scale * value + offset;
}
vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) {
return scale * value + offset;
}
vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) {
return scale * value + offset;
}
mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) {
return matrixCompMult(scale, value) + offset;
}
mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) {
return matrixCompMult(scale, value) + offset;
}
mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) {
return matrixCompMult(scale, value) + offset;
}
`;var IL=`#ifdef LOG_DEPTH
// 1.0 at the near plane, increasing linearly from there.
out float v_depthFromNearPlusOne;
#ifdef SHADOW_MAP
out vec3 v_logPositionEC;
#endif
#endif
vec4 czm_updatePositionDepth(vec4 coords) {
#if defined(LOG_DEPTH)
#ifdef SHADOW_MAP
vec3 logPositionEC = (czm_inverseProjection * coords).xyz;
v_logPositionEC = logPositionEC;
#endif
// With the very high far/near ratios used with the logarithmic depth
// buffer, floating point rounding errors can cause linear depth values
// to end up on the wrong side of the far plane, even for vertices that
// are really nowhere near it. Since we always write a correct logarithmic
// depth value in the fragment shader anyway, we just need to make sure
// such errors don't cause the primitive to be clipped entirely before
// we even get to the fragment shader.
coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w;
#endif
return coords;
}
/**
* Writes the logarithmic depth to gl_Position using the already computed gl_Position.
*
* @name czm_vertexLogDepth
* @glslFunction
*/
void czm_vertexLogDepth()
{
#ifdef LOG_DEPTH
v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0;
gl_Position = czm_updatePositionDepth(gl_Position);
#endif
}
/**
* Writes the logarithmic depth to gl_Position using the provided clip coordinates.
* <p>
* An example use case for this function would be moving the vertex in window coordinates
* before converting back to clip coordinates. Use the original vertex clip coordinates.
* </p>
* @name czm_vertexLogDepth
* @glslFunction
*
* @param {vec4} clipCoords The vertex in clip coordinates.
*
* @example
* czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0));
*/
void czm_vertexLogDepth(vec4 clipCoords)
{
#ifdef LOG_DEPTH
v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0;
czm_updatePositionDepth(clipCoords);
#endif
}
`;var PL=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate)
{
// Reconstruct NDC coordinates
float x = 2.0 * screenCoordinate.x - 1.0;
float y = 2.0 * screenCoordinate.y - 1.0;
float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];
vec4 q = vec4(x, y, z, 1.0);
// Reverse the perspective division to obtain clip coordinates.
q /= screenCoordinate.w;
// Reverse the projection transformation to obtain eye coordinates.
if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s
{
q = czm_inverseProjection * q;
}
else
{
float top = czm_frustumPlanes.x;
float bottom = czm_frustumPlanes.y;
float left = czm_frustumPlanes.z;
float right = czm_frustumPlanes.w;
float near = czm_currentFrustum.x;
float far = czm_currentFrustum.y;
q.x = (q.x * (right - left) + left + right) * 0.5;
q.y = (q.y * (top - bottom) + bottom + top) * 0.5;
q.z = (q.z * (near - far) - near - far) * 0.5;
q.w = 1.0;
}
return q;
}
/**
* Transforms a position from window to eye coordinates.
* The transform from window to normalized device coordinates is done using components
* of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating
* the inverse of <code>czm_viewportTransformation</code>. The transformation from
* normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>,
* which is expected to be the scalar used in the perspective divide. The transformation
* from clip to eye coordinates is done using {@link czm_inverseProjection}.
*
* @name czm_windowToEyeCoordinates
* @glslFunction
*
* @param {vec4} fragmentCoordinate The position in window coordinates to transform.
*
* @returns {vec4} The transformed position in eye coordinates.
*
* @see czm_modelToWindowCoordinates
* @see czm_eyeToWindowCoordinates
* @see czm_inverseProjection
* @see czm_viewport
* @see czm_viewportTransformation
*
* @example
* vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord);
*/
vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate)
{
vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw;
return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw));
}
vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth)
{
// See reverseLogDepth.glsl. This is separate to re-use the pow.
#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY)
float near = czm_currentFrustum.x;
float far = czm_currentFrustum.y;
float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne;
float depthFromNear = exp2(log2Depth) - 1.0;
float depthFromCamera = depthFromNear + near;
vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0);
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);
eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision
return eyeCoordinate;
#else
vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0);
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);
#endif
return eyeCoordinate;
}
/**
* Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates.
* This function produces more accurate results for window positions with log depth than
* conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version
* of czm_windowToEyeCoordinates.
*
* @name czm_windowToEyeCoordinates
* @glslFunction
*
* @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform.
* @param {float} depthOrLogDepth A depth or log depth for the fragment.
*
* @see czm_modelToWindowCoordinates
* @see czm_eyeToWindowCoordinates
* @see czm_inverseProjection
* @see czm_viewport
* @see czm_viewportTransformation
*
* @returns {vec4} The transformed position in eye coordinates.
*/
vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth)
{
vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw;
return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth);
}
`;var OL=`// emulated noperspective
#if !defined(LOG_DEPTH)
in float v_WindowZ;
#endif
/**
* Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane
* by writing the fragment's depth. See czm_depthClamp for more details.
*
* @name czm_writeDepthClamp
* @glslFunction
*
* @example
* out_FragColor = color;
* czm_writeDepthClamp();
*
* @see czm_depthClamp
*/
void czm_writeDepthClamp()
{
#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0);
#endif
}
`;var RL=`#ifdef LOG_DEPTH
in float v_depthFromNearPlusOne;
#ifdef POLYGON_OFFSET
uniform vec2 u_polygonOffset;
#endif
#endif
/**
* Writes the fragment depth to the logarithmic depth buffer.
* <p>
* Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when
* ray-casting geometry using a full screen quad.
* </p>
* @name czm_writeLogDepth
* @glslFunction
*
* @param {float} depth The depth coordinate, where 1.0 is on the near plane and
* depth increases in eye-space units from there
*
* @example
* czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0);
*/
void czm_writeLogDepth(float depth)
{
#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
// Discard the vertex if it's not between the near and far planes.
// We allow a bit of epsilon on the near plane comparison because a 1.0
// from the vertex shader (indicating the vertex should be _on_ the near
// plane) will not necessarily come here as exactly 1.0.
if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) {
discard;
}
#ifdef POLYGON_OFFSET
// Polygon offset: m * factor + r * units
float factor = u_polygonOffset[0];
float units = u_polygonOffset[1];
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
// This factor doesn't work in IE 10
if (factor != 0.0) {
// m = sqrt(dZdX^2 + dZdY^2);
float x = dFdx(depth);
float y = dFdy(depth);
float m = sqrt(x * x + y * y);
// Apply the factor before computing the log depth.
depth += m * factor;
}
#endif
#endif
gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne;
#ifdef POLYGON_OFFSET
// Apply the units after the log depth.
gl_FragDepth += czm_epsilon7 * units;
#endif
#endif
}
/**
* Writes the fragment depth to the logarithmic depth buffer.
* <p>
* Use this when the vertex shader calls {@link czm_vertexLogDepth}.
* </p>
*
* @name czm_writeLogDepth
* @glslFunction
*/
void czm_writeLogDepth() {
#ifdef LOG_DEPTH
czm_writeLogDepth(v_depthFromNearPlusOne);
#endif
}
`;var ML=`/**
* Transforms a value for non-perspective interpolation by multiplying
* it by w, the value used in the perspective divide. This function is
* intended to be called in a vertex shader to compute the value of a
* \`varying\` that should not be subject to perspective interpolation.
* For example, screen-space texture coordinates. The fragment shader
* must call {@link czm_readNonPerspective} to retrieve the final
* non-perspective value.
*
* @name czm_writeNonPerspective
* @glslFunction
*
* @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective.
* @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`.
* @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the
* fragment shader with {@link czm_readNonPerspective}.
*/
float czm_writeNonPerspective(float value, float w) {
return value * w;
}
vec2 czm_writeNonPerspective(vec2 value, float w) {
return value * w;
}
vec3 czm_writeNonPerspective(vec3 value, float w) {
return value * w;
}
vec4 czm_writeNonPerspective(vec4 value, float w) {
return value * w;
}
`;var LL=`/**
* Converts a CIE Yxy color to RGB.
* <p>The conversion is described in
* {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform}
* </p>
*
* @name czm_XYZToRGB
* @glslFunction
*
* @param {vec3} Yxy The color in CIE Yxy.
*
* @returns {vec3} The color in RGB.
*
* @example
* vec3 xyz = czm_RGBToXYZ(rgb);
* xyz.x = max(xyz.x - luminanceThreshold, 0.0);
* rgb = czm_XYZToRGB(xyz);
*/
vec3 czm_XYZToRGB(vec3 Yxy)
{
const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556,
-1.5371, 1.8760, -0.2040,
-0.4985, 0.0416, 1.0572);
vec3 xyz;
xyz.r = Yxy.r * Yxy.g / Yxy.b;
xyz.g = Yxy.r;
xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b;
return XYZ2RGB * xyz;
}
`;var jT={czm_degreesPerRadian:aR,czm_depthRange:cR,czm_epsilon1:lR,czm_epsilon2:uR,czm_epsilon3:fR,czm_epsilon4:dR,czm_epsilon5:hR,czm_epsilon6:mR,czm_epsilon7:pR,czm_infinity:_R,czm_oneOverPi:gR,czm_oneOverTwoPi:yR,czm_passCesium3DTile:xR,czm_passCesium3DTileClassification:bR,czm_passCesium3DTileClassificationIgnoreShow:TR,czm_passClassification:CR,czm_passCompute:AR,czm_passEnvironment:ER,czm_passGlobe:SR,czm_passOpaque:vR,czm_passOverlay:wR,czm_passTerrainClassification:DR,czm_passTranslucent:IR,czm_passVoxels:PR,czm_pi:OR,czm_piOverFour:RR,czm_piOverSix:MR,czm_piOverThree:LR,czm_piOverTwo:NR,czm_radiansPerDegree:FR,czm_sceneMode2D:BR,czm_sceneMode3D:kR,czm_sceneModeColumbusView:VR,czm_sceneModeMorphing:UR,czm_solarRadius:zR,czm_threePiOver2:HR,czm_twoPi:GR,czm_webMercatorMaxLatitude:WR,czm_depthRangeStruct:jR,czm_material:qR,czm_materialInput:YR,czm_modelMaterial:XR,czm_modelVertexOutput:KR,czm_ray:$R,czm_raySegment:ZR,czm_shadowParameters:QR,czm_acesTonemapping:JR,czm_alphaWeight:eM,czm_antialias:tM,czm_applyHSBShift:nM,czm_approximateSphericalCoordinates:iM,czm_approximateTanh:oM,czm_backFacing:rM,czm_branchFreeTernary:sM,czm_cascadeColor:aM,czm_cascadeDistance:cM,czm_cascadeMatrix:lM,czm_cascadeWeights:uM,czm_clipPolygons:fM,czm_columbusViewMorph:dM,czm_computeAtmosphereColor:hM,czm_computeGroundAtmosphereScattering:mM,czm_computePosition:pM,czm_computeScattering:_M,czm_cosineAndSine:gM,czm_decompressTextureCoordinates:yM,czm_depthClamp:xM,czm_eastNorthUpToEyeCoordinates:bM,czm_ellipsoidContainsPoint:TM,czm_ellipsoidTextureCoordinates:CM,czm_equalsEpsilon:AM,czm_eyeOffset:EM,czm_eyeToWindowCoordinates:SM,czm_fastApproximateAtan:vM,czm_fog:wM,czm_gammaCorrect:DM,czm_geodeticSurfaceNormal:IM,czm_getDefaultMaterial:PM,czm_getDynamicAtmosphereLightDirection:OM,czm_getLambertDiffuse:RM,czm_getSpecular:MM,czm_getWaterNoise:LM,czm_HSBToRGB:NM,czm_HSLToRGB:FM,czm_hue:BM,czm_inverseGamma:kM,czm_isEmpty:VM,czm_isFull:UM,czm_latitudeToWebMercatorFraction:zM,czm_linearToSrgb:HM,czm_lineDistance:GM,czm_luminance:WM,czm_maximumComponent:jM,czm_metersPerPixel:qM,czm_modelToWindowCoordinates:YM,czm_multiplyWithColorBalance:XM,czm_nearFarScalar:KM,czm_octDecode:$M,czm_packDepth:ZM,czm_pbrLighting:QM,czm_pbrNeutralTonemapping:JM,czm_phong:eL,czm_planeDistance:tL,czm_pointAlongRay:nL,czm_rayEllipsoidIntersectionInterval:iL,czm_raySphereIntersectionInterval:oL,czm_readDepth:rL,czm_readNonPerspective:sL,czm_reverseLogDepth:aL,czm_RGBToHSB:cL,czm_RGBToHSL:lL,czm_RGBToXYZ:uL,czm_round:fL,czm_saturation:dL,czm_shadowDepthCompare:hL,czm_shadowVisibility:mL,czm_signNotZero:pL,czm_sphericalHarmonics:_L,czm_srgbToLinear:gL,czm_tangentToEyeSpaceMatrix:yL,czm_textureCube:xL,czm_transformPlane:bL,czm_translateRelativeToEye:TL,czm_translucentPhong:CL,czm_transpose:AL,czm_unpackClippingExtents:EL,czm_unpackDepth:SL,czm_unpackFloat:vL,czm_unpackUint:wL,czm_valueTransform:DL,czm_vertexLogDepth:IL,czm_windowToEyeCoordinates:PL,czm_writeDepthClamp:OL,czm_writeLogDepth:RL,czm_writeNonPerspective:ML,czm_XYZToRGB:LL};function g1e(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,`
varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable
${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable
${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod
#extension GL_EXT_shader_texture_lod : enable
#endif
${n}`,n=`#ifdef GL_OES_standard_derivatives
#extension GL_OES_standard_derivatives : enable
#endif
${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100
${n}`,n}var NL=g1e;function Oee(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=`
`;return i})}function Ree(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=Oee(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Mee(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&ks._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=Ree(i,ks._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Mee(o,t)}}))}function y1e(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function x1e(e){let t=[],n=Ree("main",e,t);Mee(n,t),y1e(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource}
`;return i.replace(n.glslSource,"")}function Lee(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=`
#line 0
${s[i]}`;r=Oee(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(x,b){return a=b,`
`});let c=[];r=r.replace(/#extension.*\n/gm,function(x){return c.push(x),`
`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=ks.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
precision highp int;
#else
precision mediump float;
precision mediump int;
#define highp mediump
#endif
`);let p=e.defines;if(l(p))for(i=0,o=p.length;i<o;++i){let x=p[i];x.length!==0&&(f+=`#define ${x}
`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear
`),n.floatingPointTexture&&(f+=`#define OES_texture_float
`);let g="";e.includeBuiltIns&&(g=x1e(r)),f+=`
#line 0
`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor;
`),f+=g,f+=r,n.webgl2?f=`#version 300 es
${f}`:f=NL(f,t),f}function ks(e){e=y(e,y.EMPTY_OBJECT);let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=y(e.includeBuiltIns,!0)}ks.prototype.clone=function(){return new ks({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};ks.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};ks.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(`
`);return`${t}:${n}:${i}:${o}`};ks.prototype.createCombinedVertexShader=function(e){return Lee(this,!1,e)};ks.prototype.createCombinedFragmentShader=function(e){return Lee(this,!0,e)};ks._czmBuiltinsAndUniforms={};for(let e in jT)jT.hasOwnProperty(e)&&(ks._czmBuiltinsAndUniforms[e]=jT[e]);for(let e in J_)if(J_.hasOwnProperty(e)){let t=J_[e];typeof t.getDeclaration=="function"&&(ks._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}ks.createPickVertexShaderSource=function(e){return`${ks.replaceMain(e,"czm_old_main")}
in vec4 pickColor;
out vec4 czm_pickColor;
void main()
{
czm_old_main();
czm_pickColor = pickColor;
}`};ks.createPickFragmentShaderSource=function(e,t){let n=ks.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor;
void main()
{
czm_old_main();
if (out_FragColor.a == 0.0) {
discard;
}
out_FragColor = czm_pickColor;
}`;return`${n}
${i}`};function b1e(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Nee(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function Fee(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Nee(e,o))return o}}var T1e=["v_normalEC","v_normal"];ks.findNormalVarying=function(e){return Nee(e,"#ifdef HAS_NORMALS")?b1e(e,"HAS_NORMALS")?"v_normalEC":void 0:Fee(e,T1e)};var C1e=["v_positionEC"];ks.findPositionVarying=function(e){return Fee(e,C1e)};var Ue=ks;var FL=`in vec3 position3DHigh;
in vec3 position3DLow;
in float batchId;
#ifdef EXTRUDED_GEOMETRY
in vec3 extrudeDirection;
uniform float u_globeMinimumAltitude;
#endif // EXTRUDED_GEOMETRY
#ifdef PER_INSTANCE_COLOR
out vec4 v_color;
#endif // PER_INSTANCE_COLOR
#ifdef TEXTURE_COORDINATES
#ifdef SPHERICAL
out vec4 v_sphericalExtents;
#else // SPHERICAL
out vec2 v_inversePlaneExtents;
out vec4 v_westPlane;
out vec4 v_southPlane;
#endif // SPHERICAL
out vec3 v_uvMinAndSphericalLongitudeRotation;
out vec3 v_uMaxAndInverseDistance;
out vec3 v_vMaxAndInverseDistance;
#endif // TEXTURE_COORDINATES
void main()
{
vec4 position = czm_computePosition();
#ifdef EXTRUDED_GEOMETRY
float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz));
delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0;
//extrudeDirection is zero for the top layer
position = position + vec4(extrudeDirection * delta, 0.0);
#endif
#ifdef TEXTURE_COORDINATES
#ifdef SPHERICAL
v_sphericalExtents = czm_batchTable_sphericalExtents(batchId);
v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId);
#else // SPHERICAL
#ifdef COLUMBUS_VIEW_2D
vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId);
vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId);
// If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w):
// - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts)
// - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w)
// - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow)
vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w));
bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0;
planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w);
planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w);
// - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0)
// - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x)
// - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow)
idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0;
idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x));
planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x);
planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x);
vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz;
vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz;
vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz;
#else // COLUMBUS_VIEW_2D
// 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction
vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz;
vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner;
vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner;
#endif // COLUMBUS_VIEW_2D
vec3 eastWard = southEastCorner - southWestCorner;
float eastExtent = length(eastWard);
eastWard /= eastExtent;
vec3 northWard = northWestCorner - southWestCorner;
float northExtent = length(northWard);
northWard /= northExtent;
v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner));
v_southPlane = vec4(northWard, -dot(northWard, southWestCorner));
v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent);
#endif // SPHERICAL
vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId);
vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId);
v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z);
v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w);
v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy;
#endif // TEXTURE_COORDINATES
#ifdef PER_INSTANCE_COLOR
v_color = czm_batchTable_color(batchId);
#endif
gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position);
}
`;var Z0=`#ifdef VECTOR_TILE
uniform vec4 u_highlightColor;
#endif
void main(void)
{
#ifdef VECTOR_TILE
out_FragColor = czm_gammaCorrect(u_highlightColor);
#else
out_FragColor = vec4(1.0);
#endif
czm_writeDepthClamp();
}
`;var Bee={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};Bee.NUMBER_OF_CLASSIFICATION_TYPES=3;var zn=Object.freeze(Bee);var A1e={NEVER:te.NEVER,LESS:te.LESS,EQUAL:te.EQUAL,LESS_OR_EQUAL:te.LEQUAL,GREATER:te.GREATER,NOT_EQUAL:te.NOTEQUAL,GREATER_OR_EQUAL:te.GEQUAL,ALWAYS:te.ALWAYS},Dc=Object.freeze(A1e);function E1e(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var BL=E1e;function bp(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=S1e(t),o=e.floatingPointTexture,r=i===Ke.FLOAT&&!o,s=v1e(t,r),a=w1e(s,t,r),c=Math.floor(kt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),p=1/f,g=p*.5,m=1/h,x=m*.5;this._textureDimensions=new U(f,h),this._textureStep=new oe(p,g,m,x),this._pixelDatatype=r?Ke.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let b=4*f*h;this._batchValues=i===Ke.FLOAT&&!r?new Float32Array(b):new Uint8Array(b),this._batchValuesDirty=!1}Object.defineProperties(bp.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function S1e(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==X.UNSIGNED_BYTE){t=!0;break}return t?Ke.FLOAT:Ke.UNSIGNED_BYTE}function Vee(e,t){let n=e[t].componentsPerAttribute;return n===2?U:n===3?d:n===4?oe:Number}function v1e(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==X.UNSIGNED_BYTE&&t?i+=4:++i}return n}function w1e(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==X.UNSIGNED_BYTE&&n?o+4:o+1}var Cv=new oe;function D1e(e,t,n){let i=oe.unpack(e,t,Cv),o=oe.unpackFloat(i);i=oe.unpack(e,t+4,Cv);let r=oe.unpackFloat(i);i=oe.unpack(e,t+8,Cv);let s=oe.unpackFloat(i);i=oe.unpack(e,t+12,Cv);let a=oe.unpackFloat(i);return oe.fromElements(o,r,s,a,n)}function I1e(e,t,n){let i=oe.packFloat(e.x,Cv);oe.pack(i,t,n),i=oe.packFloat(e.y,i),oe.pack(i,t,n+4),i=oe.packFloat(e.z,i),oe.pack(i,t,n+8),i=oe.packFloat(e.w,i),oe.pack(i,t,n+12)}var kee=new oe;bp.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==Ke.UNSIGNED_BYTE?a=D1e(this._batchValues,s,kee):a=oe.unpack(this._batchValues,s,kee);let c=Vee(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var P1e=[void 0,void 0,new U,new d,new oe],O1e=new oe;bp.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=P1e[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Vee(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=O1e;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==Ke.UNSIGNED_BYTE?I1e(c,this._batchValues,h):oe.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function R1e(e,t){let n=e._textureDimensions;e._texture=new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:Zt.NEAREST,flipY:!1})}function M1e(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}bp.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||R1e(this,e.context),M1e(this))};bp.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:At(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function L1e(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep;
vec2 computeSt(float batchId)
{
float stepX = batchTextureStep.x;
float centerX = batchTextureStep.y;
float numberOfAttributes = float(${t});
return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5);
}
`:`uniform vec4 batchTextureStep;
uniform vec2 batchTextureDimensions;
vec2 computeSt(float batchId)
{
float stepX = batchTextureStep.x;
float centerX = batchTextureStep.y;
float stepY = batchTextureStep.z;
float centerY = batchTextureStep.w;
float numberOfAttributes = float(${t});
float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x);
float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x);
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
}
`}function N1e(e){return e===1?"float":`vec${e}`}function F1e(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function B1e(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=N1e(o),a=F1e(o),c=e._offsets[t],u=`${s} ${r}(float batchId)
{
vec2 st = computeSt(batchId);
st.x += batchTextureStep.x * float(${c});
`;return e._packFloats&&i.componentDatatype!==Ke.UNSIGNED_BYTE?u+=`vec4 textureValue;
textureValue.x = czm_unpackFloat(texture(batchTexture, st));
textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0)));
textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0)));
textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0)));
`:u+=` vec4 textureValue = texture(batchTexture, st);
`,u+=` ${s} value = textureValue${a};
`,e._pixelDatatype===Ke.UNSIGNED_BYTE&&i.componentDatatype===X.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0;
`:e._pixelDatatype===Ke.FLOAT&&i.componentDatatype===X.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0;
`),u+=` return value;
}
`,u}bp.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture;
`;t+=`${L1e(this)}
`;let n=e.length;for(let i=0;i<n;++i)t+=B1e(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r}
${t}
${s}`}};bp.prototype.isDestroyed=function(){return!1};bp.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var qT=bp;function hl(e){this._ellipsoid=y(e,ee.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(hl.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});hl.mercatorAngleToGeodeticLatitude=function(e){return P.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};hl.geodeticLatitudeToMercatorAngle=function(e){e>hl.MaximumLatitude?e=hl.MaximumLatitude:e<-hl.MaximumLatitude&&(e=-hl.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};hl.MaximumLatitude=hl.mercatorAngleToGeodeticLatitude(Math.PI);hl.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=hl.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};hl.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=hl.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new fe(i,o,r)};var Ni=hl;function k1e(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!F.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&kn.transformToWorldCoordinates(e[r]);else F.multiplyTransformation(t,e[0].modelMatrix,t)}function M6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function V1e(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?M6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(M6(i.westHemisphereGeometry,n),M6(i.eastHemisphereGeometry,n))}}function U1e(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(k1e(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&kn.splitLongitude(t[c]);if(V1e(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(kn.reorderForPostVertexCache(g.geometry),kn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(kn.reorderForPostVertexCache(g.westHemisphereGeometry),kn.reorderForPreVertexCache(g.westHemisphereGeometry),kn.reorderForPostVertexCache(g.eastHemisphereGeometry),kn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let p=kn.combineInstances(t);for(h=p.length,c=0;c<h;++c){u=p[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===X.DOUBLE&&kn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===X.DOUBLE){let x=`${m}3D`,b=`${m}2D`;kn.projectTo2D(u,m,x,b,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=ce.fromVertices(u.attributes.position2D.values)),kn.encodeAttribute(u,x,`${x}High`,`${x}Low`),kn.encodeAttribute(u,b,`${b}High`,`${b}Low`)}s&&kn.compressVertices(u)}if(!i){let g=[];for(h=p.length,c=0;c<h;++c)u=p[c],g=g.concat(kn.fitToUnsignedShortIndices(u));p=g}return p}function L6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let p=h.indices.length;o+p>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:p}),o+=p}}function z1e(e,t){let n=[];return L6(e,"geometry",t,n),L6(e,"westHemisphereGeometry",t,n),L6(e,"eastHemisphereGeometry",t,n),n}var Tp={};Tp.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=U1e(e),t.length>0&&(n=kn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=z1e(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],p=h.geometry;l(p)&&(c[f]=p.boundingSphere,u[f]=p.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=ce.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=ce.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function H1e(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function G1e(e,t){let n=e.length;for(let i=0;i<n;++i)H1e(e[i],t)}function W1e(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*ce.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}Tp.packCreateGeometryResults=function(e,t){let n=new Float64Array(W1e(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=y(c.offsetAttribute,-1);let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&ce.pack(c.boundingSphere,n,s),s+=ce.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&ce.pack(c.boundingSphereCV,n,s),s+=ce.packedLength;let p=c.attributes,g=[];for(let x in p)p.hasOwnProperty(x)&&l(p[x])&&(g.push(x),l(o[x])||(o[x]=i.length,i.push(x)));n[s++]=g.length;for(let x=0;x<g.length;x++){let b=g[x],T=p[b];n[s++]=o[b],n[s++]=T.componentDatatype,n[s++]=T.componentsPerAttribute,n[s++]=T.normalize?1:0,n[s++]=T.values.length,n.set(T.values,s),s+=T.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};Tp.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,p;n[s++]===1&&(h=ce.unpack(n,s)),s+=ce.packedLength,n[s++]===1&&(p=ce.unpack(n,s)),s+=ce.packedLength;let x,b,T,C=new mn,A=n[s++];for(i=0;i<A;i++){let v=t[n[s++]],D=n[s++];T=n[s++];let R=n[s++]!==0;x=n[s++],b=X.createTypedArray(D,x);for(let O=0;O<x;O++)b[O]=n[s++];C[v]=new Se({componentDatatype:D,componentsPerAttribute:T,normalize:R,values:b})}let E;if(x=n[s++],x>0){let v=b.length/T;for(E=Be.createTypedArray(v,x),i=0;i<x;i++)E[i]=n[s++]}o[r++]=new ut({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:p,indices:E,attributes:C,offsetAttribute:f})}return o};function j1e(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(F.pack(s.modelMatrix,i,o),o+=F.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function q1e(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=F.unpack(t,o),s;o+=F.packedLength,l(t[o])&&(s={offset:new to(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}Tp.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:j1e(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Ri,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};Tp.unpackCombineGeometryParameters=function(e){let t=q1e(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=Tp.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],p=t[o];p.geometry=h,++o}}let r=ee.clone(e.ellipsoid),s=e.isGeographic?new Ri(r):new Ni(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:F.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function Uee(e){let t=e.length,n=1+(ce.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,ce.pack(e[r],i,o)):i[o++]=0,o+=ce.packedLength}return i}function zee(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=ce.unpack(e,i)),++n,i+=ce.packedLength;return t}Tp.packCombineGeometryResults=function(e,t){l(e.geometries)&&G1e(e.geometries,t);let n=Uee(e.boundingSpheres),i=Uee(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};Tp.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:zee(e.boundingSpheres),boundingSpheresCV:zee(e.boundingSpheresCV)}};var YT=Tp;var Y1e={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},Mr=Object.freeze(Y1e);var kL={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};kL.getMorphTime=function(e){return e===kL.SCENE3D?1:e===kL.MORPHING?void 0:0};var ne=Object.freeze(kL);var tu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};tu.NUMBER_OF_SHADOW_MODES=4;tu.castShadows=function(e){return e===tu.ENABLED||e===tu.CAST_ONLY};tu.receiveShadows=function(e){return e===tu.ENABLED||e===tu.RECEIVE_ONLY};tu.fromCastReceive=function(e,t){return e&&t?tu.ENABLED:e?tu.CAST_ONLY:t?tu.RECEIVE_ONLY:tu.DISABLED};var yn=Object.freeze(tu);function pr(e){e=y(e,y.EMPTY_OBJECT),this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=new F,this.show=y(e.show,!0),this._vertexCacheOptimize=y(e.vertexCacheOptimize,!1),this._interleave=y(e.interleave,!1),this._releaseGeometryInstances=y(e.releaseGeometryInstances,!0),this._allowPicking=y(e.allowPicking,!0),this._asynchronous=y(e.asynchronous,!0),this._compressVertices=y(e.compressVertices,!0),this.cull=y(e.cull,!0),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.rtcCenter=e.rtcCenter,this.shadows=y(e.shadows,yn.DISABLED),this._translucent=void 0,this._state=Mr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(pr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function X1e(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var K1e=new U,$1e=new d,$ee=new oe;function Zee(e){let t=e.length;if(t===1)return e[0];if(t===2)return U.unpack(e,0,K1e);if(t===3)return d.unpack(e,0,$1e);if(t===4)return oe.unpack(e,0,$ee)}function Z1e(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=X1e(i),s=r.length,a=[],c={},u={},f,p=i[0].attributes,g,m,x;for(g=0;g<s;++g)m=r[g],x=p[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:x.componentDatatype,componentsPerAttribute:x.componentsPerAttribute,normalize:x.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:X.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:X.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:X.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:X.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:X.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:X.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let b=a.length,T=new qT(t,a,o);for(g=0;g<o;++g){let C=i[g];p=C.attributes;for(let R=0;R<s;++R){m=r[R],x=p[m];let O=Zee(x.value),M=c[m];T.setBatchedAttribute(g,M,O)}let A={primitive:y(C.pickPrimitive,e)};l(C.id)&&(A.id=C.id);let E=t.createPickId(A);e._pickIds.push(E);let v=E.color,D=$ee;D.x=z.floatToByte(v.red),D.y=z.floatToByte(v.green),D.z=z.floatToByte(v.blue),D.w=z.floatToByte(v.alpha),T.setBatchedAttribute(g,b-1,D)}e._batchTable=T,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function Q1e(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new Se({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function J1e(e){let t=e.attributes,n=new mn;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=Q1e(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ut({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:ce.clone(e.boundingSphere)})}function eOe(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:F.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var tOe=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;pr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=tOe.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c};
`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView;
`,r+=`in vec4 position;
`,s+=`${c}
{
return u_modifiedModelView * position;
}
`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c}
{
return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow);
}
`:(r+=`in vec3 ${a}2DHigh;
in vec3 ${a}2DLow;
`,s+=`${c}
{
vec4 p;
if (czm_morphTime == 1.0)
{
p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow);
}
else if (czm_morphTime == 0.0)
{
p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy);
}
else
{
p = czm_columbusViewMorph(
czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy),
czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow),
czm_morphTime);
}
return p;
}
`)}return[o,r,t,s].join(`
`)};pr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${Ue.replaceMain(t,"czm_non_show_main")}
void main()
{
czm_non_show_main();
gl_Position *= czm_batchTable_show(batchId);
}`:t};pr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Hee(e){return`${Ue.replaceMain(e,"czm_non_pick_main")}
out vec4 v_pickColor;
void main()
{
czm_non_pick_main();
v_pickColor = czm_batchTable_pickColor(batchId);
}`}function Gee(e){return`in vec4 v_pickColor;
${e}`}pr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};pr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId;
`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition();
`;return o+=` if (czm_sceneMode == czm_sceneMode3D)
`,o+=` {
`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` }
`,o+=` else
`,o+=` {
`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` }
`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};pr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=Ue.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main()
{
czm_non_distanceDisplayCondition_main();
vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId);
vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId);
vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId);
float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId);
`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow);
`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId);
vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId);
vec4 centerRTE;
if (czm_morphTime == 1.0)
{
centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow);
}
else if (czm_morphTime == 0.0)
{
centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy);
}
else
{
centerRTE = czm_columbusViewMorph(
czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy),
czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow),
czm_morphTime);
}
`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius;
float distanceSq;
if (czm_sceneMode == czm_sceneMode2D)
{
distanceSq = czm_eyeHeight2D.y - radiusSq;
}
else
{
distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq;
}
distanceSq = max(distanceSq, 0.0);
float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x;
float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y;
float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0;
gl_Position *= show;
}`,`${i}
${o}`};function Wee(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st;
`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m});
`}n&&o&&r?(f+=`vec3 normal;
vec3 tangent;
vec3 bitangent;
`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent);
`):(n&&(f+=`vec3 normal;
`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""});
`),o&&(f+=`vec3 tangent;
`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"});
`),r&&(f+=`vec3 bitangent;
`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"});
`));let p=t;p=p.replace(/in\s+vec3\s+normal;/g,""),p=p.replace(/in\s+vec2\s+st;/g,""),p=p.replace(/in\s+vec3\s+tangent;/g,""),p=p.replace(/in\s+vec3\s+bitangent;/g,""),p=Ue.replaceMain(p,"czm_non_compressed_main");let g=`void main()
{
${h} czm_non_compressed_main();
}`;return[u,f,p,g].join(`
`)}function nOe(e){let t=Ue.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() {
czm_non_depth_clamp_main();
gl_Position = czm_depthClamp(gl_Position);}
`,t}function iOe(e){let t=Ue.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() {
czm_non_depth_clamp_main();
#if defined(LOG_DEPTH)
czm_writeLogDepth();
#else
czm_writeDepthClamp();
#endif
}
`,t}function jee(e,t){let n=e.vertexAttributes}function oOe(e,t){return function(){return e[t]}}var N6=Math.max(Ht.hardwareConcurrency-1,1),VL,rOe=new bi("combineGeometry");function sOe(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===Mr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(VL))for(VL=new Array(N6),o=0;o<N6;o++)VL[o]=new bi("createGeometry");let f;for(u=BL(u,N6),o=0;o<u.length;o++){let h=0,p=u[o],g=p.length;for(r=0;r<g;++r)f=p[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=y(i.constructor.packedLength,i.packedLength));let m;if(h>0){let x=new Float64Array(h);for(m=[x.buffer],r=0;r<g;++r)f=p[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,x,f.offset),f.geometry=x)}c.push(VL[o].scheduleTask({subTasks:u[o]},m))}e._state=Mr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=Mr.CREATED}).catch(function(h){Ev(e,t,Mr.FAILED,h)})}else if(e._state===Mr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=rOe.scheduleTask(YT.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=Mr.COMBINING,Promise.resolve(f).then(function(h){let p=YT.unpackCombineGeometryResults(h);e._geometries=p.geometries,e._attributeLocations=p.attributeLocations,e.modelMatrix=F.clone(p.modelMatrix,e.modelMatrix),e._pickOffsets=p.pickOffsets,e._offsetInstanceExtend=p.offsetInstanceExtend,e._instanceBoundingSpheres=p.boundingSpheres,e._instanceBoundingSpheresCV=p.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=Mr.COMBINED):Ev(e,t,Mr.FAILED,void 0)}).catch(function(h){Ev(e,t,Mr.FAILED,h)})}}function aOe(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let p=s.geometry,g;l(p.attributes)&&l(p.primitiveType)?g=J1e(p):g=p.constructor.createGeometry(p),o[c++]=eOe(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=YT.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=F.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=Mr.COMBINED):Ev(e,t,Mr.FAILED,void 0)}function cOe(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new ce;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let x=a[i],b=e._batchTable.getBatchedAttribute(i,n,new d);x=r[i].clone(x),tte(x,b,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let x=a[i];x.center.x-x.radius>0||ce.intersectPlane(x,sn.ORIGIN_ZX_PLANE)!==jt.INTERSECTING?c.push(x):(u.push(x),f.push(x))}let h=c[0],p=f[0],g=u[0];for(i=1;i<c.length;i++)h=ce.union(h,c[i]);for(i=1;i<f.length;i++)p=ce.union(p,f[i]);for(i=1;i<u.length;i++)g=ce.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(p)&&m.push(p),l(g)&&m.push(g),i=0;i<m.length;i++){let x=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=x,e._boundingSphereCV[i]=ce.projectTo2D(x,t.mapProjection,e._boundingSphereCV[i])}pr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var qee=new Wn,Qee=new fe,Jee=new d,ete=new ce;function lOe(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,p=e._instanceBoundingSpheres,g=p.length;for(let m=0;m<g;++m){let x=p[m];if(!l(x))continue;let b=e.modelMatrix;l(b)&&(x=ce.transform(x,b,ete));let T=x.center,C=x.radius,A=Wn.fromCartesian(T,qee);if(h.setBatchedAttribute(m,o,A.high),h.setBatchedAttribute(m,r,A.low),!t.scene3DOnly){let E=f.cartesianToCartographic(T,Qee),v=u.project(E,Jee);A=Wn.fromCartesian(v,qee),h.setBatchedAttribute(m,s,A.high),h.setBatchedAttribute(m,a,A.low)}h.setBatchedAttribute(m,c,C)}e._batchTableBoundingSpheresUpdated=!0}var F6=new d,uOe=new d;function Yee(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let p=e.modelMatrix;l(p)&&(f=ce.transform(f,p,ete));let g=f.center;g=r.scaleToGeodeticSurface(g,uOe);let m=r.cartesianToCartographic(g,Qee),x=o.project(m,Jee),b=d.add(h,g,F6);m=r.cartesianToCartographic(b,m);let T=o.project(m,F6),C=d.subtract(T,x,F6),A=C.x;C.x=C.z,C.z=C.y,C.y=A,s.setBatchedAttribute(u,i,C)}e._batchTableOffsetsUpdated=!0}function fOe(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(oi.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:ke.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(ce.clone(u.boundingSphere)),e._boundingSphereWC.push(new ce),!o){let f=u.boundingSphereCV.center,h=f.x,p=f.y,g=f.z;f.x=g,f.y=h,f.z=p,e._boundingSphereCV.push(ce.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new ce),e._boundingSphereMorph.push(new ce)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,Ev(e,t,Mr.COMPLETE,void 0)}function dOe(e,t,n,i){let o=n.getRenderState(),r;i?(r=He(o,!1),r.cull={enabled:!0,face:xi.BACK},e._frontFaceRS=Ve.fromCache(r),r.cull.face=xi.FRONT,e._backFaceRS=Ve.fromCache(r)):(e._frontFaceRS=Ve.fromCache(o),e._backFaceRS=e._frontFaceRS),r=He(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=He(o,!1),r.depthTest.func=Dc.GREATER,i?(r.cull={enabled:!0,face:xi.BACK},e._frontFaceDepthFailRS=Ve.fromCache(r),r.cull.face=xi.FRONT,e._backFaceDepthFailRS=Ve.fromCache(r)):(e._frontFaceDepthFailRS=Ve.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function hOe(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=pr._appendOffsetToShader(e,r),r=pr._appendShowToShader(e,r),r=pr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Hee(r),r=pr._updateColorAttribute(e,r,!1),r=Wee(e,r),r=pr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=Gee(s),e._sp=Jt.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),jee(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=pr._appendShowToShader(e,r),r=pr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Hee(r),r=pr._updateColorAttribute(e,r,!0),r=Wee(e,r),r=pr._modifyShaderPosition(e,r,t.scene3DOnly),r=nOe(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=Gee(s),s=iOe(s),e._spDepthFail=Jt.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),jee(e._spDepthFail,o))}var Av=new F,Xee=new d;function Kee(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=oOe(s,c));let a=At(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return F.multiply(c,e._modelMatrix,Av),F.multiplyByPoint(Av,e.rtcCenter,Xee),F.setTranslation(Av,Xee,Av),Av}),a}function mOe(e,t,n,i,o,r,s,a){let c=Kee(e,t,n,a),u;l(e._depthFailAppearance)&&(u=Kee(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?ve.TRANSLUCENT:ve.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let p=r.length,g=0;for(let m=0;m<p;++m){let x;o&&(x=r[m],l(x)||(x=r[m]=new Qe({owner:e,primitiveType:e._primitiveType})),x.vertexArray=e._va[g],x.renderState=e._backFaceRS,x.shaderProgram=e._sp,x.uniformMap=c,x.pass=f,++m),x=r[m],l(x)||(x=r[m]=new Qe({owner:e,primitiveType:e._primitiveType})),x.vertexArray=e._va[g],x.renderState=e._frontFaceRS,x.shaderProgram=e._sp,x.uniformMap=c,x.pass=f,l(e._depthFailAppearance)&&(o&&(++m,x=r[m],l(x)||(x=r[m]=new Qe({owner:e,primitiveType:e._primitiveType})),x.vertexArray=e._va[g],x.renderState=e._backFaceDepthFailRS,x.shaderProgram=e._spDepthFail,x.uniformMap=u,x.pass=f),++m,x=r[m],l(x)||(x=r[m]=new Qe({owner:e,primitiveType:e._primitiveType})),x.vertexArray=e._va[g],x.renderState=e._frontFaceDepthFailRS,x.shaderProgram=e._spDepthFail,x.uniformMap=u,x.pass=f),++g}}pr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!F.equals(n,e._modelMatrix))for(F.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=ce.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=ce.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphere2D[o].center.x=0,e._boundingSphereMorph[o]=ce.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function pOe(e,t,n,i,o,r,s,a){pr._updateBoundingVolumes(e,t,o);let c;t.mode===ne.SCENE3D?c=e._boundingSphereWC:t.mode===ne.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ne.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,p=yn.castShadows(e.shadows),g=yn.receiveShadows(e.shadows),m=n.length,x=a?2:1;x*=l(e._depthFailAppearance)?2:1;for(let b=0;b<m;++b){let T=Math.floor(b/x),C=n[b];C.modelMatrix=o,C.boundingVolume=c[T],C.cull=r,C.debugShowBoundingVolume=s,C.castShadows=p,C.receiveShadows=g,h?C.pickId="v_pickColor":C.pickId=void 0,u.push(C)}}}pr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ne.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===Mr.FAILED)return;let t=e.context;if(l(this._batchTable)||Z1e(this,t),this._batchTable.attributes.length>0){if(kt.maximumVertexTextureImageUnits===0)throw new se("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==Mr.COMPLETE&&this._state!==Mr.COMBINED&&(this.asynchronous?sOe(this,e):aOe(this,e)),this._state===Mr.COMBINED&&(lOe(this,e),Yee(this,e),fOe(this,e)),!this.show||this._state!==Mr.COMPLETE)return;this._batchTableOffsetsUpdated||Yee(this,e),this._recomputeBoundingSpheres&&cOe(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&y(this._createRenderStatesFunction,dOe)(this,t,n,u),r&&y(this._createShaderProgramFunction,hOe)(this,e,n),(o||r)&&y(this._createCommandsFunction,mOe)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),y(this._updateAndQueueCommandsFunction,pOe)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var _Oe=new ce,gOe=new ce;function tte(e,t,n){if(n===rn.TOP){let i=ce.clone(e,_Oe),o=ce.clone(e,gOe);o.center=d.add(o.center,t,o.center),e=ce.union(i,o,e)}else n===rn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function yOe(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=X.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function xOe(e,t,n,i,o){return function(r){let s=Zee(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var bOe=new d;function TOe(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&tte(i,d.fromArray(r.get(),0,bOe),e._offsetInstanceExtend[n]),l(o)&&(i=ce.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function COe(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}pr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:yOe(s,n,f),set:xOe(s,n,f,this,u)}}return TOe(this,c,n),COe(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};pr.prototype.isDestroyed=function(){return!1};pr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function Ev(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===Mr.COMPLETE||e._state===Mr.FAILED})}var Pn=pr;function AOe(e){e=y(e,y.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=y(e.normalize,!1),this.value=e.value}var Ic=AOe;var Sv=`#ifdef TEXTURE_COORDINATES
#ifdef SPHERICAL
in vec4 v_sphericalExtents;
#else // SPHERICAL
in vec2 v_inversePlaneExtents;
in vec4 v_westPlane;
in vec4 v_southPlane;
#endif // SPHERICAL
in vec3 v_uvMinAndSphericalLongitudeRotation;
in vec3 v_uMaxAndInverseDistance;
in vec3 v_vMaxAndInverseDistance;
#endif // TEXTURE_COORDINATES
#ifdef PER_INSTANCE_COLOR
in vec4 v_color;
#endif
#ifdef NORMAL_EC
vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) {
vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth);
return eyeCoordinate.xyz / eyeCoordinate.w;
}
vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) {
vec2 glFragCoordXY = gl_FragCoord.xy;
// Sample depths at both offset and negative offset
float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw));
float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw));
// Explicitly evaluate both paths
// Necessary for multifrustum and for edges of the screen
bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw);
float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y);
float useDownOrLeft = float(useUpOrRight == 0.0);
vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth);
vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth);
return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft;
}
#endif // NORMAL_EC
void main(void)
{
#ifdef REQUIRES_EC
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw));
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
#endif
#ifdef REQUIRES_WC
vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate;
vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w;
#endif
#ifdef TEXTURE_COORDINATES
vec2 uv;
#ifdef SPHERICAL
// Treat world coords as a sphere normal for spherical coordinates
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate);
sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z;
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w;
uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z;
#else // SPHERICAL
// Unpack planes and transform to eye space
uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x;
uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y;
#endif // SPHERICAL
#endif // TEXTURE_COORDINATES
#ifdef PICK
#ifdef CULL_FRAGMENTS
// When classifying translucent geometry, logDepthOrDepth == 0.0
// indicates a region that should not be classified, possibly due to there
// being opaque pixels there in another buffer.
// Check for logDepthOrDepth != 0.0 to make sure this should be classified.
if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) {
out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource
czm_writeDepthClamp();
}
#else // CULL_FRAGMENTS
out_FragColor.a = 1.0;
#endif // CULL_FRAGMENTS
#else // PICK
#ifdef CULL_FRAGMENTS
// When classifying translucent geometry, logDepthOrDepth == 0.0
// indicates a region that should not be classified, possibly due to there
// being opaque pixels there in another buffer.
if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) {
discard;
}
#endif
#ifdef NORMAL_EC
// Compute normal by sampling adjacent pixels in 2x2 block in screen space
vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0));
vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0));
vec3 normalEC = normalize(cross(leftRight, downUp));
#endif
#ifdef PER_INSTANCE_COLOR
vec4 color = czm_gammaCorrect(v_color);
#ifdef FLAT
out_FragColor = color;
#else // FLAT
czm_materialInput materialInput;
materialInput.normalEC = normalEC;
materialInput.positionToEyeEC = -eyeCoordinate.xyz;
czm_material material = czm_getDefaultMaterial(materialInput);
material.diffuse = color.rgb;
material.alpha = color.a;
out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC);
#endif // FLAT
// Premultiply alpha. Required for classification primitives on translucent globe.
out_FragColor.rgb *= out_FragColor.a;
#else // PER_INSTANCE_COLOR
// Material support.
// USES_ is distinct from REQUIRES_, because some things are dependencies of each other or
// dependencies for culling but might not actually be used by the material.
czm_materialInput materialInput;
#ifdef USES_NORMAL_EC
materialInput.normalEC = normalEC;
#endif
#ifdef USES_POSITION_TO_EYE_EC
materialInput.positionToEyeEC = -eyeCoordinate.xyz;
#endif
#ifdef USES_TANGENT_TO_EYE
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC);
#endif
#ifdef USES_ST
// Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired
// texture coordinate system, which typically forms a tight oriented bounding box around the geometry.
// Shader is provided a set of reference points for remapping.
materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z;
materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z;
#endif
czm_material material = czm_getMaterial(materialInput);
#ifdef FLAT
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#else // FLAT
out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC);
#endif // FLAT
// Premultiply alpha. Required for classification primitives on translucent globe.
out_FragColor.rgb *= out_FragColor.a;
#endif // PER_INSTANCE_COLOR
czm_writeDepthClamp();
#endif // PICK
}
`;function nf(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new B6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new B6;if(o.requiresTextureCoordinates=e,n instanceof ln)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource}
${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}nf.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof ln&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof ln||(o=t.material.shaderSource),new Ue({defines:i,sources:[o,Sv]})};nf.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new Ue({defines:n,sources:[Sv],pickColorQualifier:"in"})};nf.prototype.createVertexShader=function(e,t,n,i){return lte(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};nf.prototype.createPickVertexShader=function(e,t,n,i){return lte(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var nte=new d,ite=new fe,ote={high:0,low:0};function lte(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=ite;u.longitude=P.PI,u.latitude=0,u.height=0;let f=s.project(u,nte),h=Wn.encode(f.x,ote);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let p=ite;p.longitude=-P.PI,p.latitude=0,p.height=0;let g=s.project(p,nte);h=Wn.encode(g.x,ote),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof ln&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new Ue({defines:c,sources:[o]})}function B6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(B6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function rte(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/U.distance(t,e)}var EOe=[new U,new U,new U,new U];function ute(e,t){let n=EOe,i=U.unpack(t,0,n[0]),o=U.unpack(t,2,n[1]),r=U.unpack(t,4,n[2]);e.uMaxVmax=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/rte(i,o,r),a=1/rte(i,r,o);e.uvMinAndExtents=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var fte=new fe,dte=new d,SOe=new d,vOe=new d,UL={high:0,low:0};function hte(e,t,n){let i=fte;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,dte);i.latitude=e.north;let r=t.project(i,SOe);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,vOe),a=[0,0,0,0],c=[0,0,0,0],u=Wn.encode(o.x,UL);a[0]=u.high,c[0]=u.low,u=Wn.encode(o.y,UL),a[1]=u.high,c[1]=u.low,u=Wn.encode(r.y,UL),a[2]=u.high,c[2]=u.low,u=Wn.encode(s.x,UL),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var wOe=new F,DOe=new F,ste=new d,IOe=new fe,POe=[new fe,new fe,new fe,new fe,new fe,new fe,new fe,new fe];function OOe(e,t,n,i,o,r){let s=ae.center(e,IOe);s.height=n;let a=fe.toCartesian(s,t,ste),c=Mt.eastNorthUpToFixedFrame(a,t,wOe),u=F.inverse(c,DOe),f=e.west,h=e.east,p=e.north,g=e.south,m=POe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=p,m[1].longitude=f,m[2].latitude=p,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let x=(f+h)*.5,b=(p+g)*.5;m[4].latitude=g,m[4].longitude=x,m[5].latitude=p,m[5].longitude=x,m[6].latitude=b,m[6].longitude=f,m[7].latitude=b,m[7].longitude=h;let T=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,A=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(let O=0;O<8;O++){m[O].height=n;let M=fe.toCartesian(m[O],t,ste);F.multiplyByPoint(u,M,M),M.z=0,T=Math.min(T,M.x),C=Math.max(C,M.x),A=Math.min(A,M.y),E=Math.max(E,M.y)}let v=i;v.x=T,v.y=A,v.z=0,F.multiplyByPoint(c,v,v);let D=o;D.x=C,D.y=A,D.z=0,F.multiplyByPoint(c,D,D),d.subtract(D,v,o);let R=r;R.x=T,R.y=E,R.z=0,F.multiplyByPoint(c,R,R),d.subtract(R,v,r)}var ROe=new d,MOe=new d,LOe=new Wn;nf.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=dte,s=ROe,a=MOe;OOe(e,n,y(o,0),r,s,a);let c={};ute(c,t);let u=Wn.fromCartesian(r,LOe);return c.southWest_HIGH=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),hte(e,i,c),c};var NOe=new d;function ate(e,t,n,i){let o=fte;o.latitude=e,o.longitude=t,o.height=0;let r=fe.toCartesian(o,n,NOe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=P.fastApproximateAtan2(s,r.z),c=P.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var cte=new U;nf.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=ate(e.south,e.west,n,cte),r=o.x,s=o.y,a=ate(e.north,e.east,n,cte),c=a.x,u=a.y,f=0;s>u&&(f=P.PI-s,s=-P.PI,u+=f),r-=P.EPSILON5,s-=P.EPSILON5,c+=P.EPSILON5,u+=P.EPSILON5;let h=1/(u-s),p=1/(c-r),g={sphericalExtents:new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,p,h]}),longitudeRotation:new Ic({componentDatatype:X.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return ute(g,t),hte(e,i,g),g};nf.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};nf.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function FOe(e){return Math.max(e.width,e.height)>nf.MAX_WIDTH_FOR_PLANAR_EXTENTS}nf.shouldUseSphericalCoordinates=function(e){return FOe(e)};nf.MAX_WIDTH_FOR_PLANAR_EXTENTS=P.toRadians(1);var of=nf;var BOe={NEVER:te.NEVER,LESS:te.LESS,EQUAL:te.EQUAL,LESS_OR_EQUAL:te.LEQUAL,GREATER:te.GREATER,NOT_EQUAL:te.NOTEQUAL,GREATER_OR_EQUAL:te.GEQUAL,ALWAYS:te.ALWAYS},Hn=Object.freeze(BOe);var kOe={ZERO:te.ZERO,KEEP:te.KEEP,REPLACE:te.REPLACE,INCREMENT:te.INCR,DECREMENT:te.DECR,INVERT:te.INVERT,INCREMENT_WRAP:te.INCR_WRAP,DECREMENT_WRAP:te.DECR_WRAP},mt=Object.freeze(kOe);var zL={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};zL.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Hn.ALWAYS,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.REPLACE},backFunction:Hn.ALWAYS,backOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.REPLACE},reference:zL.CESIUM_3D_TILE_MASK,mask:zL.CESIUM_3D_TILE_MASK}};var Ut=Object.freeze(zL);function Q0(e){e=y(e,y.EMPTY_OBJECT);let t=e.geometryInstances;this.geometryInstances=t,this.show=y(e.show,!0),this.classificationType=y(e.classificationType,zn.BOTH),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.debugShowShadowVolume=y(e.debugShowShadowVolume,!1),this._debugShowShadowVolume=!1,this._extruded=y(e._extruded,!1),this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:y(e.vertexCacheOptimize,!1),interleave:y(e.interleave,!1),releaseGeometryInstances:y(e.releaseGeometryInstances,!0),allowPicking:y(e.allowPicking,!0),asynchronous:y(e.asynchronous,!0),compressVertices:y(e.compressVertices,!0),_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(Q0.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});Q0.isSupported=function(e){return e.context.stencilBuffer};function XT(e,t){let n=t?Hn.EQUAL:Hn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:mt.KEEP,zFail:mt.DECREMENT_WRAP,zPass:mt.KEEP},backFunction:n,backOperation:{fail:mt.KEEP,zFail:mt.INCREMENT_WRAP,zPass:mt.KEEP},reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Dc.LESS_OR_EQUAL},depthMask:!1}}function V6(e){return{stencilTest:{enabled:e,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:fn.PRE_MULTIPLIED_ALPHA_BLEND}}var VOe={stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function UOe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ve.fromCache(XT(o,!1)),e._rsStencilDepthPass3DTiles=Ve.fromCache(XT(o,!0)),e._rsColorPass=Ve.fromCache(V6(o,!1)),e._rsPickPass=Ve.fromCache(VOe)}function zOe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection;
`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0);
`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=Ue.replaceMain(s,"czm_non_compressed_main");let a=`void main()
{
${r} czm_non_compressed_main();
}`;return[i,o,s,a].join(`
`)}}function HOe(e,t){let n=t.context,i=e._primitive,o=FL;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=Pn._appendDistanceDisplayConditionToShader(i,o),o=Pn._modifyShaderPosition(e,o,t.scene3DOnly),o=Pn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=zOe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new Ue({defines:[a],sources:[o]}),u=new Ue({sources:[Z0]}),f=e._primitive._attributeLocations,h=new of(s,r,e.appearance);if(e._spStencil=Jt.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=Ue.createPickVertexShaderSource(o);m=Pn._appendShowToShader(i,m),m=Pn._updatePickColorAttribute(m);let x=h.createPickFragmentShader(!1),b=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=Jt.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:b,fragmentShaderSource:x,attributeLocations:f}),s){let T=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(T)){let C=h.createPickFragmentShader(!0),A=h.createPickVertexShader([a],m,!0,t.mapProjection);T=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:A,fragmentShaderSource:C,attributeLocations:f})}e._spPick2D=T}}else e._spPick=Jt.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=Pn._appendShowToShader(i,o),c=new Ue({defines:[a],sources:[o]}),e._sp=Jt.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let p=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=Jt.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:p,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let x=h.createFragmentShader(!0),b=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:b,fragmentShaderSource:x,attributeLocations:f})}e._spColor2D=m}}function GOe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new Qe({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=ve.TERRAIN_CLASSIFICATION,s=Qe.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new Qe({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=ve.TERRAIN_CLASSIFICATION;let x=e.appearance.material;if(l(x)&&(c=At(c,x._uniforms)),r.uniformMap=c,s=Qe.shallowClone(r,r.derivedCommands.tileset),s.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let b=Qe.shallowClone(r,r.derivedCommands.appearance2D);b.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=b,b=Qe.shallowClone(s,s.derivedCommands.appearance2D),b.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=b}}let f=e._commandsIgnoreShow,h=e._spStencil,p=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=Qe.shallowClone(t[p],f[g]);m.shaderProgram=h,m.pass=ve.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,p+=2}}function WOe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,p=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new Qe({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=p,u.pass=ve.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=Qe.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new Qe({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=p,u.pass=ve.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=Qe.shallowClone(u,u.derivedCommands.tileset),f.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let x=Qe.shallowClone(u,u.derivedCommands.pick2D);x.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=x,x=Qe.shallowClone(f,f.derivedCommands.pick2D),x.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=x}}}function jOe(e,t,n,i,o,r,s){GOe(e,r),WOe(e,s)}function mte(e,t){return Math.floor(e%t/2)}function k6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function pte(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function qOe(e,t,n,i,o,r,s,a){let c=e._primitive;Pn._updateBoundingVolumes(c,t,o);let u;t.mode===ne.SCENE3D?u=c._boundingSphereWC:t.mode===ne.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ne.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==zn.CESIUM_3D_TILE,p=f!==zn.TERRAIN,g=t.passes,m,x,b;if(g.render){let T=n.length;for(m=0;m<T;++m)x=u[mte(m,T)],h&&(b=n[m],k6(b,t,o,r,x,s)),p&&(b=n[m].derivedCommands.tileset,k6(b,t,o,r,x,s));if(t.invertClassification){let C=e._commandsIgnoreShow,A=C.length;for(m=0;m<A;++m)x=u[m],b=C[m],k6(b,t,o,r,x,s)}}if(g.pick){let T=i.length,C=c._pickOffsets;for(m=0;m<T;++m){let A=C[mte(m,T)];x=u[A.index],h&&(b=i[m],pte(b,t,o,r,x)),p&&(b=i[m].derivedCommands.tileset,pte(b,t,o,r,x))}}}Q0.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,p=!1,g=!1;for(r>0&&(c=o[0].attributes,p=of.hasAttributesForSphericalExtents(c),g=of.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let x=a.attributes.color;l(x)&&(u=!0),f=f&&l(x)&&Wt.equals(h,x)}if(!f&&!p&&!g)throw new de("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new ln({flat:!0}),this.appearance=t),this._usePickOffsets=!p&&!g,this._hasSphericalExtentsAttribute=p,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Dt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:y(this._pickPrimitive,n)});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(x,b){n._createBoundingVolumeFunction(x,b)}),i._createRenderStatesFunction=function(x,b,T,C){UOe(n,b)},i._createShaderProgramFunction=function(x,b,T){HOe(n,b)},i._createCommandsFunction=function(x,b,T,C,A,E,v){jOe(n,void 0,void 0,!0,!1,E,v)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(x,b,T,C,A,E,v,D){n._updateAndQueueCommandsFunction(x,b,T,C,A,E,v,D)}:i._updateAndQueueCommandsFunction=function(x,b,T,C,A,E,v,D){qOe(n,b,T,C,A,E,v,D)},this._primitive=new Pn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ve.fromCache(XT(!1,!1)),this._rsStencilDepthPass3DTiles=Ve.fromCache(XT(!1,!0)),this._rsColorPass=Ve.fromCache(V6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ve.fromCache(XT(!0,!1)),this._rsStencilDepthPass3DTiles=Ve.fromCache(XT(!0,!0)),this._rsColorPass=Ve.fromCache(V6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Q0.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};Q0.prototype.isDestroyed=function(){return!1};Q0.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var vv=Q0;var YOe={u_globeMinimumAltitude:function(){return 55e3}};function ml(e){e=y(e,y.EMPTY_OBJECT);let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new ln({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=y(e.show,!0),this.classificationType=y(e.classificationType,zn.BOTH),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.debugShowShadowVolume=y(e.debugShowShadowVolume,!1),this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=di._defaultMaxTerrainHeight,this._minTerrainHeight=di._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:y(e.vertexCacheOptimize,!1),interleave:y(e.interleave,!1),releaseGeometryInstances:y(e.releaseGeometryInstances,!0),allowPicking:y(e.allowPicking,!0),asynchronous:y(e.asynchronous,!0),compressVertices:y(e.compressVertices,!0),_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:YOe}}Object.defineProperties(ml.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});ml.isSupported=vv.isSupported;function _te(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function gte(e){return function(t,n){return e._minHeight}}var XOe=new d,KOe=new d,$Oe=new d,ZOe=new fe,QOe=new ae;function HL(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let p=d.unpack(i,h,XOe),g=d.unpack(o,h,KOe),m=d.add(p,g,$Oe),x=n.cartesianToCartographic(m,ZOe),b=x.latitude,T=x.longitude;s=Math.min(s,b),a=Math.min(a,T),c=Math.max(c,b),u=Math.max(u,T)}let f=QOe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function JOe(e,t,n){let i=di.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function eRe(e,t,n){let i=t.mapProjection.ellipsoid,o=HL(t,n),r=Dn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=ce.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function U6(e,t){return Math.floor(e%t/2)}function z6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ne.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function yte(e,t,n,i,o,r){let s=e._primitive;n.mode!==ne.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function tRe(e,t,n,i,o,r,s,a){let c;t.mode===ne.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==zn.CESIUM_3D_TILE,h=u!==zn.TERRAIN,p=t.passes,g=e._primitive,m,x,b;if(p.render){let T=n.length;for(m=0;m<T;++m)x=c[U6(m,T)],f&&(b=n[m],z6(e,b,t,o,r,x,s)),h&&(b=n[m].derivedCommands.tileset,z6(e,b,t,o,r,x,s));if(t.invertClassification){let C=g._commandsIgnoreShow,A=C.length;for(m=0;m<A;++m)x=c[m],b=C[m],z6(e,b,t,o,r,x,s)}}if(p.pick){let T=i.length,C;for(e._useFragmentCulling||(C=g._primitive._pickOffsets),m=0;m<T;++m){if(x=c[U6(m,T)],!e._useFragmentCulling){let A=C[U6(m,T)];x=c[A.index]}f&&(b=i[m],yte(e,b,t,o,r,x)),h&&(b=i[m].derivedCommands.tileset,yte(e,b,t,o,r,x))}}}ml.initializeTerrainHeights=function(){return di.initialize()};ml.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!di.initialized){ml.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let x=HL(e,r);l(h)?l(x)&&ae.union(h,x,h):h=ae.clone(x);let b=o.id;if(l(b)&&l(x)){let T=di.getBoundingSphere(x,i);this._boundingSpheresKeys.push(b),this._boundingSpheres.push(T)}s=r.constructor,!l(s)||l(s.createShadowVolume)}JOe(this,h,i);let p=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Rr.getHeight(this._minTerrainHeight,p,g),this._maxHeight=Rr.getHeight(this._maxTerrainHeight,p,g);let m=ml._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let x,b=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=HL(e,r),of.shouldUseSphericalCoordinates(h)){b=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let T=HL(e,r),C=r.textureCoordinateRotationPoints;b?x=of.getPlanarTextureCoordinateAttributes(T,C,i,e.mapProjection,this._maxHeight):x=of.getSphericalExtentGeometryInstanceAttributes(T,C,i,e.mapProjection);let A=o.attributes;for(let E in A)A.hasOwnProperty(E)&&(x[E]=A[E]);u[f]=new Dt({geometry:s.createShadowVolume(r,gte(this),_te(this)),attributes:x,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Dt({geometry:s.createShadowVolume(r,gte(this),_te(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(x,b){eRe(t,x,b)},n._updateAndQueueCommandsFunction=function(x,b,T,C,A,E,v,D){tRe(t,b,T,C,A,E,v,D)},this._primitive=new vv(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};ml.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};ml.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};ml.prototype.isDestroyed=function(){return!1};ml.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};ml._supportsMaterials=function(e){return e.depthTexture};ml.supportsMaterials=function(e){return ml._supportsMaterials(e.frameState.context)};var pl=ml;function KT(){de.throwInstantiationError()}Object.defineProperties(KT.prototype,{isConstant:{get:de.throwInstantiationError},definitionChanged:{get:de.throwInstantiationError}});KT.prototype.getType=de.throwInstantiationError;KT.prototype.getValue=de.throwInstantiationError;KT.prototype.equals=de.throwInstantiationError;var nRe=new $;KT.getValue=function(e,t,n){let i;return l(e)||(e=$.now(nRe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=Zi.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==Zi.ColorType)&&(n=Zi.fromType(Zi.ColorType)),z.clone(z.WHITE,n.uniforms.color),n)};var sr=KT;function J0(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}J0.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!Y.getValueOrDefault(t.show,n,!0)};J0.prototype._setOptions=de.throwInstantiationError;J0.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof zt,h,p=t._getIsClosed(c);if(f)h=new ln({closed:p,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=sr.getValue(e,u,this._material);this._material=g,h=new uo({material:g,translucent:g.isTranslucent(),closed:p})}if(n)c.vertexFormat=ln.VERTEX_FORMAT,this._primitive=o.add(new pl({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),Y.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new Pn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=Y.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new Pn({geometryInstances:u,appearance:new ln({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};J0.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ce.clone(o.boundingSphere,e),ct.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ce.clone(o.boundingSphere,e),ct.DONE):l(n)&&!n.ready||l(i)&&!i.ready?ct.PENDING:ct.FAILED};J0.prototype.isDestroyed=function(){return!1};J0.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var ri=J0;var xte={};function wv(e,t){l(xte[e])||(xte[e]=!0,console.warn(y(t,e)))}wv.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";wv.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";wv.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";wv.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var Ct=wv;var iRe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},eg=Object.freeze(iRe);var oRe={NONE:0,GEODESIC:1,RHUMB:2},en=Object.freeze(oRe);var bte=P.EPSILON10;function rRe(e,t,n,i){if(!l(e))return;n=y(n,!1);let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,bte)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],bte)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var To=rRe;function sRe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,p=h*h,g=1-p,m=Math.sqrt(g),x=t/4,b=x*x,T=b*x,C=b*b,A=1+x-3*b/4+5*T/4-175*C/64,E=1-x+15*b/8-35*T/8,v=1-3*x+35*b/4,D=1-5*x,R=A*f-E*Math.sin(2*f)*x/2-v*Math.sin(4*f)*b/16-D*Math.sin(6*f)*T/48-Math.sin(8*f)*5*C/512,O=e._constants;O.a=n,O.b=i,O.f=o,O.cosineHeading=r,O.sineHeading=s,O.tanU=a,O.cosineU=c,O.sineU=u,O.sigma=f,O.sineAlpha=h,O.sineSquaredAlpha=p,O.cosineSquaredAlpha=g,O.cosineAlpha=m,O.u2Over4=x,O.u4Over16=b,O.u6Over64=T,O.u8Over256=C,O.a0=A,O.a1=E,O.a2=v,O.a3=D,O.distanceRatio=R}function aRe(e,t){return e*t*(4+e*(4-3*t))/16}function Tte(e,t,n,i,o,r,s){let a=aRe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function cRe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),p=Math.sin(u),g=Math.cos(f),m=Math.sin(f),x=h*g,b=h*m,T=p*m,C=p*g,A=c,E=P.TWO_PI,v=Math.cos(A),D=Math.sin(A),R,O,M,N,_;do{v=Math.cos(A),D=Math.sin(A);let k=b-C*v;M=Math.sqrt(g*g*D*D+k*k),O=T+x*v,R=Math.atan2(M,O);let W;M===0?(W=0,N=1):(W=x*D/M,N=1-W*W),E=A,_=O-2*T/N,isFinite(_)||(_=0),A=c+Tte(a,W,N,R,M,O,_)}while(Math.abs(A-E)>P.EPSILON12);let S=N*(t*t-n*n)/(n*n),w=1+S*(4096+S*(S*(320-175*S)-768))/16384,I=S*(256+S*(S*(74-47*S)-128))/1024,L=_*_,B=I*M*(_+I*(O*(2*L-1)-I*_*(4*M*M-3)*(4*L-3)/6)/4),H=n*w*(R-B),V=Math.atan2(g*D,b-C*v),G=Math.atan2(h*D,b*v-C);e._distance=H,e._startHeading=V,e._endHeading=G,e._uSquared=S}var lRe=new d,H6=new d;function Cte(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,H6),lRe),r=d.normalize(i.cartographicToCartesian(n,H6),H6);cRe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=fe.clone(t,e._start),e._end=fe.clone(n,e._end),e._start.height=0,e._end.height=0,sRe(e)}function Dv(e,t,n){let i=y(n,ee.default);this._ellipsoid=i,this._start=new fe,this._end=new fe,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Cte(this,e,t,i)}Object.defineProperties(Dv.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});Dv.prototype.setEndPoints=function(e,t){Cte(this,e,t,this._ellipsoid)};Dv.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};Dv.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,p=i*h,g=n.u8Over256,m=n.u2Over4,x=n.u6Over64,b=n.u4Over16,T=2*p*g*o/3+i*(1-m+7*b/4-15*x/4+579*g/64-(b-15*x/4+187*g/16)*o-(5*x/4-115*g/16)*r-29*g*s/16)+(m/2-b+71*x/32-85*g/16)*a+(5*b/16-5*x/4+383*g/96)*c-h*((x-11*g/2)*a+5*g*c/2)+(29*x/96-29*g/16)*u+539*g*f/1536,C=Math.asin(Math.sin(T)*n.cosineAlpha),A=Math.atan(n.a/n.b*Math.tan(C));T=T-n.sigma;let E=Math.cos(2*n.sigma+T),v=Math.sin(T),D=Math.cos(T),R=n.cosineU*D,O=n.sineU*v,N=Math.atan2(v*n.sineHeading,R-O*n.cosineHeading)-Tte(n.f,n.sineAlpha,n.cosineSquaredAlpha,T,v,D,E);return l(t)?(t.longitude=this._start.longitude+N,t.latitude=A,t.height=0,t):new fe(this._start.longitude+N,A,0)};var tg=Dv;function W6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),p=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),x=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*p+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*x)}function uRe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,p=h*c,g=p*c,m=Math.sin(2*i),x=Math.cos(2*i),b=Math.sin(4*i),T=Math.cos(4*i),C=Math.sin(6*i),A=Math.cos(6*i),E=Math.sin(8*i),v=Math.cos(8*i),D=Math.sin(10*i),R=Math.cos(10*i),O=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*p/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*p/16384+i*(399985-90560*o+512*s)*g/5242880)*x+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*p/16384-i*(33152*o-112599)*g/1048576)*T+(151*i*h/4096+4681*i*p/65536+1479*i*g/16384-453*r*g/32768)*A+(1097*i*p/65536+42783*i*g/1048576)*v+8011*i*g/1048576*R+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*p/524288-33*o*p/512+s*p/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*p/4096-315*o*p/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*b+(151*f/6144+151*h/4096+5019*p/131072-453*o*p/16384+26965*g/786432-8607*o*g/131072)*C+(1097*h/131072+1097*p/65536+225797*g/10485760-1097*o*g/65536)*E+(8011*p/2621440+8011*g/1048576)*D+293393*g/251658240*O}function $T(e,t){if(e===0)return Math.log(Math.tan(.5*(P.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(P.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function fRe(e,t,n,i,o){let r=$T(e._ellipticity,n),s=$T(e._ellipticity,o);return Math.atan2(P.negativePiToPi(i-t),s-r)}function dRe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(P.equalsEpsilon(Math.abs(a),P.PI_OVER_TWO,P.EPSILON8))if(t===n)u=t*Math.cos(o)*P.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*P.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=W6(e._ellipticity,t,o);u=(W6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var hRe=new d,G6=new d;function Ate(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,G6),hRe),r=d.normalize(i.cartographicToCartesian(n,G6),G6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=fe.clone(t,e._start),e._start.height=0,e._end=fe.clone(n,e._end),e._end.height=0,e._heading=fRe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=dRe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function Ete(e,t,n,i,o,r){if(n===0)return fe.clone(e,r);let s=o*o,a,c,u;if(Math.abs(P.PI_OVER_TWO-Math.abs(t))>P.EPSILON8){let f=W6(o,i,e.latitude),h=n*Math.cos(t),p=f+h;if(c=uRe(p,o,i),Math.abs(t)<P.EPSILON10)a=P.negativePiToPi(e.longitude);else{let g=$T(o,e.latitude),m=$T(o,c);u=Math.tan(t)*(m-g),a=P.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=P.negativePiToPi(e.longitude+u):a=P.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new fe(a,c,0)}function Cp(e,t,n){let i=y(n,ee.default);this._ellipsoid=i,this._start=new fe,this._end=new fe,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Ate(this,e,t,i)}Object.defineProperties(Cp.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});Cp.fromStartHeadingDistance=function(e,t,n,i,o){let r=y(i,ee.default),s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=P.negativePiToPi(t);let h=Ete(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new Cp(e,h,r):(o.setEndPoints(e,h),o)};Cp.prototype.setEndPoints=function(e,t){Ate(this,e,t,this._ellipsoid)};Cp.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};Cp.prototype.interpolateUsingSurfaceDistance=function(e,t){return Ete(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};Cp.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=P.negativePiToPi(e),P.equalsEpsilon(Math.abs(e),Math.PI,P.EPSILON14)&&(e=P.sign(r.longitude)*Math.PI),l(t)||(t=new fe),Math.abs(P.PI_OVER_TWO-o)<=P.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(P.equalsEpsilon(Math.abs(P.PI_OVER_TWO-o),P.PI_OVER_TWO,P.EPSILON8))return P.equalsEpsilon(e,r.longitude,P.EPSILON12)?void 0:(t.longitude=e,t.latitude=P.PI_OVER_TWO*P.sign(P.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(P.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let p=n*Math.sin(h),g=(1+p)/(1-p);f=2*Math.atan(c*Math.pow(g/u,n/2))-P.PI_OVER_TWO}while(!P.equalsEpsilon(f,h,P.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};Cp.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(P.equalsEpsilon(Math.abs(i),P.PI_OVER_TWO,P.EPSILON8))return;let r=$T(n,o.latitude),s=$T(n,e),a=Math.tan(i)*(s-r),c=P.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new fe(c,e,0)};var $a=Cp;var Q6=[Ri,Ni],mRe=Q6.length,Wte=Math.cos(P.toRadians(30)),Ste=Math.cos(P.toRadians(150)),jte=0,qte=1e3;function ig(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions;this.width=y(e.width,1),this._positions=t,this.granularity=y(e.granularity,9999),this.loop=y(e.loop,!1),this.arcType=y(e.arcType,en.GEODESIC),this._ellipsoid=ee.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(ig.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+ee.packedLength+1+1}}});ig.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<mRe;i++)if(t instanceof Q6[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var pRe=new d,vte=new d,wte=new d;function Z6(e,t,n,i,o){let r=Pc(i,e,0,pRe),s=Pc(i,e,n,vte),a=Pc(i,t,0,wte),c=Ap(s,r,vte),u=Ap(a,r,wte);return d.cross(u,c,o),d.normalize(o,o)}var _Re=new fe,gRe=new d,yRe=new d,xRe=new d;function j6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===en.GEODESIC?h=new tg(e,t,s):r===en.RHUMB&&(h=new $a(e,t,s));let p=h.surfaceDistance;if(p<o)return;let g=Z6(e,t,i,s,xRe),m=Math.ceil(p/o),x=p/m,b=x,T=m-1,C=a.length;for(let A=0;A<T;A++){let E=h.interpolateUsingSurfaceDistance(b,_Re),v=Pc(s,E,n,gRe),D=Pc(s,E,i,yRe);d.pack(g,a,C),d.pack(v,c,C),d.pack(D,u,C),f.push(E.latitude),f.push(E.longitude),C+=3,b+=x}}var q6=new fe;function Pc(e,t,n,i){return fe.clone(t,q6),q6.height=n,fe.toCartesian(q6,e,i)}ig.pack=function(e,t,n){let i=y(n,0),o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,ee.pack(e._ellipsoid,t,i),i+=ee.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};ig.unpack=function(e,t,n){let i=y(t,0),o=e[i++],r=new Array(o);for(let p=0;p<o;p++)r[p]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=ee.unpack(e,i);i+=ee.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new ig({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function Ap(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function Dte(e,t,n,i){return i=Ap(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var bRe=new d,TRe=new d,CRe=new d,Yte=new d,ARe=0,ERe=-1;function Y6(e,t,n,i,o){let r=Ap(n,t,Yte),s=Dte(e,t,r,bRe),a=Dte(i,t,r,TRe);if(P.equalsEpsilon(d.dot(s,a),ERe,P.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,CRe);return d.dot(a,c)<ARe&&(o=d.negate(o,o)),o}var qL=sn.fromPointNormal(d.ZERO,d.UNIT_Y),SRe=new d,vRe=new d,wRe=new d,DRe=new d,IRe=new d,GL=new d,WL=new fe,Ite=new fe,Pte=new fe;ig.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new Q6[e._projectionIndex](i),a=jte,c=qte,u,f,h=e._positions,p=h.length;p===2&&(n=!1);let g,m,x,b,T=new $a(void 0,void 0,i),C,A,E,v=[h[0]];for(f=0;f<p-1;f++)g=h[f],m=h[f+1],C=ti.lineSegmentPlane(g,m,qL,GL),l(C)&&!d.equalsEpsilon(C,g,P.EPSILON7)&&!d.equalsEpsilon(C,m,P.EPSILON7)&&(e.arcType===en.GEODESIC?v.push(d.clone(C)):e.arcType===en.RHUMB&&(E=i.cartesianToCartographic(C,WL).longitude,x=i.cartesianToCartographic(g,WL),b=i.cartesianToCartographic(m,Ite),T.setEndPoints(x,b),A=T.findIntersectionWithLongitude(E,Pte),C=i.cartographicToCartesian(A,GL),l(C)&&!d.equalsEpsilon(C,g,P.EPSILON7)&&!d.equalsEpsilon(C,m,P.EPSILON7)&&v.push(d.clone(C)))),v.push(m);n&&(g=h[p-1],m=h[0],C=ti.lineSegmentPlane(g,m,qL,GL),l(C)&&!d.equalsEpsilon(C,g,P.EPSILON7)&&!d.equalsEpsilon(C,m,P.EPSILON7)&&(e.arcType===en.GEODESIC?v.push(d.clone(C)):e.arcType===en.RHUMB&&(E=i.cartesianToCartographic(C,WL).longitude,x=i.cartesianToCartographic(g,WL),b=i.cartesianToCartographic(m,Ite),T.setEndPoints(x,b),A=T.findIntersectionWithLongitude(E,Pte),C=i.cartographicToCartesian(A,GL),l(C)&&!d.equalsEpsilon(C,g,P.EPSILON7)&&!d.equalsEpsilon(C,m,P.EPSILON7)&&v.push(d.clone(C)))));let D=v.length,R=new Array(D);for(f=0;f<D;f++){let q=fe.fromCartesian(v[f],i);q.height=0,R[f]=q}if(R=To(R,fe.equalsEpsilon),D=R.length,D<2)return;let O=[],M=[],N=[],_=[],S=SRe,w=vRe,I=wRe,L=DRe,B=IRe,H=R[0],V=R[1],G=R[D-1];for(S=Pc(i,G,a,S),L=Pc(i,V,a,L),w=Pc(i,H,a,w),I=Pc(i,H,c,I),n?B=Y6(S,w,I,L,B):B=Z6(H,V,c,i,B),d.pack(B,M,0),d.pack(w,N,0),d.pack(I,_,0),O.push(H.latitude),O.push(H.longitude),j6(H,V,a,c,o,r,i,M,N,_,O),f=1;f<D-1;++f){S=d.clone(w,S),w=d.clone(L,w);let q=R[f];Pc(i,q,c,I),Pc(i,R[f+1],a,L),Y6(S,w,I,L,B),u=M.length,d.pack(B,M,u),d.pack(w,N,u),d.pack(I,_,u),O.push(q.latitude),O.push(q.longitude),j6(R[f],R[f+1],a,c,o,r,i,M,N,_,O)}let k=R[D-1],W=R[D-2];if(w=Pc(i,k,a,w),I=Pc(i,k,c,I),n){let q=R[0];S=Pc(i,W,a,S),L=Pc(i,q,a,L),B=Y6(S,w,I,L,B)}else B=Z6(W,k,c,i,B);if(u=M.length,d.pack(B,M,u),d.pack(w,N,u),d.pack(I,_,u),O.push(k.latitude),O.push(k.longitude),n){for(j6(k,H,a,c,o,r,i,M,N,_,O),u=M.length,f=0;f<3;++f)M[u+f]=M[f],N[u+f]=N[f],_[u+f]=_[f];O.push(H.latitude),O.push(H.longitude)}return tMe(n,s,N,_,M,O,t)};var PRe=new d,ORe=new Z,RRe=new Le;function Ote(e,t,n,i){let o=Ap(n,t,PRe),r=d.dot(o,e);if(r>Wte||r<Ste){let s=Ap(i,n,Yte),a=r<Ste?P.PI_OVER_TWO:-P.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,RRe),u=Z.fromQuaternion(c,ORe);return Z.multiplyByVector(u,e,e),!0}return!1}var Rte=new fe,MRe=new d,Mte=new d;function Iv(e,t,n,i,o){let r=fe.toCartesian(t,e._ellipsoid,MRe),s=d.add(r,n,Mte),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,Rte);Math.abs(t.longitude-u.longitude)>P.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Mte),u=c.cartesianToCartographic(s,Rte)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var LRe=new d,Lte=new d;function Nte(e,t,n,i,o,r){let s=d.subtract(t,e,LRe);d.normalize(s,s);let a=n-jte,c=d.multiplyByScalar(s,a,Lte);d.add(e,c,o);let u=i-qte;c=d.multiplyByScalar(s,u,Lte),d.add(t,c,r)}var NRe=new d;function jL(e,t){let n=sn.getPointDistance(qL,e),i=sn.getPointDistance(qL,t),o=NRe;P.equalsEpsilon(n,0,P.EPSILON2)?(o=Ap(t,e,o),d.multiplyByScalar(o,P.EPSILON2,o),d.add(e,o,e)):P.equalsEpsilon(i,0,P.EPSILON2)&&(o=Ap(e,t,o),d.multiplyByScalar(o,P.EPSILON2,o),d.add(t,o,t))}function FRe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(P.equalsEpsilon(n,P.PI,P.EPSILON11)){let o=P.sign(t.longitude);return e.longitude=o*(n-P.EPSILON11),1}else if(P.equalsEpsilon(i,P.PI,P.EPSILON11)){let o=P.sign(e.longitude);return t.longitude=o*(i-P.EPSILON11),2}return 0}var Xte=new fe,Kte=new fe,Fte=new d,X6=new d,Bte=new d,kte=new d,BRe=new d,Vte=new d,kRe=[Xte,Kte],VRe=new ae,URe=new d,zRe=new d,HRe=new d,GRe=new d,WRe=new d,jRe=new d,K6=new d,$6=new d,qRe=new d,YRe=new d,XRe=new d,Ute=new d,KRe=new d,$Re=new d,ZRe=new Wn,QRe=new Wn,zte=new d,JRe=new d,Hte=new d,eMe=[new ce,new ce],$te=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],Gte=$te.length;function tMe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,p=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),x=new Float64Array(h*3),b=new Float32Array(p),T=new Float32Array(p),C=new Float32Array(p),A=new Float32Array(p),E=new Float32Array(p),v,D,R,O;s&&(v=new Float32Array(p),D=new Float32Array(p),R=new Float32Array(p),O=new Float32Array(h*2));let M=r.length/2,N=0,_=Xte;_.height=0;let S=Kte;S.height=0;let w=Fte,I=X6;if(s)for(c=0,a=1;a<M;a++)_.latitude=r[c],_.longitude=r[c+1],S.latitude=r[c+2],S.longitude=r[c+3],w=t.project(_,w),I=t.project(S,I),N+=d.distance(w,I),c+=2;let L=i.length/3;I=d.unpack(i,0,I);let B=0;for(c=3,a=1;a<L;a++)w=d.clone(I,w),I=d.unpack(i,c,I),B+=d.distance(w,I),c+=3;let H;c=3;let V=0,G=0,k=0,W=0,q=!1,J=d.unpack(n,0,kte),j=d.unpack(i,0,X6),K=d.unpack(o,0,Vte);if(e){let De=d.unpack(n,n.length-6,Bte);Ote(K,De,J,j)&&(K=d.negate(K,K))}let Q=0,he=0,ye=0;for(a=0;a<f;a++){let De=d.clone(J,Bte),Me=d.clone(j,Fte),Re=d.clone(K,BRe);q&&(Re=d.negate(Re,Re)),J=d.unpack(n,c,kte),j=d.unpack(i,c,X6),K=d.unpack(o,c,Vte),q=Ote(K,De,J,j),_.latitude=r[V],_.longitude=r[V+1],S.latitude=r[V+2],S.longitude=r[V+3];let rt,Ye,dt,Xe;if(s){let Oi=FRe(_,S);rt=t.project(_,WRe),Ye=t.project(S,jRe);let Sa=Ap(Ye,rt,zte);Sa.y=Math.abs(Sa.y),dt=K6,Xe=$6,Oi===0||d.dot(Sa,d.UNIT_Y)>Wte?(dt=Iv(t,_,Re,rt,K6),Xe=Iv(t,S,K,Ye,$6)):Oi===1?(Xe=Iv(t,S,K,Ye,$6),dt.x=0,dt.y=P.sign(_.longitude-Math.abs(S.longitude)),dt.z=0):(dt=Iv(t,_,Re,rt,K6),Xe.x=0,Xe.y=P.sign(_.longitude-S.longitude),Xe.z=0)}let _t=d.distance(Me,j),ft=Wn.fromCartesian(De,ZRe),ht=d.subtract(J,De,qRe),vn=d.normalize(ht,Ute),tn=d.subtract(Me,De,YRe);tn=d.normalize(tn,tn);let Te=d.cross(vn,tn,Ute);Te=d.normalize(Te,Te);let Ae=d.cross(tn,Re,KRe);Ae=d.normalize(Ae,Ae);let Mn=d.subtract(j,J,XRe);Mn=d.normalize(Mn,Mn);let Ro=d.cross(K,Mn,$Re);Ro=d.normalize(Ro,Ro);let Wo=_t/B,Sr=Q/B,ea=0,ys,ta,Fe,st=0,tt=0;if(s){ea=d.distance(rt,Ye),ys=Wn.fromCartesian(rt,QRe),ta=d.subtract(Ye,rt,zte),Fe=d.normalize(ta,JRe);let Oi=Fe.x;Fe.x=Fe.y,Fe.y=-Oi,st=ea/N,tt=he/N}for(H=0;H<8;H++){let Oi=W+H*4,Sa=G+H*2,un=Oi+3,Ln=H<4?1:-1,Hi=H===2||H===3||H===6||H===7?1:-1;d.pack(ft.high,b,Oi),b[un]=ht.x,d.pack(ft.low,T,Oi),T[un]=ht.y,d.pack(Ae,C,Oi),C[un]=ht.z,d.pack(Ro,A,Oi),A[un]=Wo*Ln,d.pack(Te,E,Oi);let We=Sr*Hi;We===0&&Hi<0&&(We=9),E[un]=We,s&&(v[Oi]=ys.high.x,v[Oi+1]=ys.high.y,v[Oi+2]=ys.low.x,v[Oi+3]=ys.low.y,R[Oi]=-dt.y,R[Oi+1]=dt.x,R[Oi+2]=Xe.y,R[Oi+3]=-Xe.x,D[Oi]=ta.x,D[Oi+1]=ta.y,D[Oi+2]=Fe.x,D[Oi+3]=Fe.y,O[Sa]=st*Ln,We=tt*Hi,We===0&&Hi<0&&(We=9),O[Sa+1]=We)}let $e=HRe,St=GRe,Gt=URe,Tn=zRe,Mo=ae.fromCartographicArray(kRe,VRe),So=di.getMinimumMaximumHeights(Mo,u),Tc=So.minimumTerrainHeight,Cc=So.maximumTerrainHeight;ye+=Math.abs(Tc),ye+=Math.abs(Cc),Nte(De,Me,Tc,Cc,$e,Gt),Nte(J,j,Tc,Cc,St,Tn);let Si=d.multiplyByScalar(Te,P.EPSILON5,Hte);d.add($e,Si,$e),d.add(St,Si,St),d.add(Gt,Si,Gt),d.add(Tn,Si,Tn),jL($e,St),jL(Gt,Tn),d.pack($e,x,k),d.pack(St,x,k+3),d.pack(Tn,x,k+6),d.pack(Gt,x,k+9),Si=d.multiplyByScalar(Te,-2*P.EPSILON5,Hte),d.add($e,Si,$e),d.add(St,Si,St),d.add(Gt,Si,Gt),d.add(Tn,Si,Tn),jL($e,St),jL(Gt,Tn),d.pack($e,x,k+12),d.pack(St,x,k+15),d.pack(Tn,x,k+18),d.pack(Gt,x,k+21),V+=2,c+=3,G+=16,k+=24,W+=32,Q+=_t,he+=ea}c=0;let re=0;for(a=0;a<f;a++){for(H=0;H<Gte;H++)m[c+H]=$te[H]+re;re+=8,c+=Gte}let _e=eMe;ce.fromVertices(n,d.ZERO,3,_e[0]),ce.fromVertices(i,d.ZERO,3,_e[1]);let be=ce.fromBoundingSpheres(_e);be.radius+=ye/(f*2);let we={position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,normalize:!1,values:x}),startHiAndForwardOffsetX:ng(b),startLoAndForwardOffsetY:ng(T),startNormalAndForwardOffsetZ:ng(C),endNormalAndTextureCoordinateNormalizationX:ng(A),rightNormalAndTextureCoordinateNormalizationY:ng(E)};return s&&(we.startHiLo2D=ng(v),we.offsetAndRight2D=ng(D),we.startEndNormals2D=ng(R),we.texcoordNormalization2D=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,normalize:!1,values:O})),new ut({attributes:we,indices:m,boundingSphere:be})}function ng(e){return new Se({componentDatatype:X.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}ig._projectNormal=Iv;var ZT=ig;var YL=`in vec4 v_startPlaneNormalEcAndHalfWidth;
in vec4 v_endPlaneNormalEcAndBatchId;
in vec4 v_rightPlaneEC; // Technically can compute distance for this here
in vec4 v_endEcAndStartEcX;
in vec4 v_texcoordNormalizationAndStartEcYZ;
#ifdef PER_INSTANCE_COLOR
in vec4 v_color;
#endif
void main(void)
{
float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)));
vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw);
// Discard for sky
if (logDepthOrDepth == 0.0) {
#ifdef DEBUG_SHOW_VOLUME
out_FragColor = vec4(1.0, 0.0, 0.0, 0.5);
return;
#else // DEBUG_SHOW_VOLUME
discard;
#endif // DEBUG_SHOW_VOLUME
}
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
eyeCoordinate /= eyeCoordinate.w;
float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate);
// Check distance of the eye coordinate against the right-facing plane
float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz);
// Check eye coordinate against the mitering planes
float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz);
float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz);
if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) {
#ifdef DEBUG_SHOW_VOLUME
out_FragColor = vec4(1.0, 0.0, 0.0, 0.5);
return;
#else // DEBUG_SHOW_VOLUME
discard;
#endif // DEBUG_SHOW_VOLUME
}
// Check distance of the eye coordinate against start and end planes with normals in the right plane.
// For computing unskewed lengthwise texture coordinate.
// Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking.
// aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward"
vec3 alignedPlaneNormal;
// start aligned plane
alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz);
alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz));
distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz);
// end aligned plane
alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz);
alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz));
distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz);
#ifdef PER_INSTANCE_COLOR
out_FragColor = czm_gammaCorrect(v_color);
#else // PER_INSTANCE_COLOR
// Clamp - distance to aligned planes may be negative due to mitering,
// so fragment texture coordinate might be out-of-bounds.
float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0);
s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y;
float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth);
czm_materialInput materialInput;
materialInput.s = s;
materialInput.st = vec2(s, t);
materialInput.str = vec3(s, t, 0.0);
czm_material material = czm_getMaterial(materialInput);
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#endif // PER_INSTANCE_COLOR
// Premultiply alpha. Required for classification primitives on translucent globe.
out_FragColor.rgb *= out_FragColor.a;
czm_writeDepthClamp();
}
`;var XL=`in vec3 v_forwardDirectionEC;
in vec3 v_texcoordNormalizationAndHalfWidth;
in float v_batchId;
#ifdef PER_INSTANCE_COLOR
in vec4 v_color;
#else
in vec2 v_alignedPlaneDistances;
in float v_texcoordT;
#endif
float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) {
// We don't expect the ray to ever be parallel to the plane
return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction);
}
void main(void)
{
vec4 eyeCoordinate = gl_FragCoord;
eyeCoordinate /= eyeCoordinate.w;
#ifdef PER_INSTANCE_COLOR
out_FragColor = czm_gammaCorrect(v_color);
#else // PER_INSTANCE_COLOR
// Use distances for planes aligned with segment to prevent skew in dashing
float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x);
float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y);
// Clamp - distance to aligned planes may be negative due to mitering
distanceFromStart = max(0.0, distanceFromStart);
distanceFromEnd = max(0.0, distanceFromEnd);
float s = distanceFromStart / (distanceFromStart + distanceFromEnd);
s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y;
czm_materialInput materialInput;
materialInput.s = s;
materialInput.st = vec2(s, v_texcoordT);
materialInput.str = vec3(s, v_texcoordT, 0.0);
czm_material material = czm_getMaterial(materialInput);
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#endif // PER_INSTANCE_COLOR
}
`;var KL=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec4 startHiAndForwardOffsetX;
in vec4 startLoAndForwardOffsetY;
in vec4 startNormalAndForwardOffsetZ;
in vec4 endNormalAndTextureCoordinateNormalizationX;
in vec4 rightNormalAndTextureCoordinateNormalizationY;
in vec4 startHiLo2D;
in vec4 offsetAndRight2D;
in vec4 startEndNormals2D;
in vec2 texcoordNormalization2D;
in float batchId;
out vec3 v_forwardDirectionEC;
out vec3 v_texcoordNormalizationAndHalfWidth;
out float v_batchId;
// For materials
#ifdef WIDTH_VARYING
out float v_width;
#endif
#ifdef ANGLE_VARYING
out float v_polylineAngle;
#endif
#ifdef PER_INSTANCE_COLOR
out vec4 v_color;
#else
out vec2 v_alignedPlaneDistances;
out float v_texcoordT;
#endif
// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume.
// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient.
void main()
{
v_batchId = batchId;
// Start position
vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw));
vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz);
vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime);
vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz;
vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz;
vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz;
// Start plane
vec4 startPlane2D;
vec4 startPlane3D;
startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy);
startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz;
startPlane2D.w = -dot(startPlane2D.xyz, posEc2D);
startPlane3D.w = -dot(startPlane3D.xyz, posEc3D);
// Right plane
vec4 rightPlane2D;
vec4 rightPlane3D;
rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw);
rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz;
rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D);
rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D);
// End position
posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0);
posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0);
posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime);
posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz;
posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz;
vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz;
vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w));
vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy));
// End plane
vec4 endPlane2D;
vec4 endPlane3D;
endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw);
endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz;
endPlane2D.w = -dot(endPlane2D.xyz, posEc2D);
endPlane3D.w = -dot(endPlane3D.xyz, posEc3D);
// Forward direction
v_forwardDirectionEC = normalize(endEC - startEC);
vec2 cleanTexcoordNormalization2D;
cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x);
cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y));
vec2 cleanTexcoordNormalization3D;
cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w);
cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w;
cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y));
v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime);
#ifdef PER_INSTANCE_COLOR
v_color = czm_batchTable_color(batchId);
#else // PER_INSTANCE_COLOR
// For computing texture coordinates
v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC);
v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC);
#endif // PER_INSTANCE_COLOR
#ifdef WIDTH_VARYING
float width = czm_batchTable_width(batchId);
float halfWidth = width * 0.5;
v_width = width;
v_texcoordNormalizationAndHalfWidth.z = halfWidth;
#else
float halfWidth = 0.5 * czm_batchTable_width(batchId);
v_texcoordNormalizationAndHalfWidth.z = halfWidth;
#endif
// Compute a normal along which to "push" the position out, extending the miter depending on view distance.
// Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes.
// Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be.
// Since this is morphing, compute both 3D and 2D positions and then blend.
// ****** 3D ******
// Check distance to the end plane and start plane, pick the plane that is closer
vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition
float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz));
float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz));
vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz);
vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
// Nudge the top vertex upwards to prevent flickering
vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D));
geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0);
geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT;
positionEc3D.xyz += geodeticSurfaceNormal;
// Determine if this vertex is on the "left" or "right"
normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w);
// A "perfect" implementation would push along normals according to the angle against forward.
// In practice, just pushing the normal out by halfWidth is sufficient for morph views.
positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera)
// ****** 2D ******
// Check distance to the end plane and start plane, pick the plane that is closer
vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition
absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz));
absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz));
planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz);
upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
// Nudge the top vertex upwards to prevent flickering
geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D));
geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0);
geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT;
positionEc2D.xyz += geodeticSurfaceNormal;
// Determine if this vertex is on the "left" or "right"
normalEC *= sign(texcoordNormalization2D.x);
#ifndef PER_INSTANCE_COLOR
// Use vertex's sidedness to compute its texture coordinate.
v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0);
#endif
// A "perfect" implementation would push along normals according to the angle against forward.
// In practice, just pushing the normal out by halfWidth is sufficient for morph views.
positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera)
// Blend for actual position
gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime);
#ifdef ANGLE_VARYING
// Approximate relative screen space direction of the line.
vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y));
approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y);
v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y);
#endif
}
`;var $L=`in vec3 position3DHigh;
in vec3 position3DLow;
// In 2D and in 3D, texture coordinate normalization component signs encodes:
// * X sign - sidedness relative to right plane
// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume
#ifndef COLUMBUS_VIEW_2D
in vec4 startHiAndForwardOffsetX;
in vec4 startLoAndForwardOffsetY;
in vec4 startNormalAndForwardOffsetZ;
in vec4 endNormalAndTextureCoordinateNormalizationX;
in vec4 rightNormalAndTextureCoordinateNormalizationY;
#else
in vec4 startHiLo2D;
in vec4 offsetAndRight2D;
in vec4 startEndNormals2D;
in vec2 texcoordNormalization2D;
#endif
in float batchId;
out vec4 v_startPlaneNormalEcAndHalfWidth;
out vec4 v_endPlaneNormalEcAndBatchId;
out vec4 v_rightPlaneEC;
out vec4 v_endEcAndStartEcX;
out vec4 v_texcoordNormalizationAndStartEcYZ;
// For materials
#ifdef WIDTH_VARYING
out float v_width;
#endif
#ifdef ANGLE_VARYING
out float v_polylineAngle;
#endif
#ifdef PER_INSTANCE_COLOR
out vec4 v_color;
#endif
void main()
{
#ifdef COLUMBUS_VIEW_2D
vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz;
vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy);
vec3 ecEnd = forwardDirectionEC + ecStart;
forwardDirectionEC = normalize(forwardDirectionEC);
// Right plane
v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw);
v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart);
// start plane
vec4 startPlaneEC;
startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy);
startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart);
// end plane
vec4 endPlaneEC;
endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw);
endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd);
v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x);
v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y;
#else // COLUMBUS_VIEW_2D
vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz;
vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w);
vec3 ecEnd = ecStart + offset;
vec3 forwardDirectionEC = normalize(offset);
// start plane
vec4 startPlaneEC;
startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz;
startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart);
// end plane
vec4 endPlaneEC;
endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz;
endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd);
// Right plane
v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz;
v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart);
v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w);
v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w;
#endif // COLUMBUS_VIEW_2D
v_endEcAndStartEcX.xyz = ecEnd;
v_endEcAndStartEcX.w = ecStart.x;
v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz;
#ifdef PER_INSTANCE_COLOR
v_color = czm_batchTable_color(batchId);
#endif // PER_INSTANCE_COLOR
// Compute a normal along which to "push" the position out, extending the miter depending on view distance.
// Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes.
// Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be.
vec4 positionRelativeToEye = czm_computePosition();
// Check distance to the end plane and start plane, pick the plane that is closer
vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition
float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz));
float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz));
vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz);
vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
// Extrude bottom vertices downward for far view distances, like for GroundPrimitives
upOrDown = cross(forwardDirectionEC, normalEC);
upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown;
upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown;
upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown;
positionEC.xyz += upOrDown;
v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y));
// Determine distance along normalEC to push for a volume of appropriate width.
// Make volumes about double pixel width for a conservative fit - in practice the
// extra cost here is minimal compared to the loose volume heights.
//
// N = normalEC (guaranteed "right-facing")
// R = rightEC
// p = angle between N and R
// w = distance to push along R if R == N
// d = distance to push along N
//
// N R
// { p| } * cos(p) = dot(N, R) = w / d
// d | |w * d = w / dot(N, R)
// { | }
// o---------- polyline segment ---->
//
float width = czm_batchTable_width(batchId);
#ifdef WIDTH_VARYING
v_width = width;
#endif
v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz;
v_startPlaneNormalEcAndHalfWidth.w = width * 0.5;
v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz;
v_endPlaneNormalEcAndBatchId.w = batchId;
width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R
width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N
// Determine if this vertex is on the "left" or "right"
#ifdef COLUMBUS_VIEW_2D
normalEC *= sign(texcoordNormalization2D.x);
#else
normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w);
#endif
positionEC.xyz += width * normalEC;
gl_Position = czm_depthClamp(czm_projection * positionEC);
#ifdef ANGLE_VARYING
// Approximate relative screen space direction of the line.
vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y));
approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y);
v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y);
#endif
}
`;var ZL=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 prevPosition3DHigh;
in vec3 prevPosition3DLow;
in vec3 nextPosition3DHigh;
in vec3 nextPosition3DLow;
in vec2 expandAndWidth;
in vec4 color;
in float batchId;
out vec4 v_color;
void main()
{
float expandDir = expandAndWidth.x;
float width = abs(expandAndWidth.y) + 0.5;
bool usePrev = expandAndWidth.y < 0.0;
vec4 p = czm_computePosition();
vec4 prev = czm_computePrevPosition();
vec4 next = czm_computeNextPosition();
float angle;
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle);
gl_Position = czm_viewportOrthographic * positionWC;
v_color = color;
}
`;var rf=`void clipLineSegmentToNearPlane(
vec3 p0,
vec3 p1,
out vec4 positionWC,
out bool clipped,
out bool culledByNearPlane,
out vec4 clippedPositionEC)
{
culledByNearPlane = false;
clipped = false;
vec3 p0ToP1 = p1 - p0;
float magnitude = length(p0ToP1);
vec3 direction = normalize(p0ToP1);
// Distance that p0 is behind the near plane. Negative means p0 is
// in front of the near plane.
float endPoint0Distance = czm_currentFrustum.x + p0.z;
// Camera looks down -Z.
// When moving a point along +Z: LESS VISIBLE
// * Points in front of the camera move closer to the camera.
// * Points behind the camrea move farther away from the camera.
// When moving a point along -Z: MORE VISIBLE
// * Points in front of the camera move farther away from the camera.
// * Points behind the camera move closer to the camera.
// Positive denominator: -Z, becoming more visible
// Negative denominator: +Z, becoming less visible
// Nearly zero: parallel to near plane
float denominator = -direction.z;
if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7)
{
// p0 is behind the near plane and the line to p1 is nearly parallel to
// the near plane, so cull the segment completely.
culledByNearPlane = true;
}
else if (endPoint0Distance > 0.0)
{
// p0 is behind the near plane, and the line to p1 is moving distinctly
// toward or away from it.
// t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction)
float t = endPoint0Distance / denominator;
if (t < 0.0 || t > magnitude)
{
// Near plane intersection is not between the two points.
// We already confirmed p0 is behind the naer plane, so now
// we know the entire segment is behind it.
culledByNearPlane = true;
}
else
{
// Segment crosses the near plane, update p0 to lie exactly on it.
p0 = p0 + t * direction;
// Numerical noise might put us a bit on the wrong side of the near plane.
// Don't let that happen.
p0.z = min(p0.z, -czm_currentFrustum.x);
clipped = true;
}
}
clippedPositionEC = vec4(p0, 1.0);
positionWC = czm_eyeToWindowCoordinates(clippedPositionEC);
}
vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle)
{
// expandDirection +1 is to the _left_ when looking from positionEC toward nextEC.
#ifdef POLYLINE_DASH
// Compute the window coordinates of the points.
vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC);
vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC);
vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC);
// Determine the relative screen space direction of the line.
vec2 lineDir;
if (usePrevious) {
lineDir = normalize(positionWindow.xy - previousWindow.xy);
}
else {
lineDir = normalize(nextWindow.xy - positionWindow.xy);
}
angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0)
// Quantize the angle so it doesn't change rapidly between segments.
angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour;
#endif
vec4 clippedPrevWC, clippedPrevEC;
bool prevSegmentClipped, prevSegmentCulled;
clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC);
vec4 clippedNextWC, clippedNextEC;
bool nextSegmentClipped, nextSegmentCulled;
clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC);
bool segmentClipped, segmentCulled;
vec4 clippedPositionWC, clippedPositionEC;
clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC);
if (segmentCulled)
{
return vec4(0.0, 0.0, 0.0, 1.0);
}
vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy);
vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy);
// If a segment was culled, we can't use the corresponding direction
// computed above. We should never see both of these be true without
// \`segmentCulled\` above also being true.
if (prevSegmentCulled)
{
directionToPrevWC = -directionToNextWC;
}
else if (nextSegmentCulled)
{
directionToNextWC = -directionToPrevWC;
}
vec2 thisSegmentForwardWC, otherSegmentForwardWC;
if (usePrevious)
{
thisSegmentForwardWC = -directionToPrevWC;
otherSegmentForwardWC = directionToNextWC;
}
else
{
thisSegmentForwardWC = directionToNextWC;
otherSegmentForwardWC = -directionToPrevWC;
}
vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x);
vec2 leftWC = thisSegmentLeftWC;
float expandWidth = width * 0.5;
// When lines are split at the anti-meridian, the position may be at the
// same location as the next or previous position, and we need to handle
// that to avoid producing NaNs.
if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1))
{
vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x);
vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC;
float leftSumLength = length(leftSumWC);
leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength);
// The sine of the angle between the two vectors is given by the formula
// |a x b| = |a||b|sin(theta)
// which is
// float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0)));
// Because the z components of both vectors are zero, the x and y coordinate will be zero.
// Therefore, the sine of the angle is just the z component of the cross product.
vec2 u = -thisSegmentForwardWC;
vec2 v = leftWC;
float sinAngle = abs(u.x * v.y - u.y * v.x);
expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 0.5);
}
vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio;
return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w;
}
vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle)
{
vec4 positionEC = czm_modelViewRelativeToEye * position;
vec4 prevEC = czm_modelViewRelativeToEye * previous;
vec4 nextEC = czm_modelViewRelativeToEye * next;
return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle);
}
`;var J6=`${rf}
${ZL}`,nMe=GT;Ht.isInternetExplorer()||(J6=`#define CLIP_POLYLINE
${J6}`);function ex(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.translucent,!0),n=!1,i=ex.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=y(e.vertexShaderSource,J6),this._fragmentShaderSource=y(e.fragmentShaderSource,nMe),this._renderState=ro.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(ex.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});ex.VERTEX_FORMAT=Ie.POSITION_ONLY;ex.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;ex.prototype.isTranslucent=ro.prototype.isTranslucent;ex.prototype.getRenderState=ro.prototype.getRenderState;var rs=ex;var QL=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 prevPosition3DHigh;
in vec3 prevPosition3DLow;
in vec3 nextPosition3DHigh;
in vec3 nextPosition3DLow;
in vec2 expandAndWidth;
in vec2 st;
in float batchId;
out float v_width;
out vec2 v_st;
out float v_polylineAngle;
void main()
{
float expandDir = expandAndWidth.x;
float width = abs(expandAndWidth.y) + 0.5;
bool usePrev = expandAndWidth.y < 0.0;
vec4 p = czm_computePosition();
vec4 prev = czm_computePrevPosition();
vec4 next = czm_computeNextPosition();
float angle;
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle);
gl_Position = czm_viewportOrthographic * positionWC;
v_width = width;
v_st.s = st.s;
v_st.t = czm_writeNonPerspective(st.t, gl_Position.w);
v_polylineAngle = angle;
}
`;var QT=`#ifdef VECTOR_TILE
uniform vec4 u_highlightColor;
#endif
in vec2 v_st;
void main()
{
czm_materialInput materialInput;
vec2 st = v_st;
st.t = czm_readNonPerspective(st.t, gl_FragCoord.w);
materialInput.s = st.s;
materialInput.st = st;
materialInput.str = vec3(st, 0.0);
czm_material material = czm_getMaterial(materialInput);
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#ifdef VECTOR_TILE
out_FragColor *= u_highlightColor;
#endif
czm_writeLogDepth();
}
`;var e9=`${rf}
${QL}`,iMe=QT;Ht.isInternetExplorer()||(e9=`#define CLIP_POLYLINE
${e9}`);function tx(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.translucent,!0),n=!1,i=tx.VERTEX_FORMAT;this.material=l(e.material)?e.material:Zi.fromType(Zi.ColorType),this.translucent=t,this._vertexShaderSource=y(e.vertexShaderSource,e9),this._fragmentShaderSource=y(e.fragmentShaderSource,iMe),this._renderState=ro.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(tx.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH
${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});tx.VERTEX_FORMAT=Ie.POSITION_AND_ST;tx.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;tx.prototype.isTranslucent=ro.prototype.isTranslucent;tx.prototype.getRenderState=ro.prototype.getRenderState;var wa=tx;function Ep(e){e=y(e,y.EMPTY_OBJECT),this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new wa),this.appearance=t,this.show=y(e.show,!0),this.classificationType=y(e.classificationType,zn.BOTH),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this._debugShowShadowVolume=y(e.debugShowShadowVolume,!1),this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:y(e.interleave,!1),releaseGeometryInstances:y(e.releaseGeometryInstances,!0),allowPicking:y(e.allowPicking,!0),asynchronous:y(e.asynchronous,!0),compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=Zte(!1),this._renderState3DTiles=Zte(!0),this._renderStateMorph=Ve.fromCache({cull:{enabled:!0,face:xi.FRONT},depthTest:{enabled:!0},blending:fn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(Ep.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});Ep.initializeTerrainHeights=function(){return di.initialize()};function oMe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()($L);s=Pn._appendShowToShader(o,s),s=Pn._appendDistanceDisplayConditionToShader(o,s),s=Pn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(KL);a=Pn._appendShowToShader(o,a),a=Pn._appendDistanceDisplayConditionToShader(o,a),a=Pn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(YL),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let p=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new Ue({defines:u,sources:[s]}),m=new Ue({defines:p,sources:[h,c]});e._sp=Jt.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let x=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(x)){let T=new Ue({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});x=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:T,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=x;let b=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(b)){let T=new Ue({defines:u.concat([`MAX_TERRAIN_HEIGHT ${di._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()(XL);let C=new Ue({defines:p,sources:[h,c]});b=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:T,fragmentShaderSource:C,attributeLocations:r})}e._spMorph=b}function Zte(e){return Ve.fromCache({cull:{enabled:!0},blending:fn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Hn.EQUAL,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},backFunction:Hn.EQUAL,backOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK}})}function rMe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof rs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let p=s._va[h],g=o[h];l(g)||(g=o[h]=new Qe({owner:e,primitiveType:s._primitiveType})),g.vertexArray=p,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=ve.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=Qe.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let x=Qe.shallowClone(g,g.derivedCommands.color2D);x.shaderProgram=e._sp2D,g.derivedCommands.color2D=x;let b=Qe.shallowClone(m,m.derivedCommands.color2D);b.shaderProgram=e._sp2D,m.derivedCommands.color2D=b;let T=Qe.shallowClone(g,g.derivedCommands.colorMorph);T.renderState=e._renderStateMorph,T.shaderProgram=e._spMorph,T.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=T}}function Qte(e,t,n,i,o,r,s){n.mode===ne.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ne.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function sMe(e,t,n,i,o,r,s){let a=e._primitive;Pn._updateBoundingVolumes(a,t,o);let c;t.mode===ne.SCENE3D?c=a._boundingSphereWC:t.mode===ne.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ne.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ne.MORPHING,f=e.classificationType,h=f!==zn.CESIUM_3D_TILE,p=f!==zn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let x=n.length;for(let b=0;b<x;++b){let T=c[b];h&&(g=n[b],Qte(e,g,t,o,r,T,s)),p&&(g=n[b].derivedCommands.tileset,Qte(e,g,t,o,r,T,s))}}}Ep.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!di.initialized){Ep.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Ic({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,ZT.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Dt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){oMe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,p,g,m){rMe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,p,g,m,x){sMe(n,u,f,h,p,g,m)},this._primitive=new Pn(i)}if(this.appearance instanceof rs&&!this._hasPerInstanceColors)throw new de("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Ep.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};Ep.isSupported=function(e){return e.frameState.context.depthTexture};Ep.prototype.isDestroyed=function(){return!1};Ep.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var kh=Ep;var aMe=new U(1,1),cMe=!1,lMe=z.WHITE;function JT(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(JT.prototype,{isConstant:{get:function(){return Y.isConstant(this._image)&&Y.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:le("image"),repeat:le("repeat"),color:le("color"),transparent:le("transparent")});JT.prototype.getType=function(e){return"Image"};var uMe=new $;JT.prototype.getValue=function(e,t){return l(e)||(e=$.now(uMe)),l(t)||(t={}),t.image=Y.getValueOrUndefined(this._image,e),t.repeat=Y.getValueOrClonedDefault(this._repeat,e,aMe,t.repeat),t.color=Y.getValueOrClonedDefault(this._color,e,lMe,t.color),Y.getValueOrDefault(this._transparent,e,cMe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};JT.prototype.equals=function(e){return this===e||e instanceof JT&&Y.equals(this._image,e._image)&&Y.equals(this._repeat,e._repeat)&&Y.equals(this._color,e._color)&&Y.equals(this._transparent,e._transparent)};var nx=JT;function fMe(e){if(e instanceof z)return new zt(e);if(typeof e=="string"||e instanceof Ee||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new nx;return t.image=e,t}}function dMe(e,t){return le(e,t,fMe)}var Bo=dMe;function Pv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Pv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),dimensions:le("dimensions"),heightReference:le("heightReference"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});Pv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Pv(this)};Pv.prototype.merge=function(e){this.show=y(this.show,e.show),this.dimensions=y(this.dimensions,e.dimensions),this.heightReference=y(this.heightReference,e.heightReference),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var eC=Pv;var hMe={FIXED:0,INERTIAL:1},Gi=Object.freeze(hMe);function tC(){de.throwInstantiationError()}Object.defineProperties(tC.prototype,{isConstant:{get:de.throwInstantiationError},definitionChanged:{get:de.throwInstantiationError},referenceFrame:{get:de.throwInstantiationError}});tC.prototype.getValue=de.throwInstantiationError;tC.prototype.getValueInReferenceFrame=de.throwInstantiationError;tC.prototype.equals=de.throwInstantiationError;var Jte=new Z;tC.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=Mt.computeIcrfToCentralBodyFixedMatrix(e,Jte);if(n===Gi.INERTIAL)return Z.multiplyByVector(r,t,o);if(n===Gi.FIXED)return Z.multiplyByVector(Z.transpose(r,Jte),t,o)};var Vh=tC;function ix(e,t){this._definitionChanged=new me,this._value=d.clone(e),this._referenceFrame=y(t,Gi.FIXED)}Object.defineProperties(ix.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===Gi.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var mMe=new $;ix.prototype.getValue=function(e,t){return l(e)||(e=$.now(mMe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};ix.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};ix.prototype.getValueInReferenceFrame=function(e,t,n){return Vh.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};ix.prototype.equals=function(e){return this===e||e instanceof ix&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var _l=ix;function Ov(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Ov.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),positions:le("positions"),width:le("width"),height:le("height"),heightReference:le("heightReference"),extrudedHeight:le("extrudedHeight"),extrudedHeightReference:le("extrudedHeightReference"),cornerType:le("cornerType"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition"),classificationType:le("classificationType"),zIndex:le("zIndex")});Ov.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Ov(this)};Ov.prototype.merge=function(e){this.show=y(this.show,e.show),this.positions=y(this.positions,e.positions),this.width=y(this.width,e.width),this.height=y(this.height,e.height),this.heightReference=y(this.heightReference,e.heightReference),this.extrudedHeight=y(this.extrudedHeight,e.extrudedHeight),this.extrudedHeightReference=y(this.extrudedHeightReference,e.extrudedHeightReference),this.cornerType=y(this.cornerType,e.cornerType),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.classificationType=y(this.classificationType,e.classificationType),this.zIndex=y(this.zIndex,e.zIndex)};var nC=Ov;function pMe(e){return e}function _Me(e,t){return le(e,t,pMe)}var gl=_Me;function Rv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Rv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),length:le("length"),topRadius:le("topRadius"),bottomRadius:le("bottomRadius"),heightReference:le("heightReference"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),numberOfVerticalLines:le("numberOfVerticalLines"),slices:le("slices"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});Rv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Rv(this)};Rv.prototype.merge=function(e){this.show=y(this.show,e.show),this.length=y(this.length,e.length),this.topRadius=y(this.topRadius,e.topRadius),this.bottomRadius=y(this.bottomRadius,e.bottomRadius),this.heightReference=y(this.heightReference,e.heightReference),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.numberOfVerticalLines=y(this.numberOfVerticalLines,e.numberOfVerticalLines),this.slices=y(this.slices,e.slices),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var iC=Rv;function Mv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Mv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),semiMajorAxis:le("semiMajorAxis"),semiMinorAxis:le("semiMinorAxis"),height:le("height"),heightReference:le("heightReference"),extrudedHeight:le("extrudedHeight"),extrudedHeightReference:le("extrudedHeightReference"),rotation:le("rotation"),stRotation:le("stRotation"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),numberOfVerticalLines:le("numberOfVerticalLines"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition"),classificationType:le("classificationType"),zIndex:le("zIndex")});Mv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Mv(this)};Mv.prototype.merge=function(e){this.show=y(this.show,e.show),this.semiMajorAxis=y(this.semiMajorAxis,e.semiMajorAxis),this.semiMinorAxis=y(this.semiMinorAxis,e.semiMinorAxis),this.height=y(this.height,e.height),this.heightReference=y(this.heightReference,e.heightReference),this.extrudedHeight=y(this.extrudedHeight,e.extrudedHeight),this.extrudedHeightReference=y(this.extrudedHeightReference,e.extrudedHeightReference),this.rotation=y(this.rotation,e.rotation),this.stRotation=y(this.stRotation,e.stRotation),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.numberOfVerticalLines=y(this.numberOfVerticalLines,e.numberOfVerticalLines),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.classificationType=y(this.classificationType,e.classificationType),this.zIndex=y(this.zIndex,e.zIndex)};var oC=Mv;function Lv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Lv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),radii:le("radii"),innerRadii:le("innerRadii"),minimumClock:le("minimumClock"),maximumClock:le("maximumClock"),minimumCone:le("minimumCone"),maximumCone:le("maximumCone"),heightReference:le("heightReference"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),stackPartitions:le("stackPartitions"),slicePartitions:le("slicePartitions"),subdivisions:le("subdivisions"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});Lv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Lv(this)};Lv.prototype.merge=function(e){this.show=y(this.show,e.show),this.radii=y(this.radii,e.radii),this.innerRadii=y(this.innerRadii,e.innerRadii),this.minimumClock=y(this.minimumClock,e.minimumClock),this.maximumClock=y(this.maximumClock,e.maximumClock),this.minimumCone=y(this.minimumCone,e.minimumCone),this.maximumCone=y(this.maximumCone,e.maximumCone),this.heightReference=y(this.heightReference,e.heightReference),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.stackPartitions=y(this.stackPartitions,e.stackPartitions),this.slicePartitions=y(this.slicePartitions,e.slicePartitions),this.subdivisions=y(this.subdivisions,e.subdivisions),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var rC=Lv;function Nv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Nv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),text:le("text"),font:le("font"),style:le("style"),scale:le("scale"),showBackground:le("showBackground"),backgroundColor:le("backgroundColor"),backgroundPadding:le("backgroundPadding"),pixelOffset:le("pixelOffset"),eyeOffset:le("eyeOffset"),horizontalOrigin:le("horizontalOrigin"),verticalOrigin:le("verticalOrigin"),heightReference:le("heightReference"),fillColor:le("fillColor"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),translucencyByDistance:le("translucencyByDistance"),pixelOffsetScaleByDistance:le("pixelOffsetScaleByDistance"),scaleByDistance:le("scaleByDistance"),distanceDisplayCondition:le("distanceDisplayCondition"),disableDepthTestDistance:le("disableDepthTestDistance")});Nv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new Nv(this)};Nv.prototype.merge=function(e){this.show=y(this.show,e.show),this.text=y(this.text,e.text),this.font=y(this.font,e.font),this.style=y(this.style,e.style),this.scale=y(this.scale,e.scale),this.showBackground=y(this.showBackground,e.showBackground),this.backgroundColor=y(this.backgroundColor,e.backgroundColor),this.backgroundPadding=y(this.backgroundPadding,e.backgroundPadding),this.pixelOffset=y(this.pixelOffset,e.pixelOffset),this.eyeOffset=y(this.eyeOffset,e.eyeOffset),this.horizontalOrigin=y(this.horizontalOrigin,e.horizontalOrigin),this.verticalOrigin=y(this.verticalOrigin,e.verticalOrigin),this.heightReference=y(this.heightReference,e.heightReference),this.fillColor=y(this.fillColor,e.fillColor),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.translucencyByDistance=y(this.translucencyByDistance,e.translucencyByDistance),this.pixelOffsetScaleByDistance=y(this.pixelOffsetScaleByDistance,e.pixelOffsetScaleByDistance),this.scaleByDistance=y(this.scaleByDistance,e.scaleByDistance),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.disableDepthTestDistance=y(this.disableDepthTestDistance,e.disableDepthTestDistance)};var Uh=Nv;var gMe=new d(1,1,1),yMe=d.ZERO,xMe=Le.IDENTITY;function ene(e,t,n){this.translation=d.clone(y(e,yMe)),this.rotation=Le.clone(y(t,xMe)),this.scale=d.clone(y(n,gMe))}ene.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var ox=ene;var t9=new ox;function Fv(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(Fv.prototype,{isConstant:{get:function(){return Y.isConstant(this._translation)&&Y.isConstant(this._rotation)&&Y.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:le("translation"),rotation:le("rotation"),scale:le("scale")});var bMe=new $;Fv.prototype.getValue=function(e,t){return l(e)||(e=$.now(bMe)),l(t)||(t=new ox),t.translation=Y.getValueOrClonedDefault(this._translation,e,t9.translation,t.translation),t.rotation=Y.getValueOrClonedDefault(this._rotation,e,t9.rotation,t.rotation),t.scale=Y.getValueOrClonedDefault(this._scale,e,t9.scale,t.scale),t};Fv.prototype.equals=function(e){return this===e||e instanceof Fv&&Y.equals(this._translation,e._translation)&&Y.equals(this._rotation,e._rotation)&&Y.equals(this._scale,e._scale)};var sC=Fv;function Sp(e,t){this._propertyNames=[],this._definitionChanged=new me,l(e)&&this.merge(e,t)}Object.defineProperties(Sp.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!Y.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});Sp.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function TMe(e){return new $n(e)}Sp.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,le(e,!0,y(n,TMe))),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};Sp.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var CMe=new $;Sp.prototype.getValue=function(e,t){l(e)||(e=$.now(CMe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=Y.getValueOrUndefined(this[r],e,t[r])}return t};Sp.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function AMe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!Y.equals(e[s],t[s]))return!1}return!0}Sp.prototype.equals=function(e){return this===e||e instanceof Sp&&AMe(this,e)};var yl=Sp;function tne(e){return new sC(e)}function EMe(e){return new yl(e,tne)}function SMe(e){return new yl(e)}function vMe(e){return new yl(e)}function Bv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this._marsOptions=e&&e.marsOptions||{},this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Bv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),uri:le("uri"),scale:le("scale"),enableVerticalExaggeration:le("enableVerticalExaggeration"),minimumPixelSize:le("minimumPixelSize"),maximumScale:le("maximumScale"),incrementallyLoadTextures:le("incrementallyLoadTextures"),runAnimations:le("runAnimations"),clampAnimations:le("clampAnimations"),shadows:le("shadows"),heightReference:le("heightReference"),silhouetteColor:le("silhouetteColor"),silhouetteSize:le("silhouetteSize"),color:le("color"),colorBlendMode:le("colorBlendMode"),colorBlendAmount:le("colorBlendAmount"),imageBasedLightingFactor:le("imageBasedLightingFactor"),environmentMapOptions:le("environmentMapOptions",void 0,vMe),lightColor:le("lightColor"),distanceDisplayCondition:le("distanceDisplayCondition"),nodeTransformations:le("nodeTransformations",void 0,EMe),articulations:le("articulations",void 0,SMe),clippingPlanes:le("clippingPlanes"),customShader:le("customShader")});Bv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new Bv(this)};Bv.prototype.merge=function(e){this.show=y(this.show,e.show),this.uri=y(this.uri,e.uri),this.scale=y(this.scale,e.scale),this.enableVerticalExaggeration=y(this.enableVerticalExaggeration,e.enableVerticalExaggeration),this.minimumPixelSize=y(this.minimumPixelSize,e.minimumPixelSize),this.maximumScale=y(this.maximumScale,e.maximumScale),this.incrementallyLoadTextures=y(this.incrementallyLoadTextures,e.incrementallyLoadTextures),this.runAnimations=y(this.runAnimations,e.runAnimations),this.clampAnimations=y(this.clampAnimations,e.clampAnimations),this.shadows=y(this.shadows,e.shadows),this.heightReference=y(this.heightReference,e.heightReference),this.silhouetteColor=y(this.silhouetteColor,e.silhouetteColor),this.silhouetteSize=y(this.silhouetteSize,e.silhouetteSize),this.color=y(this.color,e.color),this.colorBlendMode=y(this.colorBlendMode,e.colorBlendMode),this.colorBlendAmount=y(this.colorBlendAmount,e.colorBlendAmount),this.imageBasedLightingFactor=y(this.imageBasedLightingFactor,e.imageBasedLightingFactor),this.environmentMapOptions=y(this.environmentMapOptions,e.environmentMapOptions),this.lightColor=y(this.lightColor,e.lightColor),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.clippingPlanes=y(this.clippingPlanes,e.clippingPlanes),this.customShader=y(this.customShader,e.customShader);let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new yl(t,tne)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new yl(n)}};var og=Bv;function kv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(kv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),uri:le("uri"),maximumScreenSpaceError:le("maximumScreenSpaceError")});kv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new kv(this)};kv.prototype.merge=function(e){this.show=y(this.show,e.show),this.uri=y(this.uri,e.uri),this.maximumScreenSpaceError=y(this.maximumScreenSpaceError,e.maximumScreenSpaceError)};var aC=kv;function Vv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Vv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),leadTime:le("leadTime"),trailTime:le("trailTime"),width:le("width"),resolution:le("resolution"),material:Bo("material"),distanceDisplayCondition:le("distanceDisplayCondition")});Vv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Vv(this)};Vv.prototype.merge=function(e){this.show=y(this.show,e.show),this.leadTime=y(this.leadTime,e.leadTime),this.trailTime=y(this.trailTime,e.trailTime),this.width=y(this.width,e.width),this.resolution=y(this.resolution,e.resolution),this.material=y(this.material,e.material),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var rg=Vv;function Uv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Uv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),plane:le("plane"),dimensions:le("dimensions"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});Uv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Uv(this)};Uv.prototype.merge=function(e){this.show=y(this.show,e.show),this.plane=y(this.plane,e.plane),this.dimensions=y(this.dimensions,e.dimensions),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var JL=Uv;function zv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(zv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),pixelSize:le("pixelSize"),heightReference:le("heightReference"),color:le("color"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),scaleByDistance:le("scaleByDistance"),translucencyByDistance:le("translucencyByDistance"),distanceDisplayCondition:le("distanceDisplayCondition"),disableDepthTestDistance:le("disableDepthTestDistance"),splitDirection:le("splitDirection")});zv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new zv(this)};zv.prototype.merge=function(e){this.show=y(this.show,e.show),this.pixelSize=y(this.pixelSize,e.pixelSize),this.heightReference=y(this.heightReference,e.heightReference),this.color=y(this.color,e.color),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.scaleByDistance=y(this.scaleByDistance,e.scaleByDistance),this.translucencyByDistance=y(this._translucencyByDistance,e.translucencyByDistance),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.disableDepthTestDistance=y(this.disableDepthTestDistance,e.disableDepthTestDistance),this.splitDirection=y(this.splitDirection,e.splitDirection)};var cC=zv;function wMe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var Za=wMe;function DMe(e){return Array.isArray(e)&&(e=new Za(e)),new $n(e)}function Hv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Hv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),hierarchy:le("hierarchy",void 0,DMe),height:le("height"),heightReference:le("heightReference"),extrudedHeight:le("extrudedHeight"),extrudedHeightReference:le("extrudedHeightReference"),stRotation:le("stRotation"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),perPositionHeight:le("perPositionHeight"),closeTop:le("closeTop"),closeBottom:le("closeBottom"),arcType:le("arcType"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition"),classificationType:le("classificationType"),zIndex:le("zIndex"),textureCoordinates:le("textureCoordinates")});Hv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new Hv(this)};Hv.prototype.merge=function(e){this.show=y(this.show,e.show),this.hierarchy=y(this.hierarchy,e.hierarchy),this.height=y(this.height,e.height),this.heightReference=y(this.heightReference,e.heightReference),this.extrudedHeight=y(this.extrudedHeight,e.extrudedHeight),this.extrudedHeightReference=y(this.extrudedHeightReference,e.extrudedHeightReference),this.stRotation=y(this.stRotation,e.stRotation),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.perPositionHeight=y(this.perPositionHeight,e.perPositionHeight),this.closeTop=y(this.closeTop,e.closeTop),this.closeBottom=y(this.closeBottom,e.closeBottom),this.arcType=y(this.arcType,e.arcType),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.classificationType=y(this.classificationType,e.classificationType),this.zIndex=y(this.zIndex,e.zIndex),this.textureCoordinates=y(this.textureCoordinates,e.textureCoordinates)};var zh=Hv;function Gv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Gv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),positions:le("positions"),width:le("width"),granularity:le("granularity"),material:Bo("material"),depthFailMaterial:Bo("depthFailMaterial"),arcType:le("arcType"),clampToGround:le("clampToGround"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition"),classificationType:le("classificationType"),zIndex:le("zIndex")});Gv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Gv(this)};Gv.prototype.merge=function(e){this.show=y(this.show,e.show),this.positions=y(this.positions,e.positions),this.width=y(this.width,e.width),this.granularity=y(this.granularity,e.granularity),this.material=y(this.material,e.material),this.depthFailMaterial=y(this.depthFailMaterial,e.depthFailMaterial),this.arcType=y(this.arcType,e.arcType),this.clampToGround=y(this.clampToGround,e.clampToGround),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.classificationType=y(this.classificationType,e.classificationType),this.zIndex=y(this.zIndex,e.zIndex)};var Oc=Gv;function Wv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(Wv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),positions:le("positions"),shape:le("shape"),cornerType:le("cornerType"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});Wv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Wv(this)};Wv.prototype.merge=function(e){this.show=y(this.show,e.show),this.positions=y(this.positions,e.positions),this.shape=y(this.shape,e.shape),this.cornerType=y(this.cornerType,e.cornerType),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var lC=Wv;function jv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(jv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),coordinates:le("coordinates"),height:le("height"),heightReference:le("heightReference"),extrudedHeight:le("extrudedHeight"),extrudedHeightReference:le("extrudedHeightReference"),rotation:le("rotation"),stRotation:le("stRotation"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition"),classificationType:le("classificationType"),zIndex:le("zIndex")});jv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new jv(this)};jv.prototype.merge=function(e){this.show=y(this.show,e.show),this.coordinates=y(this.coordinates,e.coordinates),this.height=y(this.height,e.height),this.heightReference=y(this.heightReference,e.heightReference),this.extrudedHeight=y(this.extrudedHeight,e.extrudedHeight),this.extrudedHeightReference=y(this.extrudedHeightReference,e.extrudedHeightReference),this.rotation=y(this.rotation,e.rotation),this.stRotation=y(this.stRotation,e.stRotation),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition),this.classificationType=y(this.classificationType,e.classificationType),this.zIndex=y(this.zIndex,e.zIndex)};var Hh=jv;function qv(e){this._definitionChanged=new me,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(y(e,y.EMPTY_OBJECT))}Object.defineProperties(qv.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:le("show"),positions:le("positions"),minimumHeights:le("minimumHeights"),maximumHeights:le("maximumHeights"),granularity:le("granularity"),fill:le("fill"),material:Bo("material"),outline:le("outline"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth"),shadows:le("shadows"),distanceDisplayCondition:le("distanceDisplayCondition")});qv.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new qv(this)};qv.prototype.merge=function(e){this.show=y(this.show,e.show),this.positions=y(this.positions,e.positions),this.minimumHeights=y(this.minimumHeights,e.minimumHeights),this.maximumHeights=y(this.maximumHeights,e.maximumHeights),this.granularity=y(this.granularity,e.granularity),this.fill=y(this.fill,e.fill),this.material=y(this.material,e.material),this.outline=y(this.outline,e.outline),this.outlineColor=y(this.outlineColor,e.outlineColor),this.outlineWidth=y(this.outlineWidth,e.outlineWidth),this.shadows=y(this.shadows,e.shadows),this.distanceDisplayCondition=y(this.distanceDisplayCondition,e.distanceDisplayCondition)};var sg=qv;var IMe=new fe,n9=[];function PMe(e){return new _l(e)}function OMe(e){return le(e,void 0,PMe)}function Vs(e,t){return le(e,void 0,function(n){return n instanceof t?n:new t(n)})}function sf(e){e=y(e,y.EMPTY_OBJECT);let t=e.id;l(t)||(t=Yn()),this._availability=void 0,this._id=t,this._definitionChanged=new me,this._name=e.name,this._show=y(e.show,!0),this._trackingReferenceFrame=y(e.trackingReferenceFrame,eg.AUTODETECT),this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...n9],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function i9(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&i9(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(sf.prototype,{availability:gl("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:gl("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&i9(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:gl("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&i9(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:Vs("billboard",Ac),box:Vs("box",eC),corridor:Vs("corridor",nC),cylinder:Vs("cylinder",iC),description:le("description"),ellipse:Vs("ellipse",oC),ellipsoid:Vs("ellipsoid",rC),label:Vs("label",Uh),model:Vs("model",og),tileset:Vs("tileset",aC),orientation:le("orientation"),path:Vs("path",rg),plane:Vs("plane",JL),point:Vs("point",cC),polygon:Vs("polygon",zh),polyline:Vs("polyline",Oc),polylineVolume:Vs("polylineVolume",lC),properties:Vs("properties",yl),position:OMe("position"),rectangle:Vs("rectangle",Hh),viewFrom:le("viewFrom"),wall:Vs("wall",sg)});sf.registerEntityType=function(e,t){Object.defineProperties(sf.prototype,{[e]:Vs(e,t)}),n9.includes(e)||n9.push(e)};sf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};sf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,gl(e,!0))};sf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};sf.prototype.merge=function(e){this.name=y(this.name,e.name),this.availability=y(this.availability,e.availability);let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var nne=new Z,ine=new d,one=new Le;sf.prototype.computeModelMatrix=function(e,t){let n=Y.getValueOrUndefined(this._position,e,ine);if(!l(n))return;let i=Y.getValueOrUndefined(this._orientation,e,one);return l(i)?t=F.fromRotationTranslation(Z.fromQuaternion(i,nne),n,t):t=Mt.eastNorthUpToFixedFrame(n,void 0,t),t};sf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=Y.getValueOrDefault(t,e,qe.NONE),s=Y.getValueOrUndefined(this._position,e,ine);if(r===qe.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,P.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,IMe);Qu(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=Y.getValueOrUndefined(this._orientation,e,one);return l(c)?o=F.fromRotationTranslation(Z.fromQuaternion(c,nne),s,o):o=Mt.eastNorthUpToFixedFrame(s,void 0,o),o};sf.supportsMaterialsforEntitiesOnTerrain=function(e){return pl.supportsMaterials(e)};sf.supportsPolylinesOnTerrain=function(e){return kh.isSupported(e)};var ar=sf;var RMe=new zt(z.WHITE),MMe=new $n(!0),LMe=new $n(!0),NMe=new $n(!1),FMe=new $n(z.BLACK),BMe=new $n(yn.DISABLED),kMe=new $n(new Lt),VMe=new $n(zn.BOTH);function Rc(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new me,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=ar.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(Rc.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&Y.isConstant(this._showProperty)&&Y.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&Y.isConstant(this._showProperty)&&Y.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});Rc.prototype.isOutlineVisible=function(e){let t=this._entity,n=this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e);return y(n,!1)};Rc.prototype.isFilled=function(e){let t=this._entity,n=this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e);return y(n,!1)};Rc.prototype.createFillGeometryInstance=de.throwInstantiationError;Rc.prototype.createOutlineGeometryInstance=de.throwInstantiationError;Rc.prototype.isDestroyed=function(){return!1};Rc.prototype.destroy=function(){ue(this)};Rc.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(ze.MINIMUM_VALUE)};Rc.prototype._isOnTerrain=function(e,t){return!1};Rc.prototype._getIsClosed=function(e){return!0};Rc.prototype._isDynamic=de.throwInstantiationError;Rc.prototype._setStaticOptions=de.throwInstantiationError;Rc.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(ze.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(ze.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=y(o.material,RMe),this._fillProperty=y(r,LMe),this._showProperty=y(u,MMe),this._showOutlineProperty=y(o.outline,NMe),this._outlineColorProperty=c?y(o.outlineColor,FMe):void 0,this._shadowsProperty=y(o.shadows,BMe),this._distanceDisplayConditionProperty=y(o.distanceDisplayCondition,kMe),this._classificationTypeProperty=y(o.classificationType,VMe),this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof zt);if(c&&f&&(Ct(Ct.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(ze.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};Rc.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var si=Rc;function uC(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new me,this.setCallback(e,t)}Object.defineProperties(uC.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var UMe=new $;uC.prototype.getValue=function(e,t){return l(e)||(e=$.now(UMe)),this._callback(e,t)};uC.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};uC.prototype.equals=function(e){return this===e||e instanceof uC&&this._callback===e._callback&&this._isConstant===e._isConstant};var Gh=uC;var rne=new d;function fC(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new fe,this._normal=new d,this._definitionChanged=new me,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(ze.MINIMUM_VALUE,rne);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(fC.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});fC.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var zMe=new $;fC.prototype.getValue=function(e,t){l(e)||(e=$.now(zMe));let n=Y.getValueOrDefault(this._heightReference,e,qe.NONE),i=Y.getValueOrDefault(this._extrudedHeightReference,e,qe.NONE);if(n===qe.NONE&&!RT(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,rne);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,P.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};fC.prototype.isDestroyed=function(){return!1};fC.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var dC=fC;function HMe(e,t,n,i){if(si.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new Gh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new dC(this._scene,s,r)}}var ag=HMe;var sne=d.ZERO,ane=new d,GMe=new d,cne=new z;function WMe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function nu(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new WMe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(nu.prototype=Object.create(si.prototype),nu.prototype.constructor=nu);Object.defineProperties(nu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});nu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Un.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof zt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,cne)),l(a)||(a=z.WHITE),s.color=Wt.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,sne,ane))),new Dt({id:t,geometry:Ya.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};nu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,cne),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,sne,ane))),new Dt({id:t,geometry:Oh.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};nu.prototype._computeCenter=function(e,t){return Y.getValueOrUndefined(this._entity.position,e,t)};nu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||si.prototype._isHidden.call(this,e,t)};nu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!Y.isConstant(e.orientation)||!t.dimensions.isConstant||!Y.isConstant(t.outlineWidth)};nu.prototype._setStaticOptions=function(e,t){let n=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof zt?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==qe.NONE?rn.ALL:void 0};nu.prototype._onEntityPropertyChanged=ag;nu.DynamicGeometryUpdater=hC;function hC(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(hC.prototype=Object.create(ri.prototype),hC.prototype.constructor=hC);hC.prototype._isHidden=function(e,t,n){let i=Y.getValueOrUndefined(e.position,n,GMe),o=this._options.dimensions;return!l(i)||!l(o)||ri.prototype._isHidden.call(this,e,t,n)};hC.prototype._setOptions=function(e,t,n){let i=Y.getValueOrDefault(t.heightReference,n,qe.NONE),o=this._options;o.dimensions=Y.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==qe.NONE?rn.ALL:void 0};var eN=nu;function rx(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=y(n,Gi.FIXED),this._definitionChanged=new me,this.setCallback(e,t)}Object.defineProperties(rx.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var jMe=new $;rx.prototype.getValue=function(e,t){return l(e)||(e=$.now(jMe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};rx.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};rx.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return Vh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};rx.prototype.equals=function(e){return this===e||e instanceof rx&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var tN=rx;/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */var{entries:yne,setPrototypeOf:lne,isFrozen:qMe,getPrototypeOf:YMe,getOwnPropertyDescriptor:XMe}=Object,{freeze:Lc,seal:af,create:xne}=Object,{apply:l9,construct:u9}=typeof Reflect<"u"&&Reflect;Lc||(Lc=function(t){return t});af||(af=function(t){return t});l9||(l9=function(t,n,i){return t.apply(n,i)});u9||(u9=function(t,n){return new t(...n)});var nN=Nc(Array.prototype.forEach),KMe=Nc(Array.prototype.lastIndexOf),une=Nc(Array.prototype.pop),Yv=Nc(Array.prototype.push),$Me=Nc(Array.prototype.splice),oN=Nc(String.prototype.toLowerCase),o9=Nc(String.prototype.toString),fne=Nc(String.prototype.match),Xv=Nc(String.prototype.replace),ZMe=Nc(String.prototype.indexOf),QMe=Nc(String.prototype.trim),bd=Nc(Object.prototype.hasOwnProperty),Mc=Nc(RegExp.prototype.test),Kv=JMe(TypeError);function Nc(e){return function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return l9(e,t,i)}}function JMe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return u9(e,n)}}function vi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:oN;lne&&lne(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(qMe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function eLe(e){for(let t=0;t<e.length;t++)bd(e,t)||(e[t]=null);return e}function sx(e){let t=xne(null);for(let[n,i]of yne(e))bd(e,n)&&(Array.isArray(i)?t[n]=eLe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=sx(i):t[n]=i);return t}function $v(e,t){for(;e!==null;){let i=XMe(e,t);if(i){if(i.get)return Nc(i.get);if(typeof i.value=="function")return Nc(i.value)}e=YMe(e)}function n(){return null}return n}var dne=Lc(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),r9=Lc(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),s9=Lc(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),tLe=Lc(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),a9=Lc(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),nLe=Lc(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),hne=Lc(["#text"]),mne=Lc(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),c9=Lc(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),pne=Lc(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),iN=Lc(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),iLe=af(/\{\{[\w\W]*|[\w\W]*\}\}/gm),oLe=af(/<%[\w\W]*|[\w\W]*%>/gm),rLe=af(/\$\{[\w\W]*/gm),sLe=af(/^data-[\-\w.\u00B7-\uFFFF]+$/),aLe=af(/^aria-[\-\w]+$/),bne=af(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),cLe=af(/^(?:\w+script|data):/i),lLe=af(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Tne=af(/^html$/i),uLe=af(/^[a-z][.\w]*(-[.\w]+)+$/i),_ne=Object.freeze({__proto__:null,ARIA_ATTR:aLe,ATTR_WHITESPACE:lLe,CUSTOM_ELEMENT:uLe,DATA_ATTR:sLe,DOCTYPE_NAME:Tne,ERB_EXPR:oLe,IS_ALLOWED_URI:bne,IS_SCRIPT_OR_DATA:cLe,MUSTACHE_EXPR:iLe,TMPLIT_EXPR:rLe}),Zv={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},fLe=function(){return typeof window>"u"?null:window},dLe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},gne=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Cne(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:fLe(),t=Yt=>Cne(Yt);if(t.version="3.2.4",t.removed=[],!e||!e.document||e.document.nodeType!==Zv.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:p,trustedTypes:g}=e,m=c.prototype,x=$v(m,"cloneNode"),b=$v(m,"remove"),T=$v(m,"nextSibling"),C=$v(m,"childNodes"),A=$v(m,"parentNode");if(typeof s=="function"){let Yt=n.createElement("template");Yt.content&&Yt.content.ownerDocument&&(n=Yt.content.ownerDocument)}let E,v="",{implementation:D,createNodeIterator:R,createDocumentFragment:O,getElementsByTagName:M}=n,{importNode:N}=i,_=gne();t.isSupported=typeof yne=="function"&&typeof A=="function"&&D&&D.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:S,ERB_EXPR:w,TMPLIT_EXPR:I,DATA_ATTR:L,ARIA_ATTR:B,IS_SCRIPT_OR_DATA:H,ATTR_WHITESPACE:V,CUSTOM_ELEMENT:G}=_ne,{IS_ALLOWED_URI:k}=_ne,W=null,q=vi({},[...dne,...r9,...s9,...a9,...hne]),J=null,j=vi({},[...mne,...c9,...pne,...iN]),K=Object.seal(xne(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,he=null,ye=!0,re=!0,_e=!1,be=!0,we=!1,De=!0,Me=!1,Re=!1,rt=!1,Ye=!1,dt=!1,Xe=!1,_t=!0,ft=!1,ht="user-content-",vn=!0,tn=!1,Te={},Ae=null,Mn=vi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ro=null,Wo=vi({},["audio","video","img","source","image","track"]),Sr=null,ea=vi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ys="http://www.w3.org/1998/Math/MathML",ta="http://www.w3.org/2000/svg",Fe="http://www.w3.org/1999/xhtml",st=Fe,tt=!1,$e=null,St=vi({},[ys,ta,Fe],o9),Gt=vi({},["mi","mo","mn","ms","mtext"]),Tn=vi({},["annotation-xml"]),Mo=vi({},["title","style","font","a","script"]),So=null,Tc=["application/xhtml+xml","text/html"],Cc="text/html",Si=null,Oi=null,Sa=n.createElement("form"),un=function(Ce){return Ce instanceof RegExp||Ce instanceof Function},Ln=function(){let Ce=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Oi&&Oi===Ce)){if((!Ce||typeof Ce!="object")&&(Ce={}),Ce=sx(Ce),So=Tc.indexOf(Ce.PARSER_MEDIA_TYPE)===-1?Cc:Ce.PARSER_MEDIA_TYPE,Si=So==="application/xhtml+xml"?o9:oN,W=bd(Ce,"ALLOWED_TAGS")?vi({},Ce.ALLOWED_TAGS,Si):q,J=bd(Ce,"ALLOWED_ATTR")?vi({},Ce.ALLOWED_ATTR,Si):j,$e=bd(Ce,"ALLOWED_NAMESPACES")?vi({},Ce.ALLOWED_NAMESPACES,o9):St,Sr=bd(Ce,"ADD_URI_SAFE_ATTR")?vi(sx(ea),Ce.ADD_URI_SAFE_ATTR,Si):ea,Ro=bd(Ce,"ADD_DATA_URI_TAGS")?vi(sx(Wo),Ce.ADD_DATA_URI_TAGS,Si):Wo,Ae=bd(Ce,"FORBID_CONTENTS")?vi({},Ce.FORBID_CONTENTS,Si):Mn,Q=bd(Ce,"FORBID_TAGS")?vi({},Ce.FORBID_TAGS,Si):{},he=bd(Ce,"FORBID_ATTR")?vi({},Ce.FORBID_ATTR,Si):{},Te=bd(Ce,"USE_PROFILES")?Ce.USE_PROFILES:!1,ye=Ce.ALLOW_ARIA_ATTR!==!1,re=Ce.ALLOW_DATA_ATTR!==!1,_e=Ce.ALLOW_UNKNOWN_PROTOCOLS||!1,be=Ce.ALLOW_SELF_CLOSE_IN_ATTR!==!1,we=Ce.SAFE_FOR_TEMPLATES||!1,De=Ce.SAFE_FOR_XML!==!1,Me=Ce.WHOLE_DOCUMENT||!1,Ye=Ce.RETURN_DOM||!1,dt=Ce.RETURN_DOM_FRAGMENT||!1,Xe=Ce.RETURN_TRUSTED_TYPE||!1,rt=Ce.FORCE_BODY||!1,_t=Ce.SANITIZE_DOM!==!1,ft=Ce.SANITIZE_NAMED_PROPS||!1,vn=Ce.KEEP_CONTENT!==!1,tn=Ce.IN_PLACE||!1,k=Ce.ALLOWED_URI_REGEXP||bne,st=Ce.NAMESPACE||Fe,Gt=Ce.MATHML_TEXT_INTEGRATION_POINTS||Gt,Tn=Ce.HTML_INTEGRATION_POINTS||Tn,K=Ce.CUSTOM_ELEMENT_HANDLING||{},Ce.CUSTOM_ELEMENT_HANDLING&&un(Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(K.tagNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&un(Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(K.attributeNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&typeof Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(K.allowCustomizedBuiltInElements=Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),we&&(re=!1),dt&&(Ye=!0),Te&&(W=vi({},hne),J=[],Te.html===!0&&(vi(W,dne),vi(J,mne)),Te.svg===!0&&(vi(W,r9),vi(J,c9),vi(J,iN)),Te.svgFilters===!0&&(vi(W,s9),vi(J,c9),vi(J,iN)),Te.mathMl===!0&&(vi(W,a9),vi(J,pne),vi(J,iN))),Ce.ADD_TAGS&&(W===q&&(W=sx(W)),vi(W,Ce.ADD_TAGS,Si)),Ce.ADD_ATTR&&(J===j&&(J=sx(J)),vi(J,Ce.ADD_ATTR,Si)),Ce.ADD_URI_SAFE_ATTR&&vi(Sr,Ce.ADD_URI_SAFE_ATTR,Si),Ce.FORBID_CONTENTS&&(Ae===Mn&&(Ae=sx(Ae)),vi(Ae,Ce.FORBID_CONTENTS,Si)),vn&&(W["#text"]=!0),Me&&vi(W,["html","head","body"]),W.table&&(vi(W,["tbody"]),delete Q.tbody),Ce.TRUSTED_TYPES_POLICY){if(typeof Ce.TRUSTED_TYPES_POLICY.createHTML!="function")throw Kv('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Ce.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Kv('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');E=Ce.TRUSTED_TYPES_POLICY,v=E.createHTML("")}else E===void 0&&(E=dLe(g,o)),E!==null&&typeof v=="string"&&(v=E.createHTML(""));Lc&&Lc(Ce),Oi=Ce}},Hi=vi({},[...r9,...s9,...tLe]),We=vi({},[...a9,...nLe]),cl=function(Ce){let gt=A(Ce);(!gt||!gt.tagName)&&(gt={namespaceURI:st,tagName:"template"});let cn=oN(Ce.tagName),wo=oN(gt.tagName);return $e[Ce.namespaceURI]?Ce.namespaceURI===ta?gt.namespaceURI===Fe?cn==="svg":gt.namespaceURI===ys?cn==="svg"&&(wo==="annotation-xml"||Gt[wo]):!!Hi[cn]:Ce.namespaceURI===ys?gt.namespaceURI===Fe?cn==="math":gt.namespaceURI===ta?cn==="math"&&Tn[wo]:!!We[cn]:Ce.namespaceURI===Fe?gt.namespaceURI===ta&&!Tn[wo]||gt.namespaceURI===ys&&!Gt[wo]?!1:!We[cn]&&(Mo[cn]||!Hi[cn]):!!(So==="application/xhtml+xml"&&$e[Ce.namespaceURI]):!1},vo=function(Ce){Yv(t.removed,{element:Ce});try{A(Ce).removeChild(Ce)}catch{b(Ce)}},ld=function(Ce,gt){try{Yv(t.removed,{attribute:gt.getAttributeNode(Ce),from:gt})}catch{Yv(t.removed,{attribute:null,from:gt})}if(gt.removeAttribute(Ce),Ce==="is")if(Ye||dt)try{vo(gt)}catch{}else try{gt.setAttribute(Ce,"")}catch{}},Gu=function(Ce){let gt=null,cn=null;if(rt)Ce="<remove></remove>"+Ce;else{let ns=fne(Ce,/^[\r\n\t ]+/);cn=ns&&ns[0]}So==="application/xhtml+xml"&&st===Fe&&(Ce='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Ce+"</body></html>");let wo=E?E.createHTML(Ce):Ce;if(st===Fe)try{gt=new p().parseFromString(wo,So)}catch{}if(!gt||!gt.documentElement){gt=D.createDocument(st,"template",null);try{gt.documentElement.innerHTML=tt?v:wo}catch{}}let xs=gt.body||gt.documentElement;return Ce&&cn&&xs.insertBefore(n.createTextNode(cn),xs.childNodes[0]||null),st===Fe?M.call(gt,Me?"html":"body")[0]:Me?gt.documentElement:xs},Ah=function(Ce){return R.call(Ce.ownerDocument||Ce,Ce,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Wu=function(Ce){return Ce instanceof h&&(typeof Ce.nodeName!="string"||typeof Ce.textContent!="string"||typeof Ce.removeChild!="function"||!(Ce.attributes instanceof f)||typeof Ce.removeAttribute!="function"||typeof Ce.setAttribute!="function"||typeof Ce.namespaceURI!="string"||typeof Ce.insertBefore!="function"||typeof Ce.hasChildNodes!="function")},V_=function(Ce){return typeof a=="function"&&Ce instanceof a};function oo(Yt,Ce,gt){nN(Yt,cn=>{cn.call(t,Ce,gt,Oi)})}let ju=function(Ce){let gt=null;if(oo(_.beforeSanitizeElements,Ce,null),Wu(Ce))return vo(Ce),!0;let cn=Si(Ce.nodeName);if(oo(_.uponSanitizeElement,Ce,{tagName:cn,allowedTags:W}),Ce.hasChildNodes()&&!V_(Ce.firstElementChild)&&Mc(/<[/\w]/g,Ce.innerHTML)&&Mc(/<[/\w]/g,Ce.textContent)||Ce.nodeType===Zv.progressingInstruction||De&&Ce.nodeType===Zv.comment&&Mc(/<[/\w]/g,Ce.data))return vo(Ce),!0;if(!W[cn]||Q[cn]){if(!Q[cn]&&ll(cn)&&(K.tagNameCheck instanceof RegExp&&Mc(K.tagNameCheck,cn)||K.tagNameCheck instanceof Function&&K.tagNameCheck(cn)))return!1;if(vn&&!Ae[cn]){let wo=A(Ce)||Ce.parentNode,xs=C(Ce)||Ce.childNodes;if(xs&&wo){let ns=xs.length;for(let na=ns-1;na>=0;--na){let Ua=x(xs[na],!0);Ua.__removalCount=(Ce.__removalCount||0)+1,wo.insertBefore(Ua,T(Ce))}}}return vo(Ce),!0}return Ce instanceof c&&!cl(Ce)||(cn==="noscript"||cn==="noembed"||cn==="noframes")&&Mc(/<\/no(script|embed|frames)/i,Ce.innerHTML)?(vo(Ce),!0):(we&&Ce.nodeType===Zv.text&&(gt=Ce.textContent,nN([S,w,I],wo=>{gt=Xv(gt,wo," ")}),Ce.textContent!==gt&&(Yv(t.removed,{element:Ce.cloneNode()}),Ce.textContent=gt)),oo(_.afterSanitizeElements,Ce,null),!1)},ud=function(Ce,gt,cn){if(_t&&(gt==="id"||gt==="name")&&(cn in n||cn in Sa))return!1;if(!(re&&!he[gt]&&Mc(L,gt))){if(!(ye&&Mc(B,gt))){if(!J[gt]||he[gt]){if(!(ll(Ce)&&(K.tagNameCheck instanceof RegExp&&Mc(K.tagNameCheck,Ce)||K.tagNameCheck instanceof Function&&K.tagNameCheck(Ce))&&(K.attributeNameCheck instanceof RegExp&&Mc(K.attributeNameCheck,gt)||K.attributeNameCheck instanceof Function&&K.attributeNameCheck(gt))||gt==="is"&&K.allowCustomizedBuiltInElements&&(K.tagNameCheck instanceof RegExp&&Mc(K.tagNameCheck,cn)||K.tagNameCheck instanceof Function&&K.tagNameCheck(cn))))return!1}else if(!Sr[gt]){if(!Mc(k,Xv(cn,V,""))){if(!((gt==="src"||gt==="xlink:href"||gt==="href")&&Ce!=="script"&&ZMe(cn,"data:")===0&&Ro[Ce])){if(!(_e&&!Mc(H,Xv(cn,V,"")))){if(cn)return!1}}}}}}return!0},ll=function(Ce){return Ce!=="annotation-xml"&&fne(Ce,G)},Ls=function(Ce){oo(_.beforeSanitizeAttributes,Ce,null);let{attributes:gt}=Ce;if(!gt||Wu(Ce))return;let cn={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:J,forceKeepAttr:void 0},wo=gt.length;for(;wo--;){let xs=gt[wo],{name:ns,namespaceURI:na,value:Ua}=xs,rp=Si(ns),Ns=ns==="value"?Ua:QMe(Ua);if(cn.attrName=rp,cn.attrValue=Ns,cn.keepAttr=!0,cn.forceKeepAttr=void 0,oo(_.uponSanitizeAttribute,Ce,cn),Ns=cn.attrValue,ft&&(rp==="id"||rp==="name")&&(ld(ns,Ce),Ns=ht+Ns),De&&Mc(/((--!?|])>)|<\/(style|title)/i,Ns)){ld(ns,Ce);continue}if(cn.forceKeepAttr||(ld(ns,Ce),!cn.keepAttr))continue;if(!be&&Mc(/\/>/i,Ns)){ld(ns,Ce);continue}we&&nN([S,w,I],dT=>{Ns=Xv(Ns,dT," ")});let fT=Si(Ce.nodeName);if(ud(fT,rp,Ns)){if(E&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!na)switch(g.getAttributeType(fT,rp)){case"TrustedHTML":{Ns=E.createHTML(Ns);break}case"TrustedScriptURL":{Ns=E.createScriptURL(Ns);break}}try{na?Ce.setAttributeNS(na,ns,Ns):Ce.setAttribute(ns,Ns),Wu(Ce)?vo(Ce):une(t.removed)}catch{}}}oo(_.afterSanitizeAttributes,Ce,null)},vr=function Yt(Ce){let gt=null,cn=Ah(Ce);for(oo(_.beforeSanitizeShadowDOM,Ce,null);gt=cn.nextNode();)oo(_.uponSanitizeShadowNode,gt,null),ju(gt),Ls(gt),gt.content instanceof r&&Yt(gt.content);oo(_.afterSanitizeShadowDOM,Ce,null)};return t.sanitize=function(Yt){let Ce=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},gt=null,cn=null,wo=null,xs=null;if(tt=!Yt,tt&&(Yt="<!-->"),typeof Yt!="string"&&!V_(Yt))if(typeof Yt.toString=="function"){if(Yt=Yt.toString(),typeof Yt!="string")throw Kv("dirty is not a string, aborting")}else throw Kv("toString is not a function");if(!t.isSupported)return Yt;if(Re||Ln(Ce),t.removed=[],typeof Yt=="string"&&(tn=!1),tn){if(Yt.nodeName){let Ua=Si(Yt.nodeName);if(!W[Ua]||Q[Ua])throw Kv("root node is forbidden and cannot be sanitized in-place")}}else if(Yt instanceof a)gt=Gu("<!---->"),cn=gt.ownerDocument.importNode(Yt,!0),cn.nodeType===Zv.element&&cn.nodeName==="BODY"||cn.nodeName==="HTML"?gt=cn:gt.appendChild(cn);else{if(!Ye&&!we&&!Me&&Yt.indexOf("<")===-1)return E&&Xe?E.createHTML(Yt):Yt;if(gt=Gu(Yt),!gt)return Ye?null:Xe?v:""}gt&&rt&&vo(gt.firstChild);let ns=Ah(tn?Yt:gt);for(;wo=ns.nextNode();)ju(wo),Ls(wo),wo.content instanceof r&&vr(wo.content);if(tn)return Yt;if(Ye){if(dt)for(xs=O.call(gt.ownerDocument);gt.firstChild;)xs.appendChild(gt.firstChild);else xs=gt;return(J.shadowroot||J.shadowrootmode)&&(xs=N.call(i,xs,!0)),xs}let na=Me?gt.outerHTML:gt.innerHTML;return Me&&W["!doctype"]&&gt.ownerDocument&&gt.ownerDocument.doctype&&gt.ownerDocument.doctype.name&&Mc(Tne,gt.ownerDocument.doctype.name)&&(na="<!DOCTYPE "+gt.ownerDocument.doctype.name+`>
`+na),we&&nN([S,w,I],Ua=>{na=Xv(na,Ua," ")}),E&&Xe?E.createHTML(na):na},t.setConfig=function(){let Yt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ln(Yt),Re=!0},t.clearConfig=function(){Oi=null,Re=!1},t.isValidAttribute=function(Yt,Ce,gt){Oi||Ln({});let cn=Si(Yt),wo=Si(Ce);return ud(cn,wo,gt)},t.addHook=function(Yt,Ce){typeof Ce=="function"&&Yv(_[Yt],Ce)},t.removeHook=function(Yt,Ce){if(Ce!==void 0){let gt=KMe(_[Yt],Ce);return gt===-1?void 0:$Me(_[Yt],gt,1)[0]}return une(_[Yt])},t.removeHooks=function(Yt){_[Yt]=[]},t.removeAllHooks=function(){_=gne()},t}var Ane=Cne();var hLe=0,f9={};function Wh(e,t){let n,i=e;l(f9[i])?n=f9[i]:(n=hLe++,f9[i]=n),t=y(t,!1),this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(Wh.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Ane.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});Wh.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};Wh.prototype.equals=function(e){return Wh.equals(this,e)};Wh.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};Wh.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new Wh(e.html,t)};Wh.clone=function(e){if(l(e))return new Wh(e.html,e.showOnScreen)};var vt=Wh;function mLe(e,t){Ct(e,t)}var Qa=mLe;function ax(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new me}Object.defineProperties(ax.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});ax.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function d9(e){e._cubeMapBuffers=void 0}ax.prototype.update=function(e){let{context:t}=e;if(!ax.isSupported(t))return;if(l(this._texture)){d9(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(d9(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;eu(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT);let o=nt.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(Or.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new Zt({minificationFilter:$t.LINEAR_MIPMAP_LINEAR}),u=new Or({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};ax.prototype.isDestroyed=function(){return!1};ax.prototype.destroy=function(){return d9(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var jh=ax;function Qv(e){e=y(e,y.EMPTY_OBJECT);let t=l(e.imageBasedLightingFactor)?U.clone(e.imageBasedLightingFactor):new U(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousImageBasedLightingFactor=U.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(Qv.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=U.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function pLe(e,t){if(jh.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new jh(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}Qv.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber)return;this._previousFrameNumber=e.frameNumber;let t=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;U.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(pLe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};Qv.prototype.isDestroyed=function(){return!1};Qv.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var mC=Qv;var m9=Hr($l(),1);var h9,Ene="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNTZhYmEzOS1hNmFhLTQ1OTAtODk0Mi1lM2U3M2FlMjIxZTMiLCJpZCI6MjU5LCJpYXQiOjE3NDEwMTMyNzF9.J_SThPuEuresJ_TioZat6GbGcDLEruo269cV5QQxiqM",rN={};rN.defaultAccessToken=Ene;rN.defaultServer=new Ee({url:"https://api.cesium.com/"});rN.getDefaultTokenCredit=function(e){if(e===Ene){if(!l(h9)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;h9=new vt(t,!0)}return h9}};var qh=rN;function Fc(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:_Le};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new se("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");Ee.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new m9.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(Fc.prototype=Object.create(Ee.prototype),Fc.prototype.constructor=Fc);Fc.fromAssetId=function(e,t){let n=Fc._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new Fc(i,n)})};Object.defineProperties(Fc.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=Fc.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});Fc.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(vt.getIonCredit),i=qh.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(vt.clone(i)),n};Fc.prototype.clone=function(e){let t=y(this._ionRoot,this);return l(e)||(e=new Fc(t._ionEndpoint,t._ionEndpointResource)),e=Ee.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};Fc.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return Ee.prototype.fetchImage.call(this,e)};Fc.prototype._makeRequest=function(e){return this._isExternal||new m9.default(this.url).authority()!==this._ionEndpointDomain?Ee.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),Ee.prototype._makeRequest.call(this,e))};Fc._createEndpointResource=function(e,t){t=y(t,y.EMPTY_OBJECT);let n=y(t.server,qh.defaultServer),i=y(t.accessToken,qh.defaultAccessToken);n=Ee.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function _Le(e,t){let n=y(e._ionRoot,e),i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var cf=Fc;function Yh(e){e=y(e,0),this._array=new Array(e),this._length=e}Object.defineProperties(Yh.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Yh.prototype.get=function(e){return this._array[e]};Yh.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Yh.prototype.peek=function(){return this._array[this._length-1]};Yh.prototype.push=function(e){let t=this.length++;this._array[t]=e};Yh.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Yh.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Yh.prototype.resize=function(e){this.length=e};Yh.prototype.trim=function(e){e=y(e,this._length),this._array.length=e};var xl=Yh;function sN(e){e=y(e,y.EMPTY_OBJECT),this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}sN.ALL=Object.freeze(new sN({color:new z(0,0,0,0),depth:1,stencil:0}));sN.prototype.execute=function(e,t){e.clear(this,t)};var ai=sN;var vp={X:0,Y:1,Z:2};vp.Y_UP_TO_Z_UP=F.fromRotationTranslation(Z.fromArray([1,0,0,0,0,1,0,-1,0]));vp.Z_UP_TO_Y_UP=F.fromRotationTranslation(Z.fromArray([1,0,0,0,0,-1,0,1,0]));vp.X_UP_TO_Z_UP=F.fromRotationTranslation(Z.fromArray([0,0,1,0,1,0,-1,0,0]));vp.Z_UP_TO_X_UP=F.fromRotationTranslation(Z.fromArray([0,0,-1,0,1,0,1,0,0]));vp.X_UP_TO_Y_UP=F.fromRotationTranslation(Z.fromArray([0,1,0,-1,0,0,0,0,1]));vp.Y_UP_TO_X_UP=F.fromRotationTranslation(Z.fromArray([0,-1,0,1,0,0,0,0,1]));vp.fromName=function(e){return vp[e]};var Vo=Object.freeze(vp);function lf(e){this.planes=y(e,[])}var Jv=[new d,new d,new d];d.clone(d.UNIT_X,Jv[0]);d.clone(d.UNIT_Y,Jv[1]);d.clone(d.UNIT_Z,Jv[2]);var cg=new d,gLe=new d,Sne=new sn(new d(1,0,0),0);lf.fromBoundingSphere=function(e,t){l(t)||(t=new lf);let n=Jv.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=Jv[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new oe),l(f)||(f=i[s+1]=new oe),d.multiplyByScalar(c,-r,cg),d.add(o,cg,cg),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,cg),d.multiplyByScalar(c,r,cg),d.add(o,cg,cg),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,gLe),cg),s+=2}return t};lf.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(sn.fromCartesian4(t[i],Sne));if(r===jt.OUTSIDE)return jt.OUTSIDE;r===jt.INTERSECTING&&(n=!0)}return n?jt.INTERSECTING:jt.INSIDE};lf.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===lf.MASK_OUTSIDE||t===lf.MASK_INSIDE)return t;let n=lf.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(sn.fromCartesian4(i[o],Sne));if(a===jt.OUTSIDE)return lf.MASK_OUTSIDE;a===jt.INTERSECTING&&(n|=s)}return n};lf.MASK_OUTSIDE=4294967295;lf.MASK_INSIDE=0;lf.MASK_INDETERMINATE=2147483647;var As=lf;function Xh(e){e=y(e,y.EMPTY_OBJECT),this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=y(e.near,1),this._near=this.near,this.far=y(e.far,5e8),this._far=this.far,this._cullingVolume=new As,this._orthographicMatrix=new F}function vne(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=F.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(Xh.prototype,{projectionMatrix:{get:function(){return vne(this),this._orthographicMatrix}}});var yLe=new d,xLe=new d,bLe=new d,p9=new d;Xh.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,yLe);d.normalize(f,f);let h=xLe;d.multiplyByScalar(t,c,h),d.add(e,h,h);let p=bLe;d.multiplyByScalar(f,a,p),d.add(h,p,p);let g=i[0];return l(g)||(g=i[0]=new oe),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,p),d.multiplyByScalar(f,s,p),d.add(h,p,p),g=i[1],l(g)||(g=i[1]=new oe),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,p9),p),d.multiplyByScalar(n,r,p),d.add(h,p,p),g=i[2],l(g)||(g=i[2]=new oe),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,p),d.multiplyByScalar(n,o,p),d.add(h,p,p),g=i[3],l(g)||(g=i[3]=new oe),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,p9),p),g=i[4],l(g)||(g=i[4]=new oe),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,p),d.add(e,p,p),g=i[5],l(g)||(g=i[5]=new oe),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,p9),p),this._cullingVolume};Xh.prototype.getPixelDimensions=function(e,t,n,i,o){vne(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};Xh.prototype.clone=function(e){return l(e)||(e=new Xh),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};Xh.prototype.equals=function(e){return l(e)&&e instanceof Xh&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};Xh.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof Xh&&P.equalsEpsilon(this.right,e.right,t,n)&&P.equalsEpsilon(this.left,e.left,t,n)&&P.equalsEpsilon(this.top,e.top,t,n)&&P.equalsEpsilon(this.bottom,e.bottom,t,n)&&P.equalsEpsilon(this.near,e.near,t,n)&&P.equalsEpsilon(this.far,e.far,t,n)};var qr=Xh;function bl(e){e=y(e,y.EMPTY_OBJECT),this._offCenterFrustum=new qr,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=y(e.near,1),this._near=this.near,this.far=y(e.far,5e8),this._far=this.far}bl.packedLength=4;bl.pack=function(e,t,n){return n=y(n,0),t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};bl.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new bl),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function lg(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(bl.prototype,{projectionMatrix:{get:function(){return lg(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return lg(this),this._offCenterFrustum}}});bl.prototype.computeCullingVolume=function(e,t,n){return lg(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};bl.prototype.getPixelDimensions=function(e,t,n,i,o){return lg(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};bl.prototype.clone=function(e){return l(e)||(e=new bl),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};bl.prototype.equals=function(e){return!l(e)||!(e instanceof bl)?!1:(lg(this),lg(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};bl.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof bl)?!1:(lg(this),lg(e),P.equalsEpsilon(this.width,e.width,t,n)&&P.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var an=bl;function wne(e){e=y(e,y.EMPTY_OBJECT),this._metadata=e.metadata}Object.defineProperties(wne.prototype,{metadata:{get:function(){return this._metadata}}});var pC=wne;function ug(e,t,n){return t=y(t,0),n=y(n,e.byteLength-t),e=e.subarray(t,t+n),ug.decode(e)}ug.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};ug.decodeWithFromCharCode=function(e){let t="",n=TLe(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function ew(e,t,n){return t<=e&&e<=n}function TLe(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(ew(u,0,127)){s.push(u);continue}if(ew(u,194,223)){i=1,t=u&31;continue}if(ew(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(ew(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new se("String decoding failed.")}if(!ew(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?ug.decode=ug.decodeWithTextDecoder:ug.decode=ug.decodeWithFromCharCode;var iu=ug;function CLe(e,t){return t=y(t,0),iu(e,t,Math.min(4,e.length))}var Kh=CLe;function uf(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(uf.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var tw=Uint32Array.BYTES_PER_ELEMENT;uf.fromTileType=async function(e,t,n,i,o,r){o=y(o,0);let s=new Uint8Array(i),a=new DataView(i);o+=tw;let c=a.getUint32(o,!0);if(c!==1)throw new se(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=tw,o+=tw;let u=a.getUint32(o,!0);o+=tw;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let x=Kh(s,o),b=a.getUint32(o+tw*2,!0),T=r[x],C=`${f}${m}`,A=n.getDerivedResource({queryParameters:{compositeIndex:C}});if(l(T))h[m]=Promise.resolve(T(e,t,A,i,o));else throw new se(`Unknown tile content type, ${x}, inside Composite tile`);o+=b}let p=await Promise.all(h);return new uf(e,t,n,p)};uf.prototype.hasProperty=function(e,t){return!1};uf.prototype.getFeature=function(e){};uf.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};uf.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};uf.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};uf.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};uf.prototype.isDestroyed=function(){return!1};uf.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var aN=uf;function ALe(e,t,n){return JSON.parse(iu(e,t,n))}var cr=ALe;function Ja(e){this._id=Yn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,kt.maximumTextureSize),r=Math.ceil(t/kt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new U(o,r),i=new oe(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(Ja.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Ja.DEFAULT_COLOR_VALUE=z.WHITE;Ja.DEFAULT_SHOW_VALUE=!0;function Dne(e){let t=e._textureDimensions;return t.x*t.y*4}function Ine(e){if(!l(e._batchValues)){let t=Dne(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Pne(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}Ja.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Pne(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=Ine(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};Ja.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};Ja.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var ELe=new Array(4);Ja.prototype.setColor=function(e,t){if(z.equals(t,Ja.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(ELe),i=n[3],o=Ine(this),r=e*4,s=Pne(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};Ja.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};Ja.prototype.getColor=function(e,t){if(!l(this._batchValues))return z.clone(Ja.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return z.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};Ja.prototype.getPickColor=function(e){return this._pickIds[e]};function One(e,t,n){let i=e._textureDimensions;return new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:Zt.NEAREST})}function SLe(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=Dne(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=z.floatToByte(f.red),r[h+1]=z.floatToByte(f.green),r[h+2]=z.floatToByte(f.blue),r[h+3]=z.floatToByte(f.alpha)}e._pickTexture=One(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function vLe(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}Ja.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&SLe(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=One(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),vLe(this))};Ja.prototype.isDestroyed=function(){return!1};Ja.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Tl=Ja;var wLe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},DLe={SCALAR:void 0,VEC2:U,VEC3:d,VEC4:oe,MAT2:Mi,MAT3:Z,MAT4:F};function ILe(e){let t=e.componentType,n;typeof t=="string"?n=X.fromName(t):n=t;let i=wLe[e.type],o=DLe[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return X.createArrayBufferView(n,r,s,i*a)}}}var ff=ILe;function wp(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,PLe(this,e.extension,e.binaryBody)}Object.defineProperties(wp.prototype,{byteLength:{get:function(){return this._byteLength}}});function PLe(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,p=0;l(c.byteOffset)&&(c.componentType=y(c.componentType,X.UNSIGNED_SHORT),c.type=on.SCALAR,r=ff(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),p+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=y(u.componentType,X.UNSIGNED_SHORT),u.type=on.SCALAR,r=ff(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),p+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];p+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=y(f.componentType,X.UNSIGNED_SHORT),f.type=on.SCALAR,r=ff(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),p+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let T=a[i].length,C=a[i].instances,A=OLe(T,C,n);p+=RLe(A),a[i].instances=At(A,C)}let x=new Array(m).fill(0),b=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],b[i]=x[o],++x[o];p+=b.byteLength,e._classes=a,e._classIds=c,e._classIndexes=b,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=p}function OLe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new se("componentType is required.");if(!l(c))throw new se("type is required.");if(!l(n))throw new se(`Property ${o} requires a batch table binary.`);let u=ff(r),f=u.componentsPerAttribute,h=u.classType,p=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:p,componentCount:f,type:h}}}return i}function RLe(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var MLe=[],LLe=[],NLe=0;function FLe(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=MLe;c.length=Math.max(c.length,a);let u=++NLe,f=LLe;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let p=o[t],g=s[t];for(let m=0;m<p;++m){let x=r[g+m];x!==t&&f.push(x)}}}function BLe(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function nw(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return FLe(e,t,n)}else return n(e,t);return BLe(e,t,n)}wp.prototype.hasProperty=function(e,t){let n=nw(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};wp.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};wp.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,nw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};wp.prototype.getProperty=function(e,t){return nw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?kLe(a,s):He(a[s],!0)})};function kLe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}wp.prototype.setProperty=function(e,t,n){let i=nw(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?VLe(u,c,n):u[c]=He(n,!0),!0});return l(i)};function VLe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}wp.prototype.isClass=function(e,t){let n=nw(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};wp.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var _C=wp;var ULe={HIGHLIGHT:0,REPLACE:1,MIX:2},ou=Object.freeze(ULe);var _9=Tl.DEFAULT_COLOR_VALUE,g9=Tl.DEFAULT_SHOW_VALUE;function fo(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=y(r,{});let s=zLe(n);this._properties=s,this._batchTableHierarchy=HLe(this,n,i);let a=Mne(t,s,i);this._binaryPropertiesByteLength=GLe(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Tl({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}fo._deprecationWarning=Qa;Object.defineProperties(fo.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function zLe(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=He(e[n],!0));return t}function HLe(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(fo._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new _C({extension:i,binaryBody:n})}function Mne(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new se("componentType is required.");if(!l(c))throw new se("type is required.");if(!l(n))throw new se(`Property ${o} requires a batch table binary.`);let u=ff(r),f=u.componentsPerAttribute,h=u.classType,p=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:p,componentCount:f,type:h}}}return i}function GLe(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}fo.getBinaryProperties=function(e,t,n){return Mne(e,t,n)};fo.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};fo.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};fo.prototype.getShow=function(e){return this._batchTexture.getShow(e)};fo.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};fo.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};fo.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};fo.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var WLe=new z;fo.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(_9),this.setAllShow(g9);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?y(e.color.evaluateColor(o,WLe),_9):_9,s=l(e.show)?y(e.show.evaluate(o),g9):g9;this.setColor(i,r),this.setShow(i,s)}};function jLe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function qLe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}fo.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};fo.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};fo.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};fo.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};fo.prototype.hasPropertyBySemantic=function(){return!1};fo.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);return t.push.apply(t,n),l(this._batchTableHierarchy)&&t.push.apply(t,this._batchTableHierarchy.getPropertyIds(e,n)),t};fo.prototype.getPropertyBySemantic=function(e,t){};fo.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return jLe(i,e)}let n=this._properties[t];if(l(n))return He(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};fo.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){qLe(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=He(n,!0)};function YLe(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep;
vec2 computeSt(float batchId)
{
float stepX = tile_textureStep.x;
float centerX = tile_textureStep.y;
return vec2(centerX + (batchId * stepX), 0.5);
}
`:`uniform vec4 tile_textureStep;
uniform vec2 tile_textureDimensions;
vec2 computeSt(float batchId)
{
float stepX = tile_textureStep.x;
float centerX = tile_textureStep.y;
float stepY = tile_textureStep.z;
float centerY = tile_textureStep.w;
float xId = mod(batchId, tile_textureDimensions.x);
float yId = floor(batchId / tile_textureDimensions.x);
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
}
`}fo.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Lne(o,n,!1),s;return kt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand;
`),s+=`uniform sampler2D tile_batchTexture;
out vec4 tile_featureColor;
out vec2 tile_featureSt;
void main()
{
vec2 st = computeSt(${t});
vec4 featureProperties = texture(tile_batchTexture, st);
tile_color(featureProperties);
float show = ceil(featureProperties.a);
gl_Position *= show;
`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0);
if (czm_pass == czm_passTranslucent)
{
if (!isStyleTranslucent && !tile_translucentCommand)
{
gl_Position *= 0.0;
}
}
else
{
if (isStyleTranslucent)
{
gl_Position *= 0.0;
}
}
`),s+=` tile_featureColor = featureProperties;
tile_featureSt = st;
}`):s=`out vec2 tile_featureSt;
void main()
{
tile_color(vec4(1.0));
tile_featureSt = computeSt(${t});
}`,`${r}
${YLe(i)}${s}`}};function Rne(e,t){return e=Ue.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend;
void tile_color(vec4 tile_featureColor)
{
tile_main();
tile_featureColor = czm_gammaCorrect(tile_featureColor);
out_FragColor.a *= tile_featureColor.a;
float highlight = ceil(tile_colorBlend);
out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight);
}
`:`${e}void tile_color(vec4 tile_featureColor)
{
tile_main();
}
`}function XLe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Lne(e,t,n){if(!l(t))return Rne(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return Rne(e,n);let r=o[0],s=o[2];e=Ue.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color)
{
return all(greaterThan(color, vec3(1.0 - czm_epsilon3)));
}
vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse)
{
vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend);
vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse;
return vec4(diffuse.rgb, sourceDiffuse.a);
}
`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor);
out_FragColor.a *= tile_featureColor.a;
float highlight = ceil(tile_colorBlend);
out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight);
`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f};
tile_diffuse = tile_diffuse_final(source, tile_featureColor);
tile_main();
`}else s==="sampler2D"&&(e=XLe(e,t),u=` tile_diffuse = tile_featureColor;
tile_main();
`);return e=`uniform float tile_colorBlend;
vec4 tile_diffuse = vec4(1.0);
${a}${r}
${e}
void tile_color(vec4 tile_featureColor)
{
${u}`,n&&(e+=c),e+=`}
`,e}fo.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Lne(i,t,!0),kt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture;
in vec2 tile_featureSt;
in vec4 tile_featureColor;
void main()
{
tile_color(tile_featureColor);
`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a;
`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand;
`),i+=`uniform sampler2D tile_pickTexture;
uniform sampler2D tile_batchTexture;
in vec2 tile_featureSt;
void main()
{
vec4 featureProperties = texture(tile_batchTexture, tile_featureSt);
if (featureProperties.a == 0.0) {
discard;
}
`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0);
if (czm_pass == czm_passTranslucent)
{
if (!isStyleTranslucent && !tile_translucentCommand)
{
discard;
}
}
else
{
if (isStyleTranslucent)
{
discard;
}
}
`),i+=` tile_color(featureProperties);
`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a;
`),i+=`}
`),i}};fo.prototype.getClassificationFragmentShaderCallback=function(){if(this.featuresLength!==0)return function(e){return e=Ue.replaceMain(e,"tile_main"),kt.maximumVertexTextureImageUnits>0?e+=`uniform sampler2D tile_pickTexture;
in vec2 tile_featureSt;
in vec4 tile_featureColor;
void main()
{
tile_main();
out_FragColor = tile_featureColor;
out_FragColor.rgb *= out_FragColor.a;
}`:e+=`uniform sampler2D tile_batchTexture;
uniform sampler2D tile_pickTexture;
in vec2 tile_featureSt;
void main()
{
tile_main();
vec4 featureProperties = texture(tile_batchTexture, tile_featureSt);
if (featureProperties.a == 0.0) {
discard;
}
out_FragColor = featureProperties;
out_FragColor.rgb *= out_FragColor.a;
}
`,e}};function KLe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===ou.HIGHLIGHT)return 0;if(n===ou.REPLACE)return 1;if(n===ou.MIX)return P.clamp(i,P.EPSILON4,1)}fo.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return At(t,{tile_batchTexture:function(){return y(e._batchTexture.batchTexture,e._batchTexture.defaultTexture)},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return KLe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};fo.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var fg={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};fo.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=$Le(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===ve.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=ZLe(f),f.dirty=!1);let p=h.originalCommand;c!==fg.ALL_OPAQUE&&f.pass!==ve.TRANSLUCENT&&(l(h.translucent)||(h.translucent=QLe(p))),c!==fg.ALL_TRANSLUCENT&&f.pass!==ve.TRANSLUCENT&&(l(h.opaque)||(h.opaque=JLe(p)),a&&(r||(l(h.zback)||(h.zback=tNe(e.context,p)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==iNe(h.stencil))&&(f.renderState.depthMask?h.stencil=nNe(p,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==ve.TRANSLUCENT?(c===fg.ALL_OPAQUE&&(n[u]=g),c===fg.ALL_TRANSLUCENT&&(n[u]=m),c===fg.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=p}};function $Le(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?fg.ALL_OPAQUE:t===e.featuresLength?fg.ALL_TRANSLUCENT:fg.OPAQUE_AND_TRANSLUCENT}function ZLe(e){let t=Qe.shallowClone(e),n=t.pass===ve.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function QLe(e){let t=Qe.shallowClone(e);return t.pass=ve.TRANSLUCENT,t.renderState=oNe(e.renderState),t}function JLe(e){let t=Qe.shallowClone(e);return t.renderState=rNe(e.renderState),t}function eNe(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function tNe(e,t){let n=Qe.shallowClone(t),i=He(n.renderState,!0);i.cull.enabled=!0,i.cull.face=xi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Ut.setCesium3DTileBit(),i.stencilMask=Ut.CESIUM_3D_TILE_MASK,n.renderState=Ve.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=He(t.uniformMap);let o=new U(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=eNe(e,t.shaderProgram),n}function nNe(e,t){let n=Qe.shallowClone(e),i=He(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Ut.SKIP_LOD_MASK,i.stencilTest.reference=Ut.CESIUM_3D_TILE_MASK|t<<Ut.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Hn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=mt.REPLACE,i.stencilTest.backFunction=Hn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=mt.REPLACE,i.stencilMask=Ut.CESIUM_3D_TILE_MASK|Ut.SKIP_LOD_MASK,n.renderState=Ve.fromCache(i),n}function iNe(e){return(e.renderState.stencilTest.reference&Ut.SKIP_LOD_MASK)>>>Ut.SKIP_LOD_BIT_SHIFT}function oNe(e){let t=He(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=fn.ALPHA_BLEND,t.stencilTest=Ut.setCesium3DTileBit(),t.stencilMask=Ut.CESIUM_3D_TILE_MASK,Ve.fromCache(t)}function rNe(e){let t=He(e,!0);return t.stencilTest=Ut.setCesium3DTileBit(),t.stencilMask=Ut.CESIUM_3D_TILE_MASK,Ve.fromCache(t)}fo.prototype.update=function(e,t){this._batchTexture.update(e,t)};fo.prototype.isDestroyed=function(){return!1};fo.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var dg=fo;function sNe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var Dp=sNe;var iw=`in vec3 position;
in float a_batchId;
uniform mat4 u_modifiedModelViewProjection;
void main()
{
gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0));
}
`;function df(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(df.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new z),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});df.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};df.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};df.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};df.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};df.prototype.getPropertyInherited=function(e){return df.getPropertyInherited(this._content,this._batchId,e)};df.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};df.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};df.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};df.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var sa=df;var y9=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},x9=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},Cl=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=`
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},aNe=new y9;Object.assign(Cl,{hooks:aNe,plugins:new x9(Cl),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});Cl.max_unop_len=Cl.getMaxKeyLen(Cl.unary_ops);Cl.max_binop_len=Cl.getMaxKeyLen(Cl.binary_ops);var hg=e=>new Cl(e).parse(),cNe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(Cl).filter(e=>!cNe.includes(e)&&hg[e]===void 0).forEach(e=>{hg[e]=Cl[e]});hg.Jsep=Cl;var lNe="ConditionalExpression",uNe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:lNe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};hg.plugins.register(uNe);var fNe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},yt=Object.freeze(fNe);function Td(e,t){this._expression=e,e=ENe(e,t),e=vNe(SNe(e)),hg.addBinaryOp("=~",0),hg.addBinaryOp("!~",0);let n;try{n=hg(e)}catch(i){throw new se(i)}this._runtimeAst=Ti(this,n)}Object.defineProperties(Td.prototype,{expression:{get:function(){return this._expression}}});var On={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new U],cartesian3Array:[new d],cartesian4Array:[new oe],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new U),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new oe),this.cartesian4Array[this.cartesian4Index++]}};Td.prototype.evaluate=function(e,t){On.reset();let n=this._runtimeAst.evaluate(e);return t instanceof z&&n instanceof oe?z.fromCartesian4(n,t):n instanceof U||n instanceof d||n instanceof oe?n.clone(t):n};Td.prototype.evaluateColor=function(e,t){On.reset();let n=this._runtimeAst.evaluate(e);return z.fromCartesian4(n,t)};Td.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e}
{
return ${o};
}
`,o};Td.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};Td.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var dNe=["!","-","+"],Nne=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],ow=/\${(.*?)}/g,hNe=/\\/g,mNe="@#%",pNe=/@#%/g,uN=new z,fN={abs:Us(Math.abs),sqrt:Us(Math.sqrt),cos:Us(Math.cos),sin:Us(Math.sin),tan:Us(Math.tan),acos:Us(Math.acos),asin:Us(Math.asin),atan:Us(Math.atan),radians:Us(P.toRadians),degrees:Us(P.toDegrees),sign:Us(P.sign),floor:Us(Math.floor),ceil:Us(Math.ceil),round:Us(Math.round),exp:Us(Math.exp),exp2:Us(gNe),log:Us(Math.log),log2:Us(yNe),fract:Us(_Ne),length:xNe,normalize:bNe},dN={atan2:cN(Math.atan2,!1),pow:cN(Math.pow,!1),min:cN(Math.min,!0),max:cN(Math.max,!0),distance:TNe,dot:CNe,cross:ANe},C9={clamp:Fne(P.clamp,!0),mix:Fne(P.lerp,!0)};function _Ne(e){return e-Math.floor(e)}function gNe(e){return Math.pow(2,e)}function yNe(e){return P.log2(e)}function Us(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof U)return U.fromElements(e(n.x),e(n.y),On.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),On.getCartesian3());if(n instanceof oe)return oe.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),On.getCartesian4());throw new se(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function cN(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof U)return U.fromElements(e(i.x,o),e(i.y,o),On.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),On.getCartesian3());if(i instanceof oe)return oe.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),On.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x),e(i.y,o.y),On.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),On.getCartesian3());if(i instanceof oe&&o instanceof oe)return oe.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),On.getCartesian4());throw new se(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function Fne(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),On.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),On.getCartesian3());if(i instanceof oe&&o instanceof oe)return oe.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),On.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof U&&o instanceof U&&r instanceof U)return U.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),On.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),On.getCartesian3());if(i instanceof oe&&o instanceof oe&&r instanceof oe)return oe.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),On.getCartesian4());throw new se(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function xNe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof U)return U.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof oe)return oe.magnitude(t);throw new se(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function bNe(e,t){if(typeof t=="number")return 1;if(t instanceof U)return U.normalize(t,On.getCartesian2());if(t instanceof d)return d.normalize(t,On.getCartesian3());if(t instanceof oe)return oe.normalize(t,On.getCartesian4());throw new se(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function TNe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof U&&n instanceof U)return U.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof oe&&n instanceof oe)return oe.distance(t,n);throw new se(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function CNe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof U&&n instanceof U)return U.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof oe&&n instanceof oe)return oe.dot(t,n);throw new se(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function ANe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,On.getCartesian3());throw new se(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Et(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,FNe(this)}function ENe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function SNe(e){return e.replace(hNe,mNe)}function T9(e){return e.replace(pNe,"\\")}function vNe(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new se("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function wNe(e){let t=typeof e.value;if(e.value===null)return new Et(yt.LITERAL_NULL,null);if(t==="boolean")return new Et(yt.LITERAL_BOOLEAN,e.value);if(t==="number")return new Et(yt.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Et(yt.VARIABLE_IN_STRING,e.value):new Et(yt.LITERAL_STRING,T9(e.value))}function DNe(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new se(`${o} is not a function.`);return i===0?o==="test"?new Et(yt.LITERAL_BOOLEAN,!1):new Et(yt.LITERAL_NULL,null):(s=Ti(e,c),a=Ti(e,n[0]),new Et(yt.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Ti(e,c),new Et(yt.FUNCTION_CALL,o,r);throw new se(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Et(yt.LITERAL_COLOR,o);if(r=Ti(e,n[0]),l(n[1])){let c=Ti(e,n[1]);return new Et(yt.LITERAL_COLOR,o,[r,c])}return new Et(yt.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new se(`${o} requires three arguments.`);return r=[Ti(e,n[0]),Ti(e,n[1]),Ti(e,n[2])],new Et(yt.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new se(`${o} requires four arguments.`);return r=[Ti(e,n[0]),Ti(e,n[1]),Ti(e,n[2]),Ti(e,n[3])],new Et(yt.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Ti(e,n[c]);return new Et(yt.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Et(yt.LITERAL_BOOLEAN,!0):new Et(yt.LITERAL_BOOLEAN,!1):(r=Ti(e,n[0]),new Et(yt.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new se(`${o} requires exactly one argument.`);return r=Ti(e,n[0]),new Et(yt.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new se(`${o} does not take any argument.`);return new Et(yt.UNARY,o)}else if(l(fN[o])){if(i!==1)throw new se(`${o} requires exactly one argument.`);return r=Ti(e,n[0]),new Et(yt.UNARY,o,r)}else if(l(dN[o])){if(i!==2)throw new se(`${o} requires exactly two arguments.`);return s=Ti(e,n[0]),a=Ti(e,n[1]),new Et(yt.BINARY,o,s,a)}else if(l(C9[o])){if(i!==3)throw new se(`${o} requires exactly three arguments.`);s=Ti(e,n[0]),a=Ti(e,n[1]);let c=Ti(e,n[2]);return new Et(yt.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Et(yt.LITERAL_BOOLEAN,!1):(r=Ti(e,n[0]),new Et(yt.UNARY,o,r));if(o==="Number")return i===0?new Et(yt.LITERAL_NUMBER,0):(r=Ti(e,n[0]),new Et(yt.UNARY,o,r));if(o==="String")return i===0?new Et(yt.LITERAL_STRING,""):(r=Ti(e,n[0]),new Et(yt.UNARY,o,r));if(o==="regExp")return INe(e,t)}}throw new se(`Unexpected function call "${o}".`)}function INe(e,t){let n=t.arguments;if(n.length===0)return new Et(yt.LITERAL_REGEX,new RegExp);let i=Ti(e,n[0]),o;if(n.length>1){let r=Ti(e,n[1]);if(b9(i)&&b9(r)){try{o=new RegExp(T9(String(i._value)),r._value)}catch(s){throw new se(s)}return new Et(yt.LITERAL_REGEX,o)}return new Et(yt.REGEX,i,r)}if(b9(i)){try{o=new RegExp(T9(String(i._value)))}catch(r){throw new se(r)}return new Et(yt.LITERAL_REGEX,o)}return new Et(yt.REGEX,i)}function PNe(e){if(LNe(e.name)){let t=NNe(e.name);return t.substr(0,8)==="tiles3d_"?new Et(yt.BUILTIN_VARIABLE,t):new Et(yt.VARIABLE,t)}else{if(e.name==="NaN")return new Et(yt.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Et(yt.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Et(yt.LITERAL_UNDEFINED,void 0)}throw new se(`${e.name} is not defined.`)}function ONe(e){let t=e.property.name;if(t==="PI")return new Et(yt.LITERAL_NUMBER,Math.PI);if(t==="E")return new Et(yt.LITERAL_NUMBER,Math.E)}function RNe(e){if(e.property.name==="POSITIVE_INFINITY")return new Et(yt.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function MNe(e,t){if(t.object.name==="Math")return ONe(t);if(t.object.name==="Number")return RNe(t);let n,i=Ti(e,t.object);return t.computed?(n=Ti(e,t.property),new Et(yt.MEMBER,"brackets",i,n)):(n=new Et(yt.LITERAL_STRING,t.property.name),new Et(yt.MEMBER,"dot",i,n))}function b9(e){return e._type>=yt.LITERAL_NULL}function LNe(e){return e.substr(0,4)==="czm_"}function NNe(e){return e.substr(4)}function Ti(e,t){let n,i,o,r;if(t.type==="Literal")n=wNe(t);else if(t.type==="CallExpression")n=DNe(e,t);else if(t.type==="Identifier")n=PNe(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Ti(e,t.argument);if(dNe.indexOf(i)>-1)n=new Et(yt.UNARY,i,s);else throw new se(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Ti(e,t.left),r=Ti(e,t.right),Nne.indexOf(i)>-1)n=new Et(yt.BINARY,i,o,r);else throw new se(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Ti(e,t.left),r=Ti(e,t.right),Nne.indexOf(i)>-1&&(n=new Et(yt.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Ti(e,t.test);o=Ti(e,t.consequent),r=Ti(e,t.alternate),n=new Et(yt.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=MNe(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Ti(e,t.elements[a]);n=new Et(yt.ARRAY,s)}else throw t.type==="Compound"?new se("Provide exactly one expression."):new se("Cannot parse expression.");return n}function FNe(e){e._type===yt.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===yt.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===yt.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(fN[e._value])&&(e.evaluate=kNe(e._value)):e._type===yt.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(dN[e._value])&&(e.evaluate=VNe(e._value)):e._type===yt.TERNARY?e.evaluate=UNe(e._value):e._type===yt.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===yt.ARRAY?e.evaluate=e._evaluateArray:e._type===yt.VARIABLE?e.evaluate=e._evaluateVariable:e._type===yt.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===yt.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===yt.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===yt.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===yt.REGEX?e.evaluate=e._evaluateRegExp:e._type===yt.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=BNe):e.evaluate=e._evaluateLiteral}function BNe(e){return l(e)?e.content.tileset.timeSinceLoad:0}function kNe(e){let t=fN[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function VNe(e){let t=dN[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function UNe(e){let t=C9[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function hN(e,t){if(l(e))return e.getPropertyInherited(t)}Et.prototype._evaluateLiteral=function(){return this._value};Et.prototype._evaluateLiteralColor=function(e){let t=uN,n=this._left;if(this._value==="color")l(n)?n.length>1?(z.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):z.fromCssColorString(n[0].evaluate(e),t):z.fromBytes(255,255,255,255,t);else if(this._value==="rgb")z.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;z.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?z.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&z.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return oe.fromColor(t,On.getCartesian4())};Et.prototype._evaluateLiteralVector=function(e){let t=On.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof U)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof oe)t.push(c.x,c.y,c.z,c.w);else throw new se(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new se(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new se(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new se(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return U.fromArray(t,0,On.getCartesian2());if(n==="vec3")return d.fromArray(t,0,On.getCartesian3());if(n==="vec4")return oe.fromArray(t,0,On.getCartesian4())};Et.prototype._evaluateLiteralString=function(){return this._value};Et.prototype._evaluateVariableString=function(e){let t=this._value,n=ow.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=hN(e,o);l(r)||(r=""),t=t.replace(i,r),ow.lastIndex+=r.length-i.length,n=ow.exec(t)}return t};Et.prototype._evaluateVariable=function(e){return hN(e,this._value)};function cx(e){return e._value==="feature"}Et.prototype._evaluateMemberDot=function(e){if(cx(this._left))return hN(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof oe){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Et.prototype._evaluateMemberBrackets=function(e){if(cx(this._left))return hN(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof oe){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Et.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Et.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new se(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Et.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof U)return U.negate(t,On.getCartesian2());if(t instanceof d)return d.negate(t,On.getCartesian3());if(t instanceof oe)return oe.negate(t,On.getCartesian4());if(typeof t=="number")return-t;throw new se(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Et.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof U||t instanceof d||t instanceof oe||typeof t=="number"))throw new se(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Et.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new se(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Et.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new se(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Et.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new se(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Et.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new se(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Et.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new se(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new se(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Et.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new se(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new se(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Et.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.add(t,n,On.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,On.getCartesian3());if(n instanceof oe&&t instanceof oe)return oe.add(t,n,On.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new se(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.subtract(t,n,On.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,On.getCartesian3());if(n instanceof oe&&t instanceof oe)return oe.subtract(t,n,On.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new se(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.multiplyComponents(t,n,On.getCartesian2());if(n instanceof U&&typeof t=="number")return U.multiplyByScalar(n,t,On.getCartesian2());if(t instanceof U&&typeof n=="number")return U.multiplyByScalar(t,n,On.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,On.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,On.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,On.getCartesian3());if(n instanceof oe&&t instanceof oe)return oe.multiplyComponents(t,n,On.getCartesian4());if(n instanceof oe&&typeof t=="number")return oe.multiplyByScalar(n,t,On.getCartesian4());if(t instanceof oe&&typeof n=="number")return oe.multiplyByScalar(t,n,On.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new se(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.divideComponents(t,n,On.getCartesian2());if(t instanceof U&&typeof n=="number")return U.divideByScalar(t,n,On.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,On.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,On.getCartesian3());if(n instanceof oe&&t instanceof oe)return oe.divideComponents(t,n,On.getCartesian4());if(t instanceof oe&&typeof n=="number")return oe.divideByScalar(t,n,On.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new se(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.fromElements(t.x%n.x,t.y%n.y,On.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,On.getCartesian3());if(n instanceof oe&&t instanceof oe)return oe.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,On.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new se(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof oe&&t instanceof oe?t.equals(n):t===n};Et.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof oe&&t instanceof oe?!t.equals(n):t!==n};Et.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new se(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Et.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Et.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Et.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Et.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Et.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Et.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Et.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Et.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Et.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new se(o)}return i};Et.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new se(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Et.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new se(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new se(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Et.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new se(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Et.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof U||t instanceof d||t instanceof oe)return String(t);throw new se(`Unexpected function call "${this._value}".`)};function Bne(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==yt.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return z.fromHsl(i,o,r,s,uN)}function kne(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==yt.LITERAL_NUMBER)return;let i=uN;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function mg(e){return e%1===0?e.toFixed(1):e.toString()}function zNe(e){let t=mg(e.red),n=mg(e.green),i=mg(e.blue);return`vec3(${t}, ${n}, ${i})`}function lN(e){let t=mg(e.red),n=mg(e.green),i=mg(e.blue),o=mg(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Vne(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function Une(e,t){return l(t[e])?t[e]:Td.NULL_SENTINEL}Td.NULL_SENTINEL="czm_infinity";Et.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Vne(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Vne(this._value,e,t,this));let u,f,h;switch(a){case yt.VARIABLE:return cx(this)?void 0:Une(c,e);case yt.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(fN[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new se(`Error generating style shader: "${c}" is not supported.`);return c+o;case yt.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(dN[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case yt.TERNARY:if(l(C9[c]))return`${c}(${o}, ${r}, ${s})`;break;case yt.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case yt.MEMBER:return cx(this._left)?Une(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case yt.FUNCTION_CALL:throw new se(`Error generating style shader: "${c}" is not supported.`);case yt.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new se("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case yt.REGEX:throw new se("Error generating style shader: Regular expressions are not supported.");case yt.VARIABLE_IN_STRING:throw new se("Error generating style shader: Converting a variable to a string is not supported.");case yt.LITERAL_NULL:return Td.NULL_SENTINEL;case yt.LITERAL_BOOLEAN:return c?"true":"false";case yt.LITERAL_NUMBER:return mg(c);case yt.LITERAL_STRING:if(l(n)&&n._type===yt.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||cx(n._left)))return c;if(i=z.fromCssColorString(c,uN),l(i))return zNe(i);throw new se("Error generating style shader: String literals are not supported.");case yt.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let p=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${p}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=kne(this),l(i)?lN(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=kne(this),l(i)?lN(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Bne(this),l(i)?lN(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Bne(this),l(i)?(i.alpha!==1&&(t.translucent=!0),lN(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case yt.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let p=0;p<f;++p)h+=o[p],p<f-1&&(h+=", ");return h+=")",h;case yt.LITERAL_REGEX:throw new se("Error generating style shader: Regular expressions are not supported.");case yt.LITERAL_UNDEFINED:return Td.NULL_SENTINEL;case yt.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Et.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case yt.VARIABLE:cx(this)||e.push(s);break;case yt.VARIABLE_IN_STRING:for(a=ow.exec(s);a!==null;)e.push(a[1]),a=ow.exec(s);break;case yt.LITERAL_STRING:l(t)&&t._type===yt.MEMBER&&cx(t._left)&&e.push(s);break}};var Cd=Td;function Ip(e){e=y(e,y.EMPTY_OBJECT),this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=y(e.center,d.ZERO),this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=z.clone(z.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=y(e.classificationType,zn.BOTH),this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(Ip.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var HNe={position:0,a_batchId:1};function GNe(e,t){if(l(e._va))return;let n=Tt.createVertexBuffer({context:t,typedArray:e._positions,usage:ke.STATIC_DRAW}),i=Tt.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:ke.STATIC_DRAW}),o=Tt.createIndexBuffer({context:t,typedArray:e._indices,usage:ke.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Be.UNSIGNED_SHORT:Be.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:X.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:X.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new oi({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new oi({context:t,attributes:r,indexBuffer:Tt.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:ke.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function WNe(e,t){if(l(e._sp))return;let n=e._batchTable,i=y(e._attributeLocations,HNe),o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=Jt.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=Ue.replaceMain(s,"czm_non_pick_main"),s=`${s}void main()
{
czm_non_pick_main();
out_FragColor = ${o};
}
`,e._spPick=Jt.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(iw),c=n.getFragmentShaderCallback(!1,void 0,!0)(Z0);o=n.getPickId();let u=new Ue({sources:[a]}),f=new Ue({defines:["VECTOR_TILE"],sources:[c]});e._sp=Jt.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new Ue({sources:[iw]}),f=new Ue({defines:["VECTOR_TILE"],sources:[Z0]}),e._spStencil=Jt.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=Ue.replaceMain(c,"czm_non_pick_main"),c=`${c}
void main()
{
czm_non_pick_main();
out_FragColor = ${o};
}
`;let h=new Ue({sources:[a]}),p=new Ue({defines:["VECTOR_TILE"],sources:[c]});e._spPick=Jt.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:i})}function zne(e){let t=e?Hn.EQUAL:Hn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:mt.KEEP,zFail:mt.DECREMENT_WRAP,zPass:mt.KEEP},backFunction:t,backOperation:{fail:mt.KEEP,zFail:mt.INCREMENT_WRAP,zPass:mt.KEEP},reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Dc.LESS_OR_EQUAL},depthMask:!1}}var jNe={stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:fn.PRE_MULTIPLIED_ALPHA_BLEND},qNe={stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function YNe(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ve.fromCache(zne(!1)),e._rsStencilDepthPass3DTiles=Ve.fromCache(zne(!0)),e._rsColorPass=Ve.fromCache(jNe),e._rsPickPass=Ve.fromCache(qNe))}var lx=new F,Hne=new d;function XNe(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return F.clone(i,lx),F.multiplyByPoint(lx,e._center,Hne),F.setTranslation(lx,Hne,lx),F.multiply(o,lx,lx),lx},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function A9(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],p=i[h],g=o[h],m=new e.constructor(e.buffer,a*p,g);t.set(m,n),i[h]=n,n+=g}return n}function KNe(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=A9(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(z.equals(f.color,a.color))u=A9(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=A9(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function E9(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],p=i[h],g=o[h];t.copyFromBuffer(e,p*a,n*a,g*a),i[h]=n,n+=g}return n}function $Ne(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=E9(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(z.equals(h.color,r.color))u=E9(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let p=u;u=E9(a,c,u,n,i,h.batchIds,o),h.offset=p,h.count=u-p,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function ZNe(e,t){return t.color.toRgba()-e.color.toRgba()}function QNe(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(ZNe),t.webgl2?$Ne(e,n):KNe(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function JNe(e,t){let n=QNe(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=y(e._modelMatrix,F.IDENTITY),f=e._uniformMap,h=e._boundingVolume;for(let p=0;p<r;++p){let g=o[p].offset,m=o[p].count,x=i[p*2];l(x)||(x=i[p*2]=new Qe({owner:e})),x.vertexArray=a,x.modelMatrix=u,x.offset=g,x.count=m,x.renderState=e._rsStencilDepthPass,x.shaderProgram=c,x.uniformMap=f,x.boundingVolume=h,x.cull=!1,x.pass=ve.TERRAIN_CLASSIFICATION;let b=Qe.shallowClone(x,x.derivedCommands.tileset);b.renderState=e._rsStencilDepthPass3DTiles,b.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,x.derivedCommands.tileset=b;let T=i[p*2+1];l(T)||(T=i[p*2+1]=new Qe({owner:e})),T.vertexArray=a,T.modelMatrix=u,T.offset=g,T.count=m,T.renderState=e._rsColorPass,T.shaderProgram=c,T.uniformMap=f,T.boundingVolume=h,T.cull=!1,T.pass=ve.TERRAIN_CLASSIFICATION;let C=Qe.shallowClone(T,T.derivedCommands.tileset);C.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,T.derivedCommands.tileset=C}e._commandsDirty=!0}function eFe(e,t){if(e.classificationType===zn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=Qe.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=ve.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function tFe(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=y(e._modelMatrix,F.IDENTITY),a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,p=n[c*2];l(p)||(p=n[c*2]=new Qe({owner:e,pickOnly:!0})),p.vertexArray=i,p.modelMatrix=s,p.offset=u,p.count=f,p.renderState=e._rsStencilDepthPass,p.shaderProgram=o,p.uniformMap=a,p.boundingVolume=h,p.pass=ve.TERRAIN_CLASSIFICATION;let g=Qe.shallowClone(p,p.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,p.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new Qe({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=ve.TERRAIN_CLASSIFICATION;let x=Qe.shallowClone(m,m.derivedCommands.tileset);x.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=x}e._pickCommandsDirty=!1}Ip.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new sa(e,r)}};Ip.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function nFe(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=z.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=z.clone(z.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var iFe=new z,oFe=z.WHITE,rFe=!0,sFe=/\$/;Ip.prototype.applyStyle=function(e,t){if(!l(e)){nFe(this,t);return}let n=e.color,i=n instanceof Cd&&!sFe.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,iFe):oFe,c.show=l(e.show)?e.show.evaluate(c):rFe}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=z.clone(z.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};Ip.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let x=c[f].offset,b=c[f].count;if(s>=x&&s<x+b)break}c.push(new Dp({color:z.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],p=[],g=c[f].batchIds,m=g.length;for(let x=0;x<m;++x){let b=g[x];if(b===e)continue;let T=n[b];o[T]<s?h.push(b):p.push(b)}p.length!==0&&c.push(new Dp({color:z.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:p})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function Gne(e,t,n,i){let o=e.classificationType,r=o!==zn.CESIUM_3D_TILE,s=o!==zn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=ve.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function aFe(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=ve.OPAQUE,n.push(r)}}function cFe(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ve.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Ne.LINES):(n=e._rsColorPass,i=Ne.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}Ip.prototype.update=function(e){let t=e.context;GNe(this,t),WNe(this,t),YNe(this),XNe(this,t);let n=e.passes;n.render&&(JNe(this,t),eFe(this,e),cFe(this),this._debugWireframe?aFe(e,this._commands):Gne(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(tFe(this),Gne(this,e,this._pickCommands))};Ip.prototype.isDestroyed=function(){return!1};Ip.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var gC=Ip;function ru(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=zn.BOTH}Object.defineProperties(ru.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});ru.packedBoxLength=F.packedLength+d.packedLength;ru.packedCylinderLength=F.packedLength+2;ru.packedEllipsoidLength=F.packedLength+d.packedLength;ru.packedSphereLength=d.packedLength+1;function lFe(e){let t=new Float64Array(F.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,F.pack(e._modelMatrix,t,n),t}function uFe(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=ce.unpack(t,n),n+=ce.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=z.unpack(t,n);n+=z.packedLength;let f=t[n++],h=t[n++],p=t[n++],g=new Array(p);for(let m=0;m<p;++m)g[m]=t[n++];a[c]=new Dp({color:u,offset:f,count:h,batchIds:g})}return i}var fFe=new bi("createVectorTileGeometries",5),dFe=new z;function hFe(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let x=e._batchTable;for(let b=0;b<m;++b){let T=x.getColor(b,dFe);u[b]=T.toRgba()}f=e._packedBuffer=lFe(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let p={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=fFe.scheduleTask(p,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let x=new Float64Array(m.packedBuffer);uFe(e,x)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),mFe(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function mFe(e){l(e._primitive)||(e._primitive=new gC({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:y(e._pickObject,e)}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}ru.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};ru.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};ru.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};ru.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};ru.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=hFe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};ru.prototype.isDestroyed=function(){return!1};ru.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var pg=ru;function $h(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,gFe(this,i,o)}Object.defineProperties($h.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function pFe(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function _Fe(e,t){let n,i,o,r,s,a=y(e.BOXES_LENGTH,0),c=y(e.CYLINDERS_LENGTH,0),u=y(e.ELLIPSOIDS_LENGTH,0),f=y(e.SPHERES_LENGTH,0);if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),p=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&p)throw new se("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var ux=Uint32Array.BYTES_PER_ELEMENT;function gFe(e,t,n){n=y(n,0);let i=new Uint8Array(t),o=new DataView(t);n+=ux;let r=o.getUint32(n,!0);if(r!==1)throw new se(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=ux;let s=o.getUint32(n,!0);if(n+=ux,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=ux,a===0)throw new se("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=ux;let u=o.getUint32(n,!0);n+=ux;let f=o.getUint32(n,!0);n+=ux;let h=cr(i,n,a);n+=a;let p=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=cr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let x=y(h.BOXES_LENGTH,0),b=y(h.CYLINDERS_LENGTH,0),T=y(h.ELLIPSOIDS_LENGTH,0),C=y(h.SPHERES_LENGTH,0),A=x+b+T+C,E=new dg(e,A,g,m,pFe(e));if(e._batchTable=E,A===0)return;let v=e.tile.computedTransform,D;l(h.RTC_CENTER)&&(D=d.unpack(h.RTC_CENTER),F.multiplyByPoint(v,D,D));let R=_Fe(h,p);if(x>0||b>0||T>0||C>0){let O,M,N,_;if(x>0){let S=p.byteOffset+h.BOXES.byteOffset;O=new Float32Array(p.buffer,S,pg.packedBoxLength*x)}if(b>0){let S=p.byteOffset+h.CYLINDERS.byteOffset;M=new Float32Array(p.buffer,S,pg.packedCylinderLength*b)}if(T>0){let S=p.byteOffset+h.ELLIPSOIDS.byteOffset;N=new Float32Array(p.buffer,S,pg.packedEllipsoidLength*T)}if(C>0){let S=p.byteOffset+h.SPHERES.byteOffset;_=new Float32Array(p.buffer,S,pg.packedSphereLength*C)}return e._geometries=new pg({boxes:O,boxBatchIds:R.boxes,cylinders:M,cylinderBatchIds:R.cylinders,ellipsoids:N,ellipsoidBatchIds:R.ellipsoids,spheres:_,sphereBatchIds:R.spheres,center:D,modelMatrix:v,batchTable:E,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function Wne(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}$h.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};$h.prototype.getFeature=function(e){return Wne(this),this._features[e]};$h.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};$h.prototype.applyStyle=function(e){Wne(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};$h.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};$h.prototype.pick=function(e,t,n){};$h.prototype.isDestroyed=function(){return!1};$h.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var mN=$h;var S9={};S9.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),jne(i,o,r,s);return c};S9.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),jne(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function jne(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var rw=S9;var fx=30,yFe=1<<fx,xFe=1<<fx+1>>>0,v9=2*fx+1,_g=4,Xne=[],Kne=[],bFe=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],gg=1,yC=2,pN=[gg,0,0,gg|yC];function Yr(e){if(!Ht.supportsBigInt())throw new se("S2 required BigInt support");this._cellId=e,this._level=Yr.getLevel(e)}Yr.fromToken=function(e){return new Yr(Yr.getIdFromToken(e))};Yr.isValidId=function(e){return!(e<=0||e>>BigInt(v9)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};Yr.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?Yr.isValidId(Yr.getIdFromToken(e)):!1};Yr.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};Yr.getTokenFromId=function(e){let t=Math.floor(PFe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};Yr.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return fx-(t>>1)};Yr.prototype.getChild=function(e){let t=Qne(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new Yr(n)};Yr.prototype.getParent=function(){let e=Qne(this._cellId)<<BigInt(2);return new Yr(this._cellId&~e+BigInt(1)|e)};Yr.prototype.getParentAtLevel=function(e){let t=DFe(e);return new Yr(this._cellId&-t|t)};Yr.prototype.getCenter=function(e){e=y(e,ee.WGS84);let t=TFe(this._cellId,this._level);t=d.normalize(t,t);let n=new fe.fromCartesian(t,ee.UNIT_SPHERE);return fe.toCartesian(n,e,new d)};Yr.prototype.getVertex=function(e,t){t=y(t,ee.WGS84);let n=CFe(this._cellId,this._level,e);n=d.normalize(n,n);let i=new fe.fromCartesian(n,ee.UNIT_SPHERE);return fe.toCartesian(i,t,new d)};Yr.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(v9-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new Yr(a)};function TFe(e,t){let n=AFe(e,t);return EFe(n[0],n[1],n[2])}function CFe(e,t,n){let i=$ne(e,t),o=SFe([i[1],i[2]],t),r=n>>1&1;return Zne(i[0],o[0][r^n&1],o[1][r])}function AFe(e,t){let n=$ne(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function $ne(e){Xne.length===0&&wFe();let t=Number(e>>BigInt(v9)),n=t&gg,i=(1<<_g)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?fx-7*_g:_g))-1;n+=Number(e>>BigInt(s*2*_g+1)&BigInt(c))<<2,n=Kne[n];let u=s*_g;o+=n>>_g+2<<u,r+=(n>>2&i)<<u,n&=gg|yC}return[t,o,r]}function EFe(e,t,n){let i=qne(t),o=qne(n),r=_N(i),s=_N(o);return Zne(e,r,s)}function Zne(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function _N(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function qne(e){return 1/xFe*e}function SFe(e,t){let n=[[],[]],i=vFe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=_N(Yne(r)),n[o][1]=_N(Yne(s))}return n}function vFe(e){return 1<<fx-e>>>0}function Yne(e){return 1/yFe*e}function yg(e,t,n,i,o,r){if(e===_g){let s=(t<<_g)+n;Xne[(s<<2)+i]=(o<<2)+r,Kne[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=bFe[r];yg(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^pN[0]),yg(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^pN[1]),yg(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^pN[2]),yg(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^pN[3])}}function wFe(){yg(0,0,0,0,0,0),yg(0,0,0,gg,0,gg),yg(0,0,0,yC,0,yC),yg(0,0,0,gg|yC,0,gg|yC)}function Qne(e){return e&~e+BigInt(1)}function DFe(e){return BigInt(1)<<BigInt(2*(fx-e))}var IFe=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function PFe(e){return IFe[(-e&e)%BigInt(67)]}var xg=Yr;function OFe(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var ci=OFe;function w9(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new se(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=y(e.computeAvailableCountEnabled,!1);!l(n)&&s&&(n=RFe(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function RFe(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(w9.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});w9.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var sw=w9;function Pp(e){e=y(e,y.EMPTY_OBJECT);let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(Pp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Pp.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};Pp.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};Pp.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};Pp.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};Pp.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};Pp.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};Pp.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var aw=Pp;var gN={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};gN.getBranchingFactor=function(e){switch(e){case gN.OCTREE:return 8;case gN.QUADTREE:return 4}};var ss=Object.freeze(gN);function aa(){}Object.defineProperties(aa.prototype,{class:{get:function(){de.throwInstantiationError()}}});aa.prototype.hasProperty=function(e){de.throwInstantiationError()};aa.prototype.hasPropertyBySemantic=function(e){de.throwInstantiationError()};aa.prototype.getPropertyIds=function(e){de.throwInstantiationError()};aa.prototype.getProperty=function(e){de.throwInstantiationError()};aa.prototype.setProperty=function(e,t){de.throwInstantiationError()};aa.prototype.getPropertyBySemantic=function(e){de.throwInstantiationError()};aa.prototype.setPropertyBySemantic=function(e,t){de.throwInstantiationError()};aa.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};aa.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};aa.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};aa.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=He(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};aa.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};aa.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return aa.getProperty(o.id,t,n)};aa.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?aa.setProperty(r.id,t,n,i):!1};var Vn=aa;function Op(e){e=y(e,y.EMPTY_OBJECT);let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Op.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Op.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};Op.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};Op.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};Op.prototype.getProperty=function(e){return Vn.getProperty(e,this._properties,this._class)};Op.prototype.setProperty=function(e,t){return Vn.setProperty(e,t,this._properties,this._class)};Op.prototype.getPropertyBySemantic=function(e){return Vn.getPropertyBySemantic(e,this._properties,this._class)};Op.prototype.setPropertyBySemantic=function(e,t){return Vn.setPropertyBySemantic(e,t,this._properties,this._class)};var yN=Op;var Nt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Nt.getMinimum=function(e){switch(e){case Nt.INT8:return-128;case Nt.UINT8:return 0;case Nt.INT16:return-32768;case Nt.UINT16:return 0;case Nt.INT32:return-2147483648;case Nt.UINT32:return 0;case Nt.INT64:return Ht.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Nt.UINT64:return Ht.supportsBigInt()?BigInt(0):0;case Nt.FLOAT32:return-34028234663852886e22;case Nt.FLOAT64:return-Number.MAX_VALUE}};Nt.getMaximum=function(e){switch(e){case Nt.INT8:return 127;case Nt.UINT8:return 255;case Nt.INT16:return 32767;case Nt.UINT16:return 65535;case Nt.INT32:return 2147483647;case Nt.UINT32:return 4294967295;case Nt.INT64:return Ht.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Nt.UINT64:return Ht.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Nt.FLOAT32:return 34028234663852886e22;case Nt.FLOAT64:return Number.MAX_VALUE}};Nt.isIntegerType=function(e){switch(e){case Nt.INT8:case Nt.UINT8:case Nt.INT16:case Nt.UINT16:case Nt.INT32:case Nt.UINT32:case Nt.INT64:case Nt.UINT64:return!0;default:return!1}};Nt.isUnsignedIntegerType=function(e){switch(e){case Nt.UINT8:case Nt.UINT16:case Nt.UINT32:case Nt.UINT64:return!0;default:return!1}};Nt.isVectorCompatible=function(e){switch(e){case Nt.INT8:case Nt.UINT8:case Nt.INT16:case Nt.UINT16:case Nt.INT32:case Nt.UINT32:case Nt.FLOAT32:case Nt.FLOAT64:return!0;default:return!1}};Nt.normalize=function(e,t){return Math.max(Number(e)/Number(Nt.getMaximum(t)),-1)};Nt.unnormalize=function(e,t){let n=Nt.getMaximum(t),i=Nt.isUnsignedIntegerType(t)?0:-n;return e=P.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Nt.INT64||t===Nt.UINT64)&&Ht.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Nt.applyValueTransform=function(e,t,n){return n*e+t};Nt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Nt.getSizeInBytes=function(e){switch(e){case Nt.INT8:case Nt.UINT8:return 1;case Nt.INT16:case Nt.UINT16:return 2;case Nt.INT32:case Nt.UINT32:return 4;case Nt.INT64:case Nt.UINT64:return 8;case Nt.FLOAT32:return 4;case Nt.FLOAT64:return 8}};Nt.fromComponentDatatype=function(e){switch(e){case X.BYTE:return Nt.INT8;case X.UNSIGNED_BYTE:return Nt.UINT8;case X.SHORT:return Nt.INT16;case X.UNSIGNED_SHORT:return Nt.UINT16;case X.INT:return Nt.INT32;case X.UNSIGNED_INT:return Nt.UINT32;case X.FLOAT:return Nt.FLOAT32;case X.DOUBLE:return Nt.FLOAT64}};Nt.toComponentDatatype=function(e){switch(e){case Nt.INT8:return X.BYTE;case Nt.UINT8:return X.UNSIGNED_BYTE;case Nt.INT16:return X.SHORT;case Nt.UINT16:return X.UNSIGNED_SHORT;case Nt.INT32:return X.INT;case Nt.UINT32:return X.UNSIGNED_INT;case Nt.FLOAT32:return X.FLOAT;case Nt.FLOAT64:return X.DOUBLE}};var Ft=Object.freeze(Nt);var Uo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};Uo.isVectorType=function(e){switch(e){case Uo.VEC2:case Uo.VEC3:case Uo.VEC4:return!0;default:return!1}};Uo.isMatrixType=function(e){switch(e){case Uo.MAT2:case Uo.MAT3:case Uo.MAT4:return!0;default:return!1}};Uo.getComponentCount=function(e){switch(e){case Uo.SCALAR:case Uo.STRING:case Uo.ENUM:case Uo.BOOLEAN:return 1;case Uo.VEC2:return 2;case Uo.VEC3:return 3;case Uo.VEC4:return 4;case Uo.MAT2:return 4;case Uo.MAT3:return 9;case Uo.MAT4:return 16}};Uo.getMathType=function(e){switch(e){case Uo.VEC2:return U;case Uo.VEC3:return d;case Uo.VEC4:return oe;case Uo.MAT2:return Mi;case Uo.MAT3:return Z;case Uo.MAT4:return F;default:return}};var lt=Object.freeze(Uo);function Da(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&Ft.isIntegerType(i)&&y(e.normalized,!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=y(e.isArray,!1),this._isVariableLengthArray=y(e.isVariableLengthArray,!1),this._arrayLength=e.arrayLength,this._min=He(e.min,!0),this._max=He(e.max,!0),this._normalized=r;let s=He(e.offset,!0),a=He(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=He(e.noData,!0),this._default=He(e.default,!0),this._required=y(e.required,!0),this._extras=He(e.extras,!0),this._extensions=He(e.extensions,!0)}Da.fromJson=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.property,i=MFe(n),o=LFe(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=y(n.required,!1):r=!1,new Da({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties(Da.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function MFe(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===lt.SCALAR||lt.isMatrixType(t)||lt.isVectorType(t))return!1;if(l(Ft[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function LFe(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===lt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===lt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===lt.SCALAR||lt.isMatrixType(n)||lt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===lt.BOOLEAN||n===lt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===lt.BOOLEAN||i===lt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(Ft[i]))return{type:lt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(Ft[n]))return{type:lt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}Da.prototype.normalize=function(e){return this._normalized?D9(e,this._valueType,Ft.normalize):e};Da.prototype.unnormalize=function(e){return this._normalized?D9(e,this._valueType,Ft.unnormalize):e};Da.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:Da.valueTransformInPlace(e,this._offset,this._scale,Ft.applyValueTransform)};Da.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:Da.valueTransformInPlace(e,this._offset,this._scale,Ft.unapplyValueTransform)};Da.prototype.expandConstant=function(e,t){t=y(t,!1);let n=this._isArray,i=this._arrayLength,o=lt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};Da.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!nie(e,t))return e};function nie(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!nie(e[n],t[n]))return!1;return!0}Da.prototype.unpackVectorAndMatrixTypes=function(e,t){t=y(t,!1);let n=lt.getMathType(this._type),i=this._isArray,o=lt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};Da.prototype.packVectorAndMatrixTypes=function(e,t){t=y(t,!1);let n=lt.getMathType(this._type),i=this._isArray,o=lt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};Da.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?NFe(this,e):iie(this,e)};function NFe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=iie(e,t[i]);if(l(o))return o}}function iie(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return lt.isVectorType(n)?FFe(t,n,i):lt.isMatrixType(n)?BFe(t,n,i):n===lt.STRING?kFe(t):n===lt.BOOLEAN?VFe(t):n===lt.ENUM?UFe(t,o):zFe(t,i,r)}function FFe(e,t,n){if(!Ft.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===lt.VEC2&&!(e instanceof U))return`vector value ${e} must be a Cartesian2`;if(t===lt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===lt.VEC4&&!(e instanceof oe))return`vector value ${e} must be a Cartesian4`}function BFe(e,t,n){if(!Ft.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===lt.MAT2&&!(e instanceof Mi))return`matrix value ${e} must be a Matrix2`;if(t===lt.MAT3&&!(e instanceof Z))return`matrix value ${e} must be a Matrix3`;if(t===lt.MAT4&&!(e instanceof F))return`matrix value ${e} must be a Matrix4`}function kFe(e){if(typeof e!="string")return xN(e,lt.STRING)}function VFe(e){if(typeof e!="boolean")return xN(e,lt.BOOLEAN)}function UFe(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function zFe(e,t,n){let i=typeof e;switch(t){case Ft.INT8:case Ft.UINT8:case Ft.INT16:case Ft.UINT16:case Ft.INT32:case Ft.UINT32:case Ft.FLOAT32:case Ft.FLOAT64:return i!=="number"?xN(e,t):isFinite(e)?eie(e,t,n):tie(e,t);case Ft.INT64:case Ft.UINT64:return i!=="number"&&i!=="bigint"?xN(e,t):i==="number"&&!isFinite(e)?tie(e,t):eie(e,t,n)}}function xN(e,t){return`value ${e} does not match type ${t}`}function Jne(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function eie(e,t,n){if(n){let i=Ft.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?Jne(e,t,n):void 0}if(e<Ft.getMinimum(t)||e>Ft.getMaximum(t))return Jne(e,t,n)}function tie(e,t){return`value ${e} of type ${t} must be finite`}function D9(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=D9(e[i],t,n);return e}Da.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=Da.valueTransformInPlace(e[o],t[o],n[o],i);return e};var Rp=Da;function cw(e){e=y(e,y.EMPTY_OBJECT);let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===lt.STRING,h=r===lt.BOOLEAN,p=0,g;if(a){let _=y(n.arrayOffsetType,n.offsetType);_=y(Ft[_],Ft.UINT32);let S=y(n.arrayOffsets,n.arrayOffsetBufferView);g=new I9(o[S],_,t+1),p+=g.typedArray.byteLength}let m=lt.getComponentCount(r),x;a?x=g.get(t)-g.get(0):s?x=t*i.arrayLength:x=t;let b=m*x,T;if(f){let _=y(n.stringOffsetType,n.offsetType);_=y(Ft[_],Ft.UINT32);let S=y(n.stringOffsets,n.stringOffsetBufferView);T=new I9(o[S],_,b+1),p+=T.typedArray.byteLength}(f||h)&&(c=Ft.UINT8);let C;f?C=T.get(b)-T.get(0):h?C=Math.ceil(b/8):C=b;let A=y(n.values,n.bufferView),E=new I9(o[A],c,C);p+=E.typedArray.byteLength;let v=n.offset,D=n.scale,R=i.hasValueTransform||l(v)||l(D);v=y(v,i.offset),D=y(D,i.scale),v=oie(v),D=oie(D);let O,M,N=this;f?O=function(_){return WFe(_,N._values,N._stringOffsets)}:h?(O=function(_){return jFe(_,N._values)},M=function(_,S){qFe(_,N._values,S)}):l(u)?(O=function(_){let S=N._values.get(_);return u.namesByValue[S]},M=function(_,S){let w=u.valuesByName[S];N._values.set(_,w)}):(O=function(_){return N._values.get(_)},M=function(_,S){N._values.set(_,S)}),this._arrayOffsets=g,this._stringOffsets=T,this._values=E,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=v,this._scale=D,this._hasValueTransform=R,this._getValue=O,this._setValue=M,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=p}Object.defineProperties(cw.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});cw.prototype.get=function(e){let t=HFe(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=e2e(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};cw.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=t2e(this,t),t=n.unnormalize(t),GFe(this,e,t)};cw.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function oie(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?t.push.apply(t,i):t.push(i)}return t}function HFe(e,t){sie(e)&&aie(e);let n=e._classProperty,i=n.isArray,o=n.type,r=lt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?He(s,!0):s}return!i&&r===1?e._getValue(t):rie(e,n,t)}function rie(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=lt.getComponentCount(t.type);i*=s,o*=s}else{let a=y(t.arrayLength,1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function GFe(e,t,n){QFe(e,t,n)&&aie(e);let i=e._classProperty,o=i.isArray,r=i.type,s=lt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=He(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=y(i.arrayLength,1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function WFe(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return iu(t.typedArray,i,o)}function jFe(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function qFe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function YFe(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function XFe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function KFe(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function $Fe(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function ZFe(e){switch(e){case Ft.INT8:return X.BYTE;case Ft.UINT8:return X.UNSIGNED_BYTE;case Ft.INT16:return X.SHORT;case Ft.UINT16:return X.UNSIGNED_SHORT;case Ft.INT32:return X.INT;case Ft.UINT32:return X.UNSIGNED_INT;case Ft.FLOAT32:return X.FLOAT;case Ft.FLOAT64:return X.DOUBLE}}function sie(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===lt.STRING||i===Ft.INT64&&!Ht.supportsBigInt64Array()||i===Ft.UINT64&&!Ht.supportsBigUint64Array()}function QFe(e,t,n){if(sie(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function aie(e){e._unpackedValues=JFe(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function JFe(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=lt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=rie(e,i,a);return n}function e2e(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Rp.valueTransformInPlace(t,e._offset,e._scale,Ft.applyValueTransform)}function t2e(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Rp.valueTransformInPlace(t,e._offset,e._scale,Ft.unapplyValueTransform)}function I9(e,t,n){let i=this,o,r,s;if(t===Ft.INT64)Ht.supportsBigInt()?Ht.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return XFe(a,i)}):(Ct("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return YFe(a,i)});else if(t===Ft.UINT64)Ht.supportsBigInt()?Ht.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return $Fe(a,i)}):(Ct("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return KFe(a,i)});else{let a=ZFe(t);o=X.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var bN=cw;function Ad(e){e=y(e,y.EMPTY_OBJECT);let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new bN({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(Ad.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});Ad.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};Ad.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};Ad.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};Ad.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=n2e(this._class,t),i};Ad.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};Ad.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};Ad.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};Ad.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};Ad.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function n2e(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=He(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var Ed=Ad;function bg(){}Object.defineProperties(bg.prototype,{cacheKey:{get:function(){de.throwInstantiationError()}}});bg.prototype.load=function(){de.throwInstantiationError()};bg.prototype.unload=function(){};bg.prototype.process=function(e){return!1};bg.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=`
${t.message}`);let n=new se(e);return l(t)&&(n.stack=`Original stack:
${t.stack}
Handler stack:
${n.stack}`),n};bg.prototype.isDestroyed=function(){return!1};bg.prototype.destroy=function(){return this.unload(),ue(this)};var Ji=bg;var i2e={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},xt=Object.freeze(i2e);function Mp(e){e=y(e,y.EMPTY_OBJECT);let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Mp.prototype=Object.create(Ji.prototype),Mp.prototype.constructor=Mp);Object.defineProperties(Mp.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});Mp.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=o2e(this),this._promise)};async function o2e(e){let t=e._resource;e._state=xt.LOADING;try{let n=await Mp._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=xt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=xt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}Mp._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};Mp.prototype.unload=function(){this._typedArray=void 0};var xC=Mp;var SZt=function(){var e="b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:G:Qdkr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq;A9pLdbk;QqeKu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRbN:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9Uc;WFbGgecjdaecjd6Ehqcbhkindndnaiak9nmbaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndnaec9WGgsTmbcbhzaPhHawhOxekdnaxmbalheinaraw9Ram6miawcbamzNjjjbamfhwaecufgembxvkkcbhAaPhOinaDaAfRbbhCaDcjlfheaOhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkaraw9Ram6mdaOcefhOawcbamzNjjjbamfhwaAcefgAal9hmbxlkkindnaxTmbaDazfRbbhCaDcjlfheaHhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkkaraO9Ram6mearaOcbamzNjjjbgLamfgw9RcK6mecbhKaDcjlfhOinaDcjlfaKfhYcwhAczhQceheindndnaegXce9hmbcuhoaYRbbmecbhodninaogecsSmeaecefhoaOaefcefRbbTmbkkcucbaecs6EhoxekaXcethocuaXtc;:bGcFb7hCcbheinaoaCaOaefRbb9nfhoaecefgecz9hmbkkaoaQaoaQ6geEhQaXaAaeEhAaXcetheaXcl6mbkdndndndnaAcufPdiebkaLaKco4fgeaeRbbcdciaAclSEaKci4coGtV86bbaAcw9hmeawaY8Pbb83bbawcwfaYcwf8Pbb83bbawczfhwxdkaLaKco4fgeaeRbbceaKci4coGtV86bbkdncwaA9Tg8Ambinawcb86bbawcefhwxbkkcuaAtcu7hYcbhEaOh3ina3hea8AhCcbhoinaeRbbgQaYcFeGgXaQaX6EaoaAtVhoaecefheaCcufgCmbkawao86bba3a8Afh3awcefhwaEa8AfgEcz6mbkcbheindnaOaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaKczfgKas9pmbaOczfhOaraw9RcL0mekkaKas6meawTmeaHcefhHawhOazcefgzalSmixbkkcbhoxikcbhoaraw9Ralcaalca0E6mddnalc8F0mbawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9RhoxdkaDaPaxcufal2falz:tjjjb8Aaxakfhkawmbkcbhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBdN:kjjbk:zse5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:e:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc:y1jjbfydbcdtfydbh3aLaocN1jjbfydbcdtfydbh8AaLaoc:q1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc:q1jjbfydbcdtfydbgKTaLavcN1jjbfydbcdtfydbg8AceSGaLavc:y1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavcj1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:e:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:e:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b9kEc:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A9kEc:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;HqdCui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgradcFFFFi0Ecbyd:m:kjjbHjjjjbbgeBd:SeavceBd:mdaeabarz:tjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaeadaiavc:Sefz:njjjbavyd:Gehwadci9UgDcbyd:m:kjjbHjjjjbbhravc:Sefavyd:mdgqcdtfarBdbavaqcefgkBd:mdarcbaDzNjjjbhxavc:SefakcdtfcuaicdtaicFFFFi0Ecbyd:m:kjjbHjjjjbbgmBdbavaqcdfgPBd:mdawhramhkinakalIdbalarydbgscwascw6Ecdtfc;ebfIdbMUdbarclfhrakclfhkaicufgimbkavc:SefaPcdtfcuaDcdtadcFFFF970Ecbyd:m:kjjbHjjjjbbgPBdbdnadci6mbaehraPhkaDhiinakamarydbcdtfIdbamarclfydbcdtfIdbMamarcwfydbcdtfIdbMUdbarcxfhrakclfhkaicufgimbkkaqcifhoavc;qbfhzavhravyd:KehHavyd:OehOcbhscbhkcbhAcehCinarhXcihQaeakci2gLcdtfgrydbhdarclfydbhqabaAcx2fgicwfarcwfydbgKBdbaiclfaqBdbaiadBdbaxakfce86bbazaKBdwazaqBdlazadBdbaPakcdtfcbBdbdnasTmbcihQaXhiinazaQcdtfaiydbgrBdbaQaraK9harad9haraq9hGGfhQaiclfhiascufgsmbkkaAcefhAcbhsinaOaHaeasaLfcdtfydbcdtgifydbcdtfgKhrawaifgqydbgdhidnadTmbdninarydbakSmearclfhraicufgiTmdxbkkaraKadcdtfc98fydbBdbaqaqydbcufBdbkascefgsci9hmbkdndnaQTmbcuhkJbbbbhYcbhqavyd:KehKavyd:OehLindndnawazaqcdtfydbcdtgsfydbgrmbaqcefhqxekaqcs0hiamasfgdIdbh8AadalcbaqcefgqaiEcdtfIdbalarcwarcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEarcdthiaLaKasfydbcdtfhrinaParydbgscdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYasakadEhkarclfhraic98fgimbkkaqaQ9hmbkakcu9hmekaCaD9pmdindnaxaCfRbbmbaChkxdkaDaCcefgC9hmbxikkaQczaQcz6EhsazhraXhzakcu9hmbkkaocdtavc:Seffc98fhrdninaoTmearydbcbyd1:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd:m:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Wkivuo99lu8Jjjjjbc;W;Gb9Rgl8Kjjjjbcbhvalcj;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:m:kjjbHjjjjbbgrBdj9GalceBd;G9GalcFFF;7rBdwal9cFFF;7;3FF:;Fb83dbalcFFF97Bd;S9Gal9cFFF;7FFF:;u83d;K9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;K;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;S9GhDalIdlhkalId;O9GhxalIdbhmalId;K9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd:m:kjjbHjjjjbbgiBd:e9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealcj;Gbfaifydbcbyd1:kjjbH:bjjjbbaic98fhixbkkalc;W;Gbf8Kjjjjbk9teiucbcbyd:q:kjjbgeabcifc98GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:kjjbgeabcrfc94GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:kjjbfgdBd:q:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iddbcjwk:edb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:bc:eqkzebbbebbbdbbba:vbb",t=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 n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),x=0;x<g.length;++x){var b=g.charCodeAt(x);m[x]=b>96?b-97:b>64?b-39:b+4}for(var T=0,x=0;x<g.length;++x)m[T++]=m[x]<60?t[m[x]]:(m[x]-60)*64+m[++x];return m.buffer.slice(0,T)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,x,b){var T=n.exports.sbrk,C=T(m.length*4),A=T(x*4),E=new Uint8Array(n.exports.memory.buffer),v=s(m);E.set(v,C),b&&b(C,C,m.length,x);var D=g(A,C,m.length,x);E=new Uint8Array(n.exports.memory.buffer);var R=new Uint32Array(x);new Uint8Array(R.buffer).set(E.subarray(A,A+x*4)),v.set(E.subarray(C,C+m.length*4)),T(C-T(0));for(var O=0;O<m.length;++O)m[O]=R[m[O]];return[R,D]}function c(g,m,x,b){var T=n.exports.sbrk,C=T(x*4),A=T(x*b),E=new Uint8Array(n.exports.memory.buffer);E.set(s(m),A),g(C,A,x,b),E=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(x);return new Uint8Array(v.buffer).set(E.subarray(C,C+x*4)),T(C-T(0)),v}function u(g,m,x,b,T){var C=n.exports.sbrk,A=C(m),E=C(b*T),v=new Uint8Array(n.exports.memory.buffer);v.set(s(x),E);var D=g(A,m,E,b,T),R=new Uint8Array(D);return R.set(v.subarray(A,A+D)),C(A-C(0)),R}function f(g){for(var m=0,x=0;x<g.length;++x){var b=g[x];m=m<b?b:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var x=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(x)}function p(g,m,x,b,T,C,A){var E=n.exports.sbrk,v=E(x*b),D=E(x*C),R=new Uint8Array(n.exports.memory.buffer);R.set(s(m),D),g(v,x,b,T,D,A);var O=new Uint8Array(x*b);return O.set(R.subarray(v,v+x*b)),E(v-E(0)),O}return{ready:i,supported:!0,reorderMesh:function(g,m,x){var b=m?x?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,b)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,x){r(x>0&&x<=256),r(x%4==0);var b=n.exports.meshopt_encodeVertexBufferBound(m,x);return u(n.exports.meshopt_encodeVertexBuffer,b,g,m,x)},encodeIndexBuffer:function(g,m,x){r(x==2||x==4),r(m%3==0);var b=h(g,x),T=n.exports.meshopt_encodeIndexBufferBound(m,f(b)+1);return u(n.exports.meshopt_encodeIndexBuffer,T,b,m,4)},encodeIndexSequence:function(g,m,x){r(x==2||x==4);var b=h(g,x),T=n.exports.meshopt_encodeIndexSequenceBound(m,f(b)+1);return u(n.exports.meshopt_encodeIndexSequence,T,b,m,4)},encodeGltfBuffer:function(g,m,x,b){var T={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(T[b]),T[b](g,m,x)},encodeFilterOct:function(g,m,x,b){return r(x==4||x==8),r(b>=1&&b<=16),p(n.exports.meshopt_encodeFilterOct,g,m,x,b,16)},encodeFilterQuat:function(g,m,x,b){return r(x==8),r(b>=4&&b<=16),p(n.exports.meshopt_encodeFilterQuat,g,m,x,b,16)},encodeFilterExp:function(g,m,x,b,T){r(x>0&&x%4==0),r(b>=1&&b<=24);var C={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return p(n.exports.meshopt_encodeFilterExp,g,m,x,b,x,T?C[T]:1)}}}();var cie=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(T){r=T.instance,r.exports.__wasm_call_ctors()});function a(T){for(var C=new Uint8Array(T.length),A=0;A<T.length;++A){var E=T.charCodeAt(A);C[A]=E>96?E-97:E>64?E-39:E+4}for(var v=0,A=0;A<T.length;++A)C[v++]=C[A]<60?i[C[A]]:(C[A]-60)*64+C[++A];return C.buffer.slice(0,v)}function c(T,C,A,E,v,D,R){var O=T.exports.sbrk,M=E+3&-4,N=O(M*v),_=O(D.length),S=new Uint8Array(T.exports.memory.buffer);S.set(D,_);var w=C(N,E,v,_,D.length);if(w==0&&R&&R(N,M,v),A.set(S.subarray(N,N+E*v)),O(N-O(0)),w!=0)throw new Error("Malformed buffer data: "+w)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],p=0;function g(T){var C={object:new Worker(T),pending:0,requests:{}};return C.object.onmessage=function(A){var E=A.data;C.pending-=E.count,C.requests[E.id][E.action](E.value),delete C.requests[E.id]},C}function m(T){for(var C="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+b.name+";"+c.toString()+b.toString(),A=new Blob([C],{type:"text/javascript"}),E=URL.createObjectURL(A),v=h.length;v<T;++v)h[v]=g(E);for(var v=T;v<h.length;++v)h[v].object.postMessage({});h.length=T,URL.revokeObjectURL(E)}function x(T,C,A,E,v){for(var D=h[0],R=1;R<h.length;++R)h[R].pending<D.pending&&(D=h[R]);return new Promise(function(O,M){var N=new Uint8Array(A),_=++p;D.pending+=T,D.requests[_]={resolve:O,reject:M},D.object.postMessage({id:_,count:T,size:C,source:N,mode:E,filter:v},[N.buffer])})}function b(T){var C=T.data;if(!C.id)return self.close();self.ready.then(function(A){try{var E=new Uint8Array(C.count*C.size);c(A,A.exports[C.mode],E,C.count,C.size,C.source,A.exports[C.filter]),self.postMessage({id:C.id,count:C.count,action:"resolve",value:E},[E.buffer])}catch(v){self.postMessage({id:C.id,count:C.count,action:"reject",value:v})}})}return{ready:s,supported:!0,useWorkers:function(T){m(T)},decodeVertexBuffer:function(T,C,A,E,v){c(r,r.exports.meshopt_decodeVertexBuffer,T,C,A,E,r.exports[u[v]])},decodeIndexBuffer:function(T,C,A,E){c(r,r.exports.meshopt_decodeIndexBuffer,T,C,A,E)},decodeIndexSequence:function(T,C,A,E){c(r,r.exports.meshopt_decodeIndexSequence,T,C,A,E)},decodeGltfBuffer:function(T,C,A,E,v,D){c(r,r.exports[f[v]],T,C,A,E,r.exports[u[D]])},decodeGltfBufferAsync:function(T,C,A,E,v){return h.length>0?x(T,C,A,f[E],u[v]):s.then(function(){var D=new Uint8Array(T*C);return c(r,r.exports[f[E]],D,T,C,A,r.exports[u[v]]),D})}}}();var DZt=function(){var e="b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuecj:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq;UMesdbk:kfvKue99euY99Qu8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd;S1jjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhCcbhLinabaXcdtfgKydbgAc:v;t;h;Ev2hOcbhedndninaQaOaCGgOcdtfgYydbgHcuSmeazaHcdtfydbaASmdaecefgeaOfhOaeaC9nmbxdkkazaLcdtfaABdbaYaLBdbaLhHaLcefhLkaKaHBdbaXcefgXad9hmbkkaQcbyd;O1jjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd;S1jjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd;S1jjbHjjjjbbhQascxfasyd2gecdtfaQBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhLcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhXdnalTmbavcd4hCaecufhHinaLhednazTmbazaLcdtfydbhekaiaeaC2cdtfgeydlgOcH4aO7c:F:b:DD2aeydbgOcH4aO7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aHGheaLcdth8FdndndndndnazTmbaza8FfhKcbhOinaXaecdtfgYydbgAcuSmlaiazaAcdtfydbaC2cdtfaiaKydbaC2cdtfcxz:ojjjbTmiaOcefgOaefaHGheaOaH9nmbxdkkaiaLaC2cdtfhKcbhOinaXaecdtfgYydbgAcuSmiaiaAaC2cdtfaKcxz:ojjjbTmdaOcefgOaefaHGheaOaH9nmbkkcbhYkaYydbgecu9hmekaYaLBdbaLhekaQa8FfaeBdbaLcefgLal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaQhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaXcbyd;O1jjbH:bjjjbbasasyd2cufBd2alcbyd;S1jjbHjjjjbbhXascxfasyd2gecdtfaXBdbasaecefBd2a5cbyd;S1jjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd;S1jjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhLcbhAindndna3aAcitfydbgYaO9hmbaLaOBdba8KaOBdbxekdna8AaYcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhKa8JaCfhHcbheinaKaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaYaeydbcuSEBdbaLaYaOaLydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaQhHa8EhOaghCahhAcbheindndnaeaHydbgY9hmbdnaeaOydbgY9hmbaAydbhYdnaCydbgKcu9hmbaYcu9hmbaXaefcb86bbxikaXaefhLdnaeaKSmbaeaYSmbaLce86bbxikaLcl86bbxdkdnaea8EaYcdtgKfydb9hmbdnaCydbgLcuSmbaeaLSmbaAydbg8FcuSmbaea8FSmbagaKfydbg3cuSmba3aYSmbahaKfydbgKcuSmbaKaYSmbdnaQaLcdtfydbgYaQaKcdtfydb9hmbaYaQa8FcdtfydbgKSmbaKaQa3cdtfydb9hmbaXaefcd86bbxlkaXaefcl86bbxikaXaefcl86bbxdkaXaefcl86bbxekaXaefaXaYfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaQhHalhOindnaqaeydbfRbbTmbaXaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaQhealhHindnaqRbbTmbaXaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaQhealhOaXhHindnaXaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaXhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hLdnazTmba8JcdthicbhYayhKinaoazaYcdtfydbaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbxdkka8JcdthicbhYayhKinaoaYaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd;S1jjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd;S1jjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgYcx2fgeIdbaaaHydbgKcx2fgOIdbg8P:tgIaaaHcwfydbgLcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaKcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaLcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbhiabhKinabaicdtfhYcbhHinaXaYaHc:G1jjbfydbcdtfydbgOfRbbhedndnaXaKaHfydbgCfRbbgAc99fcFeGcpe0mbaeceSmbaecd9hmekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefcj1jjbfRbbTmbaQaOcdtfydbaQaCcdtfydb0mekJbbacJbbacJbbjZaeceSEaAceSEh8ZdnaaaYaHc:K1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgLIdwa8R:tg8Sa8SNaLIdbaAIdbg8W:tgIaINaLIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaKcxfhKaicifgiad6mbkdna8JTmbcbhKinJbbbbh8WaaabaKcdtfgeclfydbgLcx2fgHIdwaaaeydbgicx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg8Fcx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Sayaia8J2g3cdtfhHaya8Fa8J2gwcdtfhOayaLa8J2g8LcdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhYJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaYcufgYmbkavaic8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaLc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyara3cltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkarawcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaKcifgKad6mbkkcbhOxekcehOcbhrkcbh8FdndnamcwGg9cmbJbbbbh8ZcbhJcbhocbhCxekcbhea5cbyd;S1jjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbhiinabaicdtfhLcbhKinaQaLaKcdtgec:G1jjbfydbcdtfydbcdtfydbhHdnaCaQaLaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgYydbgeBdbaYhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgYydbgeBdbaYhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaKcefgKci9hmbkaicifgiad6mbkkcbhJdnalTmbcbhYindnaQaYcdtgefydbaY9hmbaYhHdnaCaefgKydbgeaYSmbaKhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaKaHBdbkaYcefgYal9hmbkcbheaQhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd;S1jjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhYinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgKaIaKIdbMUdbaHcwfgKa8SaKIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaYcufgYmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhYinaAaOydbcltfgHcxfgKaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaKIdbgIaIa8S9DEUdbaOclfhOaecxfheaYcufgYmbkkdnaJmbcbhJJFFuuh8ZxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8ZaAheaJhHinaeIdbg8Sa8Za8Za8S9EEh8ZaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaXhHalhYcbhOincbaeydbgKaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaKhAaYcufgYmbkaOce4h8Fkcuada8F9RcifgTcx2aTc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd;S1jjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd;S1jjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaQz:cjjjbabh8FcbhEcbh5inaba5cdtfh3cbheindnaQa8FaefydbgOcdtgifydbgYaQa3aec:W1jjbfydbcdtfydbgHcdtgwfydbgKSmbaXaHfRbbgLcv2aXaOfRbbgAfc;a1jjbfRbbg8AaAcv2aLfg8Lc;a1jjbfRbbg8KVcFeGTmbdnaKaY9nmba8Lcj1jjbfRbbcFeGmekaAcufhYdnaAaL9hmbaYcFeGce0mbahaifydbaH9hmekdndnaAclSmbaLcl9hmekdnaYcFeGce0mbahaifydbaH9hmdkaLcufcFeGce0mbagawfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgYEBdlaAaOaHaYEBdbaAaYa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba8Fcxfh8FaEcifaT9nmekkaETmdcbhiinJbbbbJbbjZaqaQaDaicx2fgAydlgKaAydbgYaAydwgHEgLcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaYaKaHEg8Fcx2fgHIdwgRNaeIdzaHIdbg8PNaeIdaMg8Sa8SMMaRNaeIdlaHIdlg8RNaeIdCaRNaeId3Mg8Sa8SMMa8RNaeIdba8PNaeIdxa8RNaeIdKMg8Sa8SMMa8PNaeId8KMMM:lNh80JbbbbJbbjZaqaQaYcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaKcx2fgHIdwg8VNaeIdzaHIdbg8WNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8UNaeIdCa8VNaeId3Mg8Sa8SMMa8UNaeIdba8WNaeIdxa8UNaeIdKMg8Sa8SMMa8WNaeId8KMMM:lNh8YaAcwfh3aAclfhwdna8JTmbavaYc8S2fgOIdwa8VNaOIdza8WNaOIdaMg8Sa8SMMa8VNaOIdla8UNaOIdCa8VNaOId3Mg8Sa8SMMa8UNaOIdba8WNaOIdxa8UNaOIdKMg8Sa8SMMa8WNaOId8KMMMh8SayaKa8J2cdtfhHaraYa8J2cltfheaOIdyh8Xa8JhOinaHIdbgIaIa8XNaecxfIdba8VaecwfIdbNa8WaeIdbNa8UaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkavaLc8S2fgOIdwaRNaOIdza8PNaOIdaMgIaIMMaRNaOIdla8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8Fa8J2cdtfhHaraLa8J2cltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbka80aI:lMh80a8Ya8S:lMh8YkawaKa8Fa8Ya809FgeEBdbaAaYaLaeEBdba3a8Ya80aeEUdbaicefgiaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh9maOcO9Uh9na9kce4h9oasydwh9pcbh8KcbhwdninaDaSawcdtfydbcx2fg3Idwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9oaE9pmbaDaSa9ocdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9n0mdkdna9maQa3ydlgicdtg9qfydbgAfg9rRbba9maQa3ydbgLcdtg9sfydbgHfg9tRbbVmbaXaLfRbbh9udna9eaHcdtfgeclfydbgOaeydbgeSmbaOae9RhKa9paecitfheaaaAcx2fg8Lcwfh5a8Lclfh9vaaaHcx2fg8Acwfh9wa8Aclfh9xcbhHceh8Fdnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgYaASmbaOaYSmbaaaYcx2fgYIdbaaaOcx2fgOIdbg8V:tg8Sa9xIdbaOIdlgR:tg8WNa8AIdba8V:tg8UaYIdlaR:tgIN:tg8Pa8Sa9vIdbaR:tg8XNa8LIdba8V:tg80aIN:tgRNaIa9wIdbaOIdwg8R:tg8YNa8WaYIdwa8R:tg8VN:tg8WaIa5Idba8R:tg81Na8Xa8VN:tgINa8Va8UNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaK6h8FaKaH9hmbkka8FceGTmba9ocefh9oxeka3cwfhHdndndndna9uc9:fPdebdkaLheina8MaecdtgefaiBdba8EaefydbgeaL9hmbxikkdnagahaha9sfydbaiSEa8Ea9sfydbgLcdtfydbgecu9hmba8Ea9qfydbheka8Ma9sfaiBdbaehika8MaLcdtfaiBdbka9tce86bba9rce86bbaHIdbg8Sanana8S9DEhna0cefh0cecda9uceSEa8Kfh8KkawcefgwaE9hmbkka0TmddnalTmbcbhKcbhiindna8MaicdtgefydbgOaiSmbaQaOcdtfydbh8FdnaiaQaefydb9hg3mbaqa8Fc8S2fgeaqaic8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeavaic8S2gwfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hLarhHa8JhAinaHaLfgeaHaKfgOIdbaeIdbMUdbaeclfgYaOclfIdbaYIdbMUdbaecwfgYaOcwfIdbaYIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbka3mbJbbbbJbbjZaqawfgeIdyg8S:va8SJbbbb9BEaeIdwaaa8Fcx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaKa9ifhKaicefgial9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhYabhecbhKindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgASmbaOaASmbabaYcdtfgLaHBdbaLcwfaABdbaLclfaOBdbaYcifhYkaecxfheaKcifgKad6mbkdndna9cTmbaYak9nmba8ZaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgAaOBdbaAclfaeclfydbBdbaAcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaY6mbkJFFuuh8ZaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8ZaOEh8ZaeclfheaHcufgHmbxdkkaYhdkadak0mbxdkkasclfabadalaQz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Zac9FmbadhOxekina8ZJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgYaABdbaYclfaeclfydbBdbaYcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8ZdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8ZaAEh8ZaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Zac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhQabheinaXaeydbgAfRbbc3thKaecwfgLydbhHdndnahaAcdtg8FfydbaeclfgiydbgCSmbcbhYagaCcdtfydbaA9hmekcjjjj94hYkaeaKaYVaAVBdbaXaCfRbbc3thKdndnahaCcdtfydbaHSmbcbhYagaHcdtfydbaC9hmekcjjjj94hYkaiaKaYVaCVBdbaXaHfRbbc3thYdndnahaHcdtfydbaASmbcbhCaga8FfydbaH9hmekcjjjj94hCkaLaYaCVaHVBdbaecxfheaQcifgQaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd;O1jjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Podvuv998Jjjjjbca9RgvcFFF;7rBd3av9cFFF;7;3FF:;Fb83dCavcFFF97Bdzav9cFFF;7FFF:;u83dwdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavcCfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdwavIdCgk:tgqaqJbbbb9DEgqavIdxavIdKgx:tgmamaq9DEgqavIdzavId3gm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:nCoDud99rue99lul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd;S1jjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd;S1jjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbh8Eindna3axa8EcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5a8Ecefg8Ead9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8FaD:Y:tgaa8FaK:Y:tgha5:ZggaH:tNNNaOaH:tahNa8Aag:tNa8AaH:taaNagaO:tNM:va8FMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd;S1jjbHjjjjbbg8EBdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbh5inaxa5cdtgYfydbgCcm4aC7c:v;t;h;Ev2gics4ai7hecbhidndnina3aeaAGgmcdtfgEydbgecuSmednaxaecdtgEfydbaCSmbaicefgiamfheaiaA9nmekka8EaEfydbhixekaEa5BdbaDhiaDcefhDka8EaYfaiBdba5cefg5ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd;S1jjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hxdnadTmbdnalTmbaxcdth3a8EhCalheaqhmadhAinaEaCydbc32fgiamIdbaiIdbMUdbaiamclfIdbaiIdlMUdlaiamcwfIdbaiIdwMUdwaiaeIdbaiIdxMUdxaiaeclfIdbaiIdzMUdzaiaecwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaea3fheamcxfhmaAcufgAmbxdkka8EhmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd;S1jjbHjjjjbbgeBdaawcoBd2awaicbyd;S1jjbHjjjjbbg3Bd8KaecFeaYz:ljjjbh5dnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8Aaxcdthxalheina8Aaec;C1jjbalEgmIdwaEa8EydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna5aAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka8Eclfh8EaeaxfheaqcxfhqadaCcefgC9hmbkkaba5aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd;O1jjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Odieui99iu8Jjjjjbca9RgicFFF;7rBd3ai9cFFF;7;3FF:;Fb83dCaicFFF97Bdzai9cFFF;7FFF:;u83dwdndnaembJbbjFhlJbbjFhvJbbjFhoxekadcd4cdthrcbhwincbhdinaicCfadfgDabadfIdbglaDIdbgvaval9EEUdbaicwfadfgDalaDIdbgvaval9DEUdbadclfgdcx9hmbkabarfhbawcefgwae9hmbkaiIdzaiId3:thoaiIdxaiIdK:thvaiIdwaiIdC:thlkJbbbbalalJbbbb9DEglavaval9DEglaoaoal9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcifc98GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcrfc94GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;W1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;W1jjbfgdBd;W1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:bedbcjwk9Oeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc;OwkxebbbdbbbjNbb",t=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 n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var x=new Uint8Array(m.length),b=0;b<m.length;++b){var T=m.charCodeAt(b);x[b]=T>96?T-97:T>64?T-39:T+4}for(var C=0,b=0;b<m.length;++b)x[C++]=x[b]<60?t[x[b]]:(x[b]-60)*64+x[++b];return x.buffer.slice(0,C)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,x,b){var T=n.exports.sbrk,C=T(x.length*4),A=T(b*4),E=new Uint8Array(n.exports.memory.buffer),v=s(x);E.set(v,C);var D=m(A,C,x.length,b);E=new Uint8Array(n.exports.memory.buffer);var R=new Uint32Array(b);new Uint8Array(R.buffer).set(E.subarray(A,A+b*4)),v.set(E.subarray(C,C+x.length*4)),T(C-T(0));for(var O=0;O<x.length;++O)x[O]=R[x[O]];return[R,D]}function c(m){for(var x=0,b=0;b<m.length;++b){var T=m[b];x=x<T?T:x}return x}function u(m,x,b,T,C,A,E,v,D){var R=n.exports.sbrk,O=R(4),M=R(b*4),N=R(C*A),_=R(b*4),S=new Uint8Array(n.exports.memory.buffer);S.set(s(T),N),S.set(s(x),_);var w=m(M,_,b,N,C,A,E,v,D,O);S=new Uint8Array(n.exports.memory.buffer);var I=new Uint32Array(w);s(I).set(S.subarray(M,M+w*4));var L=new Float32Array(1);return s(L).set(S.subarray(O,O+4)),R(O-R(0)),[I,L[0]]}function f(m,x,b,T,C,A,E,v,D,R,O,M,N){var _=n.exports.sbrk,S=_(4),w=_(b*4),I=_(C*A),L=_(C*v),B=_(D.length*4),H=_(b*4),V=R?_(C):0,G=new Uint8Array(n.exports.memory.buffer);G.set(s(T),I),G.set(s(E),L),G.set(s(D),B),G.set(s(x),H),R&&G.set(s(R),V);var k=m(w,H,b,I,C,A,L,v,B,D.length,V,O,M,N,S);G=new Uint8Array(n.exports.memory.buffer);var W=new Uint32Array(k);s(W).set(G.subarray(w,w+k*4));var q=new Float32Array(1);return s(q).set(G.subarray(S,S+4)),_(S-_(0)),[W,q[0]]}function h(m,x,b,T){var C=n.exports.sbrk,A=C(b*T),E=new Uint8Array(n.exports.memory.buffer);E.set(s(x),A);var v=m(A,b,T);return C(A-C(0)),v}function p(m,x,b,T,C,A,E,v){var D=n.exports.sbrk,R=D(v*4),O=D(b*T),M=D(b*A),N=new Uint8Array(n.exports.memory.buffer);N.set(s(x),O),C&&N.set(s(C),M);var _=m(R,O,b,T,M,A,E,v);N=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return s(S).set(N.subarray(R,R+_*4)),D(R-D(0)),S}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,useExperimentalFeatures:!1,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var x=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,x,c(m)+1)},simplify:function(m,x,b,T,C,A){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(x instanceof Float32Array),r(x.length%b==0),r(b>=3),r(T>=0&&T<=m.length),r(T%3==0),r(C>=0);for(var E=0,v=0;v<(A?A.length:0);++v)r(A[v]in g),r(this.useExperimentalFeatures||A[v]!="Prune"),E|=g[A[v]];var D=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),R=u(n.exports.meshopt_simplify,D,m.length,x,x.length/b,b*4,T,C,E);return R[0]=m instanceof Uint32Array?R[0]:new m.constructor(R[0]),R},simplifyWithAttributes:function(m,x,b,T,C,A,E,v,D,R){r(this.useExperimentalFeatures),r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(x instanceof Float32Array),r(x.length%b==0),r(b>=3),r(T instanceof Float32Array),r(T.length%C==0),r(C>=0),r(E==null||E instanceof Uint8Array),r(E==null||E.length==x.length/b),r(v>=0&&v<=m.length),r(v%3==0),r(D>=0),r(Array.isArray(A)),r(C>=A.length),r(A.length<=32);for(var O=0;O<A.length;++O)r(A[O]>=0);for(var M=0,O=0;O<(R?R.length:0);++O)r(R[O]in g),M|=g[R[O]];var N=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),_=f(n.exports.meshopt_simplifyWithAttributes,N,m.length,x,x.length/b,b*4,T,C*4,new Float32Array(A),E?new Uint8Array(E):null,v,D,M);return _[0]=m instanceof Uint32Array?_[0]:new m.constructor(_[0]),_},getScale:function(m,x){return r(m instanceof Float32Array),r(m.length%x==0),r(x>=3),h(n.exports.meshopt_simplifyScale,m,m.length/x,x*4)},simplifyPoints:function(m,x,b,T,C,A){return r(this.useExperimentalFeatures),r(m instanceof Float32Array),r(m.length%x==0),r(x>=3),r(b>=0&&b<=m.length/x),T?(r(T instanceof Float32Array),r(T.length%C==0),r(C>=3),r(m.length/x==T.length/C),p(n.exports.meshopt_simplifyPoints,m,m.length/x,x*4,T,C*4,A,b)):p(n.exports.meshopt_simplifyPoints,m,m.length/x,x*4,void 0,0,0,b)}}}();var PZt=function(){var e="b9H79Tebbbefx9Geueu9Geub9Gbb9Giuuueu9Gkuuuuuuuuuu99eu9Gvuuuuueu9Gkuuuuuuuuu9999eu9Gruuuuuuub9Gkuuuuuuuuuuueu9Gouuuuuub9Giuuub9GluuuubiOHdilvorwDqrkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bd39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;L9kHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:oAlPue99eux998Jjjjjbc:We9Rgk8Kjjjjbakc;mbfcbc;Kbz:njjjb8AakcuaocdtgxaocFFFFi0Egmcbyd:e1jjbHjjjjbbgPBd9makceBd:SeakaPBdnakamcbyd:e1jjbHjjjjbbgsBd9qakcdBd:SeakasBd9eakcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgzBd9uakazBd9iakciBd:SeaPcbaxz:njjjbhHalci9UhOdnalTmbaihPalhAinaHaPydbcdtfgCaCydbcefBdbaPclfhPaAcufgAmbkkdnaoTmbcbhPashAaHhCaohXinaAaPBdbaAclfhAaCydbaPfhPaCclfhCaXcufgXmbkkdnalci6mbcbhPaihAinaAcwfydbhCaAclfydbhXasaAydbcdtfgQaQydbgQcefBdbazaQcdtfaPBdbasaXcdtfgXaXydbgXcefBdbazaXcdtfaPBdbasaCcdtfgCaCydbgCcefBdbazaCcdtfaPBdbaAcxfhAaOaPcefgP9hmbkkdnaoTmbaHhAashPaohCinaPaPydbaAydb9RBdbaAclfhAaPclfhPaCcufgCmbkkakamcbyd:e1jjbHjjjjbbgPBd9yakclBd:SeaPaHaxz:mjjjbhmakaOcbyd:e1jjbHjjjjbbgPBd9CakcvBd:SeaPcbaOz:njjjbhLakcuaOcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbgKBd9GakcoBd:SeJbbbbhYdnalci6g8Ambarcd4hxaihAaKhPaOhrJbbbbhEinavaAclfydbax2cdtfgCIdlh3avaAydbax2cdtfgXIdlhYavaAcwfydbax2cdtfgQIdlh5aCIdwh8EaXIdwh8FaQIdwhaaPaCIdbghaXIdbggMaQIdbg8JMJbbnn:vUdbaPclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8KaCIdwh8LaXIdwh8MaPcxfa3aY:tg3aaa8F:tgaNa5aY:tg5a8Ea8F:tg8EN:tgYJbbbbJbbjZahag:tgha5Na8Jag:tgga3N:tg8Fa8FNaYaYNa8EagNaaahN:tgYaYNMM:rgg:vagJbbbb9BEg3NUdbaPczfaYa3NUdbaPcCfa8Fa3NUdbaPcwfa8Ka8Ma8LMMJbbnn:vUdbaEagMhEaAcxfhAaPcKfhParcufgrmbkaEaO:Z:vJbbbZNhYkakcuaOcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd9KakcrBd:SeaYaD:ZN:rhYdna8AmbcbhPaChAinaAaPBdbaAclfhAaOaPcefgP9hmbkkaYJbbbZNh8MakcuaOcltalcFFFFd0Ecbyd:e1jjbHjjjjbbg8ABd9OakcwBd:Secba8AaKaCaOz:djjjb8Aakaocbyd:e1jjbHjjjjbbgPBd2aPcFeaoz:njjjbhrakc8Wfcwf9cb83ibak9cb83i8WcbhPJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgcbhlinJbbbbh3dnaPTmbJbbjZaP:Z:vh3kaka8Ea3NgaUdaaka5a3NghUd3akaEa3Ng8JUdKJbbbbh3dnagagNaYaYNa8Fa8FNMMg8KJbbbb9BmbJbbjZa8K:r:vh3kakaga3NUd8Saka8Fa3NUdyakaYa3NUd8Kdndndnakyd8WgQakydUgAakcKfaeaiakc;abfaKamara8Maqz:ejjjbgCcuSmbdnaPaD9pmbaAaraiaCcx2fgXydbfRbbcFeSfaraXclfydbfRbbcFeSfaraXcwfydbfRbbcFeSfaw9nmdkaQaAcbaeaiakc;abfaKamara8MJbbbbz:ejjjbgCcu9hmekakaaUdCakahUdzaka8JUdxakcuBdwakcFFF;7rBdla8AcbaKaLakcxfakcwfakclfz:fjjjbakydwgCcuSmekdnakc8WfaiaCcx2fgOydbgPaOclfydbgAaOcwfydbgXarabaeadalawaDz:gjjjbTmbalcefhlJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgkamaPcdtfgPaPydbcufBdbamaAcdtfgPaPydbcufBdbamaXcdtfgPaPydbcufBdbcbhXinazasaOaXcdtfydbcdtgAfydbcdtfgxhPaHaAfgvydbgQhAdnaQTmbdninaPydbaCSmeaPclfhPaAcufgATmdxbkkaPaxaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbkaKaCcK2fgPIdbh3aPIdlhaaPIdwhhaPIdxh8JaPIdzh8KaPIdCh8LaLaCfce86bbaga8LMhga8Fa8KMh8FaYa8JMhYa8EahMh8Ea5aaMh5aEa3MhEakyd88hPxekkdnaPTmbdnakyd80gAaPci2fgCciGTmbadaCfcbaPaAcu7fciGcefz:njjjb8AkabalcltfgPak8Pi8W83dbaPcwfakc8Wfcwf8Pib83dbalcefhlkcahPdninaPc98Smeakc;mbfaPfydbcbydj1jjbH:bjjjbbaPc98fhPxbkkakc:Wef8Kjjjjbalk;3vivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbaeabcitfgrarydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;Bloeue99vue99Due99dndnaembcuhkxekJbbjZaq:thxaiabcdtfhmavydbhPavydlhsavydwhzcbhHJFFuuhOcvhbcuhkindnaPamaHcdtfydbcdtgvfydbgATmbazasavfydbcdtfhiindndnawalaiydbgCcx2fgvclfydbgXfRbbcFeSawavydbgQfRbbcFeSfawavcwfydbgLfRbbcFeSfgKmbcbhvxekcehvaraQcdtfydbgYceSmbcehvaraXcdtfydbg8AceSmbcehvaraLcdtfydbgEceSmbdna8AcdSaYcdSfaEcdSfcd6mbaKcefhvxekaKcdfhvkdnavab9kmbdndnadTmbaoaCcK2fgQIdwadIdw:tg3a3NaQIdbadIdb:tg3a3NaQIdladIdl:tg3a3NMM:raD:vaxNJbbjZMJ9VO:d86JbbjZaQIdCadIdCNaQIdxadIdxNaQIdzadIdzNMMaqN:tg3a3J9VO:d869DENh3xekaraQcdtfydbaraXcdtfydbfaraLcdtfydbfc99f:Zh3kaCakavab6a3aO9DVgQEhkavabaQEhba3aOaQEhOkaiclfhiaAcufgAmbkkaHcefgHae9hmbkkakk;bddlue99dndndnabaecitfgrydlgwciGgDci9hmbarclfhqxekinabcbawcd4gwalaDcdtfIdbabaecitfIdb:tgkJbbbb9FEgDaecefgefadaialavaoz:fjjjbak:laoIdb9FTmdabaDaw7aefgecitfgrydlgwciGgDci9hmbkarclfhqkabaecitfhecuhbindnaiaeydbgDfRbbmbadaDcK2fgrIdwalIdw:tgkakNarIdbalIdb:tgkakNarIdlalIdl:tgkakNMM:rgkaoIdb9DTmbaoakUdbavaDBdbaqydbhwkaecwfheabcefgbawcd46mbkkk;yleoudnaladfgkRbbcFeSalaefgxRbbgmcFeSfabydwgPfalaifgsRbbcFeSfaD0abydxaq9pVgzce9hmbavawcltfgmab8Pdb83dbamcwfabcwfgm8Pdb83dbdndnamydbmbcbhqxekcbhDaohminalamabydbcdtfydbfcFe86bbamclfhmaDcefgDabydwgq6mbkkdnabydxglci2gDabydlgmfgPciGTmbaraPfcbalamcu7fciGcefz:njjjb8Aabydxci2hDabydlhmabydwhqkab9cb83dwababydbaqfBdbabaDcifc98GamfBdlaxRbbhmcbhPkdnamcFeGcFe9hmbaxaP86bbababydwgmcefBdwaoabydbcdtfamcdtfaeBdbkdnakRbbcFe9hmbakabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfadBdbkdnasRbbcFe9hmbasabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfaiBdbkarabydlfabydxci2faxRbb86bbarabydlfabydxci2fcefakRbb86bbarabydlfabydxci2fcdfasRbb86bbababydxcefBdxazk;Ckovud99euv99eul998Jjjjjbc:G;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:G:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaocafawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeao9cb83iKao9cb83izaoczfaocafawci2z1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:G:qefawz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:G:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:G:qefheaocafhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabazUd3abc8KfaxUdbabcafasUdbabcKfaCaxaPN:tUdbabcCfaXasaPN:tUdbabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabc8Ufae86bbdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabcRfav86bbdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:G;aef8Kjjjjbk:mvdouq99cbhi8Jjjjjbca9RglczfcwfcbBdbal9cb83izalcwfcbBdbal9cb83ibdnadTmbcbhvinaeaifhocbhrinalczfarfgwavawydbgwaoarfIdbgDaearawcx2ffIdb9DEBdbalarfgwavawydbgwaDaearawcx2ffIdb9EEBdbarclfgrcx9hmbkaicxfhiavcefgvad9hmbkkJbbbbhDcbhrcbhicbhvinaealarfydbcx2fgwIdwaealczfarfydbcx2fgoIdw:tgqaqNawIdbaoIdb:tgqaqNawIdlaoIdl:tgqaqNMMgqaDaqaD9EgwEhDavaiawEhiarclfhravcefgvci9hmbkaealczfaicdtgvfydbcx2fgrIdwaealavfydbcx2fglIdwMJbbbZNhqarIdlalIdlMJbbbZNhkarIdbalIdbMJbbbZNhxaD:rJbbbZNhDdnadTmbindnaecwfIdbgmaq:tgPaPNaeIdbgsax:tgPaPNaeclfIdbgzak:tgPaPNMMgPaDaDN9ETmbaqaDaP:rgH:vJbbbZNJbbbZMgPNamJbbjZaP:tgONMhqakaPNazaONMhkaxaPNasaONMhxaDaHMJbbbZNhDkaecxfheadcufgdmbkkabaDUdxabaqUdwabakUdlabaxUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:Ylequ8Jjjjjbcjx9Rgl8Kjjjjbcbhvalcjqfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjqfaDcefRbbfRbb9RcFeGci6aoalcjqfaDRbbfRbb9RcFeGci6faoalcjqfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjqffaocefgo86bbaxalcjqffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjqffao86bbarcifhravcefgvad9hmbkalcFeaiz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkfgwRbbgDcFe9hmbawax86bbaocjdfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjdfaDz:mjjjb8Aalcjxf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb",t=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 n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var x=new Uint8Array(m.length),b=0;b<m.length;++b){var T=m.charCodeAt(b);x[b]=T>96?T-97:T>64?T-39:T+4}for(var C=0,b=0;b<m.length;++b)x[C++]=x[b]<60?t[x[b]]:(x[b]-60)*64+x[++b];return x.buffer.slice(0,C)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,x){var b=m.meshlets[x*4+0],T=m.meshlets[x*4+1],C=m.meshlets[x*4+2],A=m.meshlets[x*4+3];return{vertices:m.vertices.subarray(b,b+C),triangles:m.triangles.subarray(T,T+A*3)}}function f(m,x,b,T,C,A,E){var v=n.exports.sbrk,D=n.exports.meshopt_buildMeshletsBound(m.length,C,A),R=v(D*c),O=v(D*C*4),M=v(D*A*3),N=v(m.byteLength),_=v(x.byteLength),S=new Uint8Array(n.exports.memory.buffer);S.set(s(m),N),S.set(s(x),_);var w=n.exports.meshopt_buildMeshlets(R,O,M,N,m.length,_,b,T,C,A,E);S=new Uint8Array(n.exports.memory.buffer);for(var I=S.subarray(R,R+w*c),L=new Uint32Array(I.buffer,I.byteOffset,I.byteLength/4).slice(),B=0;B<w;++B){var H=L[B*4+0],V=L[B*4+1],b=L[B*4+2],G=L[B*4+3];n.exports.meshopt_optimizeMeshlet(O+H*4,M+V,G,b)}var k=L[(w-1)*4+0],W=L[(w-1)*4+1],q=L[(w-1)*4+2],J=L[(w-1)*4+3],j=k+q,K=W+(J*3+3&-4),Q={meshlets:L,vertices:new Uint32Array(S.buffer,O,j).slice(),triangles:new Uint8Array(S.buffer,M,K*3).slice(),meshletCount:w};return v(R-v(0)),Q}function h(m){var x=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:x[0],centerY:x[1],centerZ:x[2],radius:x[3],coneApexX:x[4],coneApexY:x[5],coneApexZ:x[6],coneAxisX:x[7],coneAxisY:x[8],coneAxisZ:x[9],coneCutoff:x[10]}}function p(m,x,b,T){var C=n.exports.sbrk,A=[],E=C(x.byteLength),v=C(m.vertices.byteLength),D=C(m.triangles.byteLength),R=C(a),O=new Uint8Array(n.exports.memory.buffer);O.set(s(x),E),O.set(s(m.vertices),v),O.set(s(m.triangles),D);for(var M=0;M<m.meshletCount;++M){var N=m.meshlets[M*4+0],_=m.meshlets[M*4+0+1],S=m.meshlets[M*4+0+3];n.exports.meshopt_computeMeshletBounds(R,v+N*4,D+_,S,E,b,T),A.push(h(R))}return C(E-C(0)),A}function g(m,x,b,T){var C=n.exports.sbrk,A=C(a),E=C(m.byteLength),v=C(x.byteLength),D=new Uint8Array(n.exports.memory.buffer);D.set(s(m),E),D.set(s(x),v),n.exports.meshopt_computeClusterBounds(A,E,m.length,v,b,T);var R=h(A);return C(A-C(0)),R}return{ready:i,supported:!0,buildMeshlets:function(m,x,b,T,C,A){r(m.length%3==0),r(x instanceof Float32Array),r(x.length%b==0),r(b>=3),r(T<=255||T>0),r(C<=512),r(C%4==0),A=A||0;var E=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(E,x,x.length/b,b*4,T,C,A)},computeClusterBounds:function(m,x,b){r(m.length%3==0),r(m.length/3<=512),r(x instanceof Float32Array),r(x.length%b==0),r(b>=3);var T=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(T,x,x.length/b,b*4)},computeMeshletBounds:function(m,x,b){return r(m.meshletCount!=0),r(x instanceof Float32Array),r(x.length%b==0),r(b>=3),p(m,x,x.length/b,b*4)},extractMeshlet:function(m,x){return r(x>=0&&x<m.meshletCount),u(m,x)}}}();function dx(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,p,g,m,x;if(ci(a,"EXT_meshopt_compression")){let T=a.extensions.EXT_meshopt_compression;c=T.buffer,u=y(T.byteOffset,0),f=T.byteLength,h=!0,p=T.byteStride,g=T.count,m=T.mode,x=y(T.filter,"NONE")}let b=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=p,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=x,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=b,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(dx.prototype=Object.create(Ji.prototype),dx.prototype.constructor=dx);Object.defineProperties(dx.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function r2e(e){try{let t=s2e(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);cie.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=xt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load buffer view",t)}}dx.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,this._promise=r2e(this),this._promise)};function s2e(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}dx.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var lw=dx;function Lr(){}Lr._maxDecodingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Lr._decoderTaskProcessor=void 0;Lr._taskProcessorReady=!1;Lr._error=void 0;Lr._getDecoderTaskProcessor=function(){if(!l(Lr._decoderTaskProcessor)){let e=new bi("decodeDraco",Lr._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?Lr._taskProcessorReady=!0:Lr._error=new se("Draco decoder could not be initialized.")}).catch(t=>{Lr._error=t}),Lr._decoderTaskProcessor=e}return Lr._decoderTaskProcessor};Lr.decodePointCloud=function(e){let t=Lr._getDecoderTaskProcessor();if(l(Lr._error))throw Lr._error;if(Lr._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};Lr.decodeBufferView=function(e){let t=Lr._getDecoderTaskProcessor();if(l(Lr._error))throw Lr._error;if(Lr._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var Tg=Lr;var ni={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID"};function a2e(e){switch(e){case ni.POSITION:return"positionMC";case ni.NORMAL:return"normalMC";case ni.TANGENT:return"tangentMC";case ni.TEXCOORD:return"texCoord";case ni.COLOR:return"color";case ni.JOINTS:return"joints";case ni.WEIGHTS:return"weights";case ni.FEATURE_ID:return"featureId"}}ni.hasSetIndex=function(e){switch(e){case ni.POSITION:case ni.NORMAL:case ni.TANGENT:return!1;case ni.TEXCOORD:case ni.COLOR:case ni.JOINTS:case ni.WEIGHTS:case ni.FEATURE_ID:return!0}};ni.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return ni.POSITION;case"NORMAL":return ni.NORMAL;case"TANGENT":return ni.TANGENT;case"TEXCOORD":return ni.TEXCOORD;case"COLOR":return ni.COLOR;case"JOINTS":return ni.JOINTS;case"WEIGHTS":return ni.WEIGHTS;case"_FEATURE_ID":return ni.FEATURE_ID}};ni.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return ni.POSITION;case"RGBA":case"RGB":case"RGB565":return ni.COLOR;case"NORMAL":case"NORMAL_OCT16P":return ni.NORMAL;case"BATCH_ID":return ni.FEATURE_ID}};ni.getGlslType=function(e){switch(e){case ni.POSITION:case ni.NORMAL:case ni.TANGENT:return"vec3";case ni.TEXCOORD:return"vec2";case ni.COLOR:return"vec4";case ni.JOINTS:return"ivec4";case ni.WEIGHTS:return"vec4";case ni.FEATURE_ID:return"int"}};ni.getVariableName=function(e,t){let n=a2e(e);return l(t)&&(n+=`_${t}`),n};var pt=Object.freeze(ni);function Cg(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=xt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(Cg.prototype=Object.create(Ji.prototype),Cg.prototype.constructor=Cg);Object.defineProperties(Cg.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function c2e(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=xt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;lie(e,n)}}Cg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,this._promise=c2e(this),this._promise)};function lie(e,t){throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load Draco",t)}async function l2e(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=xt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var hx={};hx[pt.POSITION]="POSITION";hx[pt.NORMAL]="NORMAL";hx[pt.COLOR]="COLOR";hx[pt.TEXCOORD]="TEX_COORD";function u2e(e){for(let t in hx)if(hx.hasOwnProperty(t)&&e.startsWith(t))return hx[t]}Cg.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.PROCESSING||(l(this._dracoError)&&lie(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let p=u2e(h);l(p)&&i.accessors[n.attributes[h]].componentType===X.FLOAT&&(c.includes(p)||c.push(p))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=Tg.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=l2e(this,f)};Cg.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var uw=Cg;function f2e(e){let t=e.uint8Array,n=e.format,i=e.request,o=y(e.flipY,!1),r=y(e.skipColorSpaceConversion,!1),s=new Blob([t],{type:n}),a;return Ee.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(Ee.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new Ee({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var bC=f2e;function Lp(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Lp.prototype=Object.create(Ji.prototype),Lp.prototype.constructor=Lp);Object.defineProperties(Lp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});Lp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=d2e(this),this._promise):(this._promise=h2e(this),this._promise)};function uie(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function d2e(e){e._state=xt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await p2e(i);if(e.isDestroyed())return;let r=uie(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=xt.READY,e}catch(n){return e.isDestroyed()?void 0:fie(e,n,"Failed to load embedded image")}}async function h2e(e){e._state=xt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await g2e(i);if(e.isDestroyed())return;let r=uie(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=xt.READY,e}catch(o){return e.isDestroyed()?void 0:fie(e,o,`Failed to load image: ${n}`)}}function fie(e,t,n){return e.unload(),e._state=xt.FAILED,Promise.reject(e.getError(n,t))}function m2e(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new se("Image format is not recognized")}async function p2e(e){let t=m2e(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return eu(n)}return Lp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var _2e=/(^data:image\/ktx2)|(\.ktx2$)/i;function g2e(e){let t=e.getUrlComponent(!1,!0);return _2e.test(t)?eu(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}Lp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};Lp._loadImageFromTypedArray=bC;var fw=Lp;var y2e={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},ec=Object.freeze(y2e);function Ag(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=y(e.asynchronous,!0),f=y(e.loadBuffer,!1),h=y(e.loadTypedArray,!1),p=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=p,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Ag.prototype=Object.create(Ji.prototype),Ag.prototype.constructor=Ag);Object.defineProperties(Ag.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var x2e=new O9;Ag.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=b2e(this),this._promise):(this._promise=T2e(this),this._promise)};async function b2e(e){e._state=xt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=xt.LOADED,e)}catch(n){if(e.isDestroyed())return;P9(e,n)}}async function T2e(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=xt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=C2e(e,a),e._state=xt.PROCESSING,e}catch(s){if(e.isDestroyed())return;P9(e,s)}}function C2e(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Be.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,p=new Uint8Array(c,u,h);c=new Uint8Array(p).buffer,u=0,Qa("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Be.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Be.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Be.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function P9(e,t){throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load index buffer",t)}function O9(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}O9.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};O9.prototype.execute=function(){this.buffer=die(this.typedArray,this.indexDatatype,this.context)};function die(e,t,n){let i=Tt.createIndexBuffer({typedArray:e,context:n,usage:ke.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}Ag.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.LOADED&&this._state!==xt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=X.fromTypedArray(t),this._indexDatatype=n)}catch(o){P9(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=x2e;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,ec.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=die(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=xt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Ag.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var dw=Ag;function A2e(e,t,n){if(n=y(n,!1),n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var zs=A2e;function E2e(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var _r=E2e;function qt(){}qt.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};qt.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};qt.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?qt.objectLegacy(i,n):qt.object(i,n)};qt.accessor=function(e,t){return qt.topLevel(e,"accessors",t)};qt.accessorWithSemantic=function(e,t,n){let i={};return qt.mesh(e,function(o){return qt.meshPrimitive(o,function(r){let s=qt.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:qt.meshPrimitiveTarget(r,function(a){return qt.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};qt.accessorContainingVertexAttributeData=function(e,t){let n={};return qt.mesh(e,function(i){return qt.meshPrimitive(i,function(o){let r=qt.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:qt.meshPrimitiveTarget(o,function(s){return qt.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};qt.accessorContainingIndexData=function(e,t){let n={};return qt.mesh(e,function(i){return qt.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};qt.animation=function(e,t){return qt.topLevel(e,"animations",t)};qt.animationChannel=function(e,t){let n=e.channels;return qt.object(n,t)};qt.animationSampler=function(e,t){let n=e.samplers;return qt.object(n,t)};qt.buffer=function(e,t){return qt.topLevel(e,"buffers",t)};qt.bufferView=function(e,t){return qt.topLevel(e,"bufferViews",t)};qt.camera=function(e,t){return qt.topLevel(e,"cameras",t)};qt.image=function(e,t){return qt.topLevel(e,"images",t)};qt.material=function(e,t){return qt.topLevel(e,"materials",t)};qt.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};qt.mesh=function(e,t){return qt.topLevel(e,"meshes",t)};qt.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};qt.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};qt.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};qt.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};qt.node=function(e,t){return qt.topLevel(e,"nodes",t)};qt.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=qt.nodeInTree(e,u,n),l(c)))return c}}}};qt.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return qt.nodeInTree(e,i,n)};qt.program=function(e,t){return _r(e,"KHR_techniques_webgl")?qt.object(e.extensions.KHR_techniques_webgl.programs,t):qt.topLevel(e,"programs",t)};qt.sampler=function(e,t){return qt.topLevel(e,"samplers",t)};qt.scene=function(e,t){return qt.topLevel(e,"scenes",t)};qt.shader=function(e,t){return _r(e,"KHR_techniques_webgl")?qt.object(e.extensions.KHR_techniques_webgl.shaders,t):qt.topLevel(e,"shaders",t)};qt.skin=function(e,t){return qt.topLevel(e,"skins",t)};qt.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};qt.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};qt.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};qt.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};qt.technique=function(e,t){return _r(e,"KHR_techniques_webgl")?qt.object(e.extensions.KHR_techniques_webgl.techniques,t):qt.topLevel(e,"techniques",t)};qt.texture=function(e,t){return qt.topLevel(e,"textures",t)};var Pe=qt;function S2e(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var hf=S2e;function v2e(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return X.getSizeInBytes(t.componentType)*hf(t.type)}var su=v2e;function w2e(e){Pe.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=y(n.byteOffset,0))}),Pe.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=y(n.byteOffset,0))}),Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){if(i.mode=y(i.mode,te.TRIANGLES),!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=zs(e.materials,o)}})}),Pe.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=y(i.normalized,!1),l(o)){let r=e.bufferViews[o];r.byteStride=su(e,i),r.target=te.ARRAY_BUFFER}}),Pe.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=te.ELEMENT_ARRAY_BUFFER}}),Pe.material(e,function(n){let i=y(n.extensions,y.EMPTY_OBJECT),o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=y(u.transparency,1),c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=y(u.shininess,0))),o.transparent=y(o.transparent,!1),o.doubleSided=y(o.doubleSided,!1);return}n.emissiveFactor=y(n.emissiveFactor,[0,0,0]),n.alphaMode=y(n.alphaMode,"OPAQUE"),n.doubleSided=y(n.doubleSided,!1),n.alphaMode==="MASK"&&(n.alphaCutoff=y(n.alphaCutoff,.5));let r=i.KHR_techniques_webgl;l(r)&&Pe.materialValue(n,function(c){l(c.index)&&mx(c)}),mx(n.emissiveTexture),mx(n.normalTexture),mx(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=y(s.baseColorFactor,[1,1,1,1]),s.metallicFactor=y(s.metallicFactor,1),s.roughnessFactor=y(s.roughnessFactor,1),mx(s.baseColorTexture),mx(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=y(a.diffuseFactor,[1,1,1,1]),a.specularFactor=y(a.specularFactor,[1,1,1]),a.glossinessFactor=y(a.glossinessFactor,1),mx(a.specularGlossinessTexture))}),Pe.animation(e,function(n){Pe.animationSampler(n,function(i){i.interpolation=y(i.interpolation,"LINEAR")})});let t=D2e(e);return Pe.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=y(n.translation,[0,0,0]),n.rotation=y(n.rotation,[0,0,0,1]),n.scale=y(n.scale,[1,1,1])):n.matrix=y(n.matrix,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}),Pe.sampler(e,function(n){n.wrapS=y(n.wrapS,te.REPEAT),n.wrapT=y(n.wrapT,te.REPEAT)}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function D2e(e){let t={};return Pe.animation(e,function(n){Pe.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function mx(e){l(e)&&(e.texCoord=y(e.texCoord,0))}var TN=w2e;function I2e(e){return Pe.shader(e,function(t){CN(t)}),Pe.buffer(e,function(t){CN(t)}),Pe.image(e,function(t){CN(t)}),CN(e),e}function CN(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var px=I2e;function P2e(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var AN=P2e;function O2e(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),AN(e,t),n.length===0&&delete e.extensionsUsed}}var TC=O2e;var R2e=4;function M2e(e){if(Kh(e)!=="glTF")throw new se("File is not valid binary glTF");let n=hie(e,0,5),i=n[1];if(i!==1&&i!==2)throw new se("Binary glTF version is not 1 or 2");return i===1?L2e(e,n):N2e(e,n)}function hie(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*R2e,!0);return o}function L2e(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new se("Binary glTF scene format is not JSON");let r=20,s=r+i,a=iu(e,r,i),c=JSON.parse(a);px(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=y(f.binary_glTF,f.KHR_binary_glTF);l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return TC(c,"KHR_binary_glTF"),c}function N2e(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=hie(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=iu(u);o=JSON.parse(f),px(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var EN=M2e;function F2e(e){return Pe.shader(e,function(t){SN(t)}),Pe.buffer(e,function(t){SN(t)}),Pe.image(e,function(t){SN(t)}),SN(e),e}function SN(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var vN=F2e;function B2e(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),zs(n,t,!0)}var Sd=B2e;function k2e(e){switch(e){case X.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case X.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case X.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case X.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case X.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case X.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case X.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case X.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Eg=k2e;function V2e(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=hf(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,p=t.count,g=su(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,x=t.componentType,b=X.getSizeInBytes(x),T=new DataView(h.buffer),C=new Array(r),A=Eg(x);for(let E=0;E<p;E++){A(T,m,r,b,C);for(let v=0;v<r;v++){let D=C[v];s[v]=Math.min(s[v],D),a[v]=Math.max(a[v],D)}m+=g}return{min:s,max:a}}var CC=V2e;var U2e=[te.FUNC_ADD,te.FUNC_ADD],z2e=[te.ONE,te.ZERO,te.ONE,te.ZERO];function mie(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var H2e=[te.ZERO,te.ONE,te.SRC_COLOR,te.ONE_MINUS_SRC_COLOR,te.SRC_ALPHA,te.ONE_MINUS_SRC_ALPHA,te.DST_ALPHA,te.ONE_MINUS_DST_ALPHA,te.DST_COLOR,te.ONE_MINUS_DST_COLOR];function G2e(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(H2e.indexOf(e[n])===-1)return t;return e}function W2e(e){let t={},n={},i=e.techniques;return l(i)&&(Pe.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(mie(s,te.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:y(c.blendEquationSeparate,U2e),blendFactors:G2e(c.blendFuncSeparate,z2e)})}mie(s,te.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),Sd(e,"KHR_blend")),Pe.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Pe.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var wN=W2e;function j2e(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),zs(n,t,!0),Sd(e,t)}var DN=j2e;function q2e(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Pe.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Pe.techniqueAttribute(a,function(h,p){f=a.parameters[h],u.attributes[p]={semantic:f.semantic}}),Pe.techniqueUniform(a,function(h,p){f=a.parameters[h],u.uniforms[p]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=p}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],p={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];p.fragmentShader=zs(r.shaders,g,!0);let m=e.shaders[h.vertexShader];p.vertexShader=zs(r.shaders,m,!0),u.program=zs(r.programs,p),o[a.program]=u.program}i[c]=zs(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,Sd(e,"KHR_techniques_webgl"),DN(e,"KHR_techniques_webgl"))}return Pe.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Pe.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var IN=q2e;function Y2e(e,t){bo.typeOf.object("material",e),bo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let p=t(c.index,c);if(l(p))return p}if(l(u)&&l(u.index)){let p=t(u.index,u);if(l(p))return p}if(l(f)&&l(f.index)){let p=t(f.index,f);if(l(p))return p}if(l(h)&&l(h.index)){let p=t(h.index,h);if(l(p))return p}}}let o=Pe.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var hw=Y2e;var pie=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function X2e(e,t){return t=y(t,pie),pie.forEach(function(n){t.indexOf(n)>-1&&$2e(e,n)}),e}var K2e={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function $2e(e,t){let n=K2e[t],i=e[n];if(l(i)){let o=0,r=Qh[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(Zh[t](e,a-o),o++)}}function Zh(){}Zh.accessor=function(e,t){e.accessors.splice(t,1),Pe.mesh(e,function(i){Pe.meshPrimitive(i,function(o){Pe.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Pe.meshPrimitiveTarget(o,function(a){Pe.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Pe.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Pe.animation(e,function(i){Pe.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};Zh.buffer=function(e,t){e.buffers.splice(t,1),Pe.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};Zh.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Pe.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Pe.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Pe.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),_r(e,"KHR_draco_mesh_compression")&&Pe.mesh(e,function(i){Pe.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),_r(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(_r(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};Zh.image=function(e,t){e.images.splice(t,1),Pe.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};Zh.mesh=function(e,t){e.meshes.splice(t,1),Pe.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};Zh.node=function(e,t){e.nodes.splice(t,1),Pe.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Pe.animation(e,function(i){Pe.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Pe.technique(e,function(i){Pe.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Pe.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Pe.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};Zh.material=function(e,t){e.materials.splice(t,1),Pe.mesh(e,function(i){Pe.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};Zh.sampler=function(e,t){e.samplers.splice(t,1),Pe.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};Zh.texture=function(e,t){if(e.textures.splice(t,1),Pe.material(e,function(i){hw(i,function(o,r){r.index>t&&--r.index})}),_r(e,"EXT_feature_metadata")){Pe.mesh(e,function(r){Pe.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(_r(e,"EXT_mesh_features")&&Pe.mesh(e,function(i){Pe.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),_r(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Qh(){}Qh.accessor=function(e){let t={};return Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){Pe.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Pe.meshPrimitiveTarget(i,function(r){Pe.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Pe.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Pe.animation(e,function(n){Pe.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),_r(e,"EXT_mesh_gpu_instancing")&&Pe.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),_r(e,"CESIUM_primitive_outline")&&Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Qh.buffer=function(e){let t={};return Pe.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Qh.bufferView=function(e){let t={};if(Pe.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Pe.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Pe.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),_r(e,"KHR_draco_mesh_compression")&&Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),_r(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(_r(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Qh.image=function(e){let t={};return Pe.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Qh.mesh=function(e){let t={};return Pe.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function _ie(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!_ie(e,o,n)}).length===0}Qh.node=function(e){let t={};return Pe.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Pe.skinJoint(n,function(i){t[i]=!0})}),Pe.animation(e,function(n){Pe.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Pe.technique(e,function(n){Pe.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Pe.node(e,function(n,i){_ie(e,i,t)||(t[i]=!0)}),t};Qh.material=function(e){let t={};return Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Qh.texture=function(e){let t={};if(Pe.material(e,function(n){hw(n,function(i){t[i]=!0})}),_r(e,"EXT_feature_metadata")){Pe.mesh(e,function(o){Pe.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let p=c[f].featureIds.texture;t[p.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(_r(e,"EXT_mesh_features")&&Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),_r(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Qh.sampler=function(e){let t={};return Pe.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var PN=X2e;function Z2e(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:zs(e.buffers,n),byteOffset:0,byteLength:t.length};return zs(e.bufferViews,o)}var ON=Z2e;function Q2e(e,t){let n=su(e,t),i=X.getSizeInBytes(t.componentType),o=hf(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),p=Eg(t.componentType);for(let g=0;g<r;++g){p(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var RN=Q2e;function J2e(e){let t;return Pe.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===te.BYTE?MN(e,i,X.UNSIGNED_BYTE):t!==te.UNSIGNED_BYTE&&t!==te.UNSIGNED_SHORT&&MN(e,i,X.UNSIGNED_SHORT)}),Pe.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===te.BYTE?MN(e,i,X.UNSIGNED_BYTE):t===te.SHORT&&MN(e,i,X.UNSIGNED_SHORT)}),e}function MN(e,t,n){let i=X.createTypedArray(n,RN(e,t)),o=new Uint8Array(i.buffer);t.bufferView=ON(e,o),t.componentType=n,t.byteOffset=0}var LN=J2e;function eBe(e,t){return TC(e,t),t==="CESIUM_RTC"&&tBe(e),R9(e,t)}function tBe(e){Pe.technique(e,function(t){Pe.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function R9(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)R9(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&R9(e[o],t);return i}}var AC=eBe;var NN={.8:aBe,"1.0":DBe,"2.0":void 0};function nBe(e,t){t=y(t,y.EMPTY_OBJECT);let n=t.targetVersion,i=e.version;e.asset=y(e.asset,{version:"1.0"}),e.asset.version=y(e.asset.version,"1.0"),i=y(i,e.asset.version).toString(),Object.prototype.hasOwnProperty.call(NN,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(NN,i)||(i="1.0"));let o=NN[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=NN[i];return t.keepLegacyExtensions||(OBe(e,t),RBe(e)),e}function xie(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function iBe(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=y(a.primitive,te.TRIANGLES);a.mode=y(a.mode,c),delete a.primitive}}}}function oBe(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function rBe(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,p=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let x=f[m];if(x.target.path==="rotation"){let b=h[p[x.sampler].output];if(l(r[b]))continue;r[b]=!0;let T=n[b],C=i[T.bufferView],E=o[C.buffer].extras._pipeline.source,v=E.byteOffset+C.byteOffset+T.byteOffset,D=T.componentType,R=T.count,O=hf(T.type),M=T.count*O,N=X.createArrayBufferView(D,E.buffer,v,M);for(let _=0;_<R;_++){let S=_*O;d.unpack(N,S,s);let w=N[S+3];Le.fromAxisAngle(s,w,a),Le.pack(a,N,S)}}}}}}function sBe(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=y(i.pass,"defaultPass");if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=y(i.attributes,a.attributes),i.program=y(i.program,a.program),i.uniforms=y(i.uniforms,a.uniforms),i.states=y(i.states,s.states)}delete i.passes,delete i.pass}}}function aBe(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,xie(e),iBe(e),oBe(e),rBe(e),sBe(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=y(e.extensions,{});e.extensions=n;let i=y(n.KHR_materials_common,{});n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,Sd(e,"KHR_materials_common")}}function cBe(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function gie(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function lBe(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=gie(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Pe.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Pe.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Pe.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Pe.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Pe.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Pe.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Pe.mesh(e,function(s){Pe.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Pe.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Pe.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=zs(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Pe.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Pe.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Pe.animation(e,function(s){let a={};s.samplers=gie(s.samplers,a),Pe.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Pe.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Pe.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Pe.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Pe.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Pe.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Pe.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function uBe(e){Pe.animation(e,function(t){Pe.animationSampler(t,function(n){delete n.name})})}function fBe(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Pe.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function dBe(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var hBe={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function mBe(e){let t=e.extensionsUsed;if(e.extensionsRequired=y(e.extensionsRequired,[]),l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(hBe[o])&&e.extensionsRequired.push(o)}}}function pBe(e){Pe.buffer(e,function(t){delete t.type})}function _Be(e){Pe.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function gBe(e){Pe.mesh(e,function(t){Pe.meshPrimitive(t,function(n){Pe.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Pe.technique(e,function(t){Pe.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var yBe={POSITION:!0,NORMAL:!0,TANGENT:!0},xBe={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function bBe(e){let t={};Pe.mesh(e,function(n){Pe.meshPrimitive(n,function(i){Pe.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=xBe[a];l(f)?(u=f+c,t[r]=u):l(yBe[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Pe.technique(e,function(n){Pe.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function TBe(e){Pe.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function L9(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:su(e,t)}function CBe(e){Pe.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Pe.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=L9(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(y(i.byteLength,0),r)}})}function ABe(e){let t,n,i,o=e.bufferViews,r={};Pe.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Pe.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=y(s[a.bufferView],[]),s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(p,g){return p.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let p=c[t],g=L9(e,p),m=p.byteOffset,x=p.count*g;delete p.byteStride;let b=t<h-1,T=b?L9(e,c[t+1]):void 0;if(g!==T){let C=He(i,!0);r[a]&&(C.byteStride=g),C.byteOffset+=u,C.byteLength=m+x-u;let A=zs(o,C);for(n=f;n<=t;++n)p=c[n],p.bufferView=A,p.byteOffset=p.byteOffset-u;u=b?c[t+1].byteOffset:void 0,f=t+1}}}PN(e,["accessor","bufferView","buffer"])}function EBe(e){Pe.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=CC(e,n);n.min=i.min,n.max=i.max}})}function bie(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||oe.fromArray(e.rotation).equals(new oe(0,0,0,1)))&&(!l(e.matrix)||F.fromColumnMajorArray(e.matrix).equals(F.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Tie(e,t){Pe.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Pe.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),bie(n)&&Tie(e,i))}}),delete e.nodes[t]}function SBe(e){return Pe.node(e,function(t,n){bie(t)&&Tie(e,n)}),e}function vBe(e){Pe.animation(e,function(t){Pe.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=CC(e,i);i.min=o.min,i.max=o.max}})})}function wBe(e){Pe.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=CC(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function DBe(e){e.asset=y(e.asset,{}),e.asset.version="2.0",xie(e),cBe(e),SBe(e),lBe(e),uBe(e),dBe(e),mBe(e),CBe(e),ABe(e),EBe(e),vBe(e),wBe(e),pBe(e),_Be(e),gBe(e),bBe(e),LN(e),TBe(e),wN(e),IN(e),fBe(e)}var IBe=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],PBe=["u_diffuse","u_diffuse_mat"];function N9(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function F9(e){return l(e.index)}function B9(e){return Array.isArray(e)&&e.length===4}function Cie(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function OBe(e,t){t=y(t,y.EMPTY_OBJECT);let n=y(t.baseColorTextureNames,IBe),i=y(t.baseColorFactorNames,PBe);Pe.material(e,function(o){Pe.materialValue(o,function(r,s){n.indexOf(s)!==-1&&F9(r)?(N9(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&B9(r)&&(N9(o),o.pbrMetallicRoughness.baseColorFactor=Cie(r))})}),AC(e,"KHR_techniques_webgl"),AC(e,"KHR_blend")}function M9(e,t){l(t)&&(B9(t)?e.pbrMetallicRoughness.baseColorFactor=Cie(t):F9(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function yie(e,t){l(t)&&(B9(t)?e.emissiveFactor=t.slice(0,3):F9(t)&&(e.emissiveTexture=t))}function RBe(e){Pe.material(e,function(t){let n=y(t.extensions,y.EMPTY_OBJECT).KHR_materials_common;if(!l(n))return;let i=y(n.values,{}),o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;N9(t),n.technique==="CONSTANT"?(Sd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},M9(t,s),M9(t,o)):(M9(t,r),yie(t,o),yie(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),AC(e,"KHR_materials_common")}var FN=nBe;function tc(){}tc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=`
${n.message}`);let o=new se(i);return l(n)&&(o.stack=`Original stack:
${n.stack}
Handler stack:
${o.stack}`),o};tc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:F.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};tc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};tc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};tc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};tc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};tc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=pt.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=on.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":on.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var MBe=new d,LBe=new d;tc.getPositionMinMax=function(e,t,n){let i=tc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,LBe),o=d.add(o,n,MBe)),{min:r,max:o}};tc.getAxisCorrectionMatrix=function(e,t,n){return n=F.clone(F.IDENTITY,n),e===Vo.Y?n=F.clone(Vo.Y_UP_TO_Z_UP,n):e===Vo.X&&(n=F.clone(Vo.X_UP_TO_Z_UP,n)),t===Vo.Z&&(n=F.multiplyTransformation(n,Vo.Z_UP_TO_X_UP,n)),n};var NBe=new Z;tc.getCullFace=function(e,t){if(!Ne.isTriangles(t))return xi.BACK;let n=F.getMatrix3(e,NBe);return Z.determinant(n)<0?xi.FRONT:xi.BACK};tc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};tc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,WEB3D_quantized_attributes:!0};tc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!tc.supportedExtensions[i])throw new se(`Unsupported glTF Extension: ${i}`)}};var Kt=tc;function Sg(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Sg.prototype=Object.create(Ji.prototype),Sg.prototype.constructor=Sg);Object.defineProperties(Sg.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});Sg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,l(this._gltfJson)?(this._promise=Aie(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=Eie(this,this._typedArray),this._promise):(this._promise=FBe(this),this._promise))};async function FBe(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;k9(e,n)}return Eie(e,t)}function k9(e,t){e.unload(),e._state=xt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function BBe(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!_r(t,"KHR_techniques_webgl")&&!_r(t,"KHR_materials_common"))return Promise.resolve();let n=[];Pe.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),FN(t)}function kBe(e){let t=[];return Pe.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&G_(i)&&(delete n.uri,t.push(Ee.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function VBe(e,t){let n=[];return Pe.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function Aie(e,t){try{px(t),await kBe(t),await BBe(e,t),TN(t),await VBe(e,t),vN(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new se(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Kt.checkSupportedExtensions(i),e._gltf=t,e._state=xt.READY,e}catch(n){if(e.isDestroyed())return;k9(e,n)}}async function Eie(e,t){let n;try{Kh(t)==="glTF"?n=EN(t):n=cr(t)}catch(i){if(e.isDestroyed())return;k9(e,i)}return Aie(e,n)}Sg.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};Sg.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var mw=Sg;var UBe={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},Np=Object.freeze(UBe);var Co={};function zBe(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function HBe(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function GBe(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function WBe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function jBe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function qBe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function YBe(){this.attributes=[]}function XBe(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0}function KBe(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function $Be(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function ZBe(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function QBe(){this.nodes=[]}var JBe={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function e3e(){this.input=[],this.interpolation=void 0,this.output=[]}function t3e(){this.node=void 0,this.path=void 0}function n3e(){this.sampler=void 0,this.target=void 0}function i3e(){this.name=void 0,this.samplers=[],this.channels=[]}function o3e(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function r3e(){this.name=void 0,this.stages=[]}function Sie(){this.credits=[]}function s3e(){this.asset=new Sie,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=F.clone(F.IDENTITY),this.extensions={}}function a3e(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=Z.clone(Z.IDENTITY),this.scale=1,this.channels=void 0}function vg(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=oe.clone(vg.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=vg.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=vg.DEFAULT_ROUGHNESS_FACTOR}vg.DEFAULT_BASE_COLOR_FACTOR=oe.ONE;vg.DEFAULT_METALLIC_FACTOR=1;vg.DEFAULT_ROUGHNESS_FACTOR=1;function _x(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=oe.clone(_x.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(_x.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=_x.DEFAULT_GLOSSINESS_FACTOR}_x.DEFAULT_DIFFUSE_FACTOR=oe.ONE;_x.DEFAULT_SPECULAR_FACTOR=d.ONE;_x.DEFAULT_GLOSSINESS_FACTOR=1;function pw(){this.specularFactor=pw.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(pw.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}pw.DEFAULT_SPECULAR_FACTOR=1;pw.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function _w(){this.anisotropyStrength=_w.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=_w.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}_w.DEFAULT_ANISOTROPY_STRENGTH=0;_w.DEFAULT_ANISOTROPY_ROTATION=0;function gw(){this.clearcoatFactor=gw.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=gw.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}gw.DEFAULT_CLEARCOAT_FACTOR=0;gw.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function V9(){this.metallicRoughness=new vg,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(V9.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=Np.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}V9.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Co.Quantization=zBe;Co.Attribute=HBe;Co.Indices=GBe;Co.FeatureIdAttribute=WBe;Co.FeatureIdTexture=qBe;Co.FeatureIdImplicitRange=jBe;Co.MorphTarget=YBe;Co.Primitive=XBe;Co.Instances=KBe;Co.Skin=$Be;Co.Node=ZBe;Co.Scene=QBe;Co.AnimatedPropertyType=Object.freeze(JBe);Co.AnimationSampler=e3e;Co.AnimationTarget=t3e;Co.AnimationChannel=n3e;Co.Animation=i3e;Co.ArticulationStage=o3e;Co.Articulation=r3e;Co.Asset=Sie;Co.Components=s3e;Co.TextureReader=a3e;Co.MetallicRoughness=vg;Co.SpecularGlossiness=_x;Co.Specular=pw;Co.Anisotropy=_w;Co.Clearcoat=gw;Co.Material=V9;var xn=Co;var BN={};BN.getImageIdFromTexture=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};BN.createSampler=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=En.REPEAT,r=En.REPEAT,s=$t.LINEAR,a=pi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=y(h.wrapS,o),r=y(h.wrapT,r),s=y(h.minFilter,s),a=y(h.magFilter,a)}return i&&s!==$t.LINEAR&&s!==$t.NEAREST&&(s===$t.NEAREST_MIPMAP_NEAREST||s===$t.NEAREST_MIPMAP_LINEAR?s=$t.NEAREST:s=$t.LINEAR),new Zt({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var c3e=new U(1,1);BN.createModelTextureReader=function(e){var c;e=y(e,y.EMPTY_OBJECT);let{textureInfo:t,channels:n,texture:i}=e,o=y(t.texCoord,0),r,s=(c=t.extensions)==null?void 0:c.KHR_texture_transform;if(l(s)){o=y(s.texCoord,o);let u=l(s.offset)?U.unpack(s.offset):U.ZERO,f=y(s.rotation,0),h=l(s.scale)?U.unpack(s.scale):c3e;f=-f,r=new Z(Math.cos(f)*h.x,-Math.sin(f)*h.y,u.x,Math.sin(f)*h.x,Math.cos(f)*h.y,u.y,0,0,1)}let a=new xn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var au=BN;function l3e(e){let t=document.createElement("canvas");return t.width=P.nextPowerOfTwo(e.width),t.height=P.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var gx=l3e;function wg(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=y(e.asynchronous,!0),u=i.index,f=au.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(wg.prototype=Object.create(Ji.prototype),wg.prototype.constructor=wg);Object.defineProperties(wg.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var u3e=new U9;async function f3e(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=xt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load texture",n)}}wg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,this._promise=f3e(this),this._promise)};function U9(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}U9.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};U9.prototype.execute=function(){this.texture=vie(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function vie(e,t,n,i,o,r){let s=i.internalFormat,a=!1;nt.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=au.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,p=u===$t.NEAREST_MIPMAP_NEAREST||u===$t.NEAREST_MIPMAP_LINEAR||u===$t.LINEAR_MIPMAP_NEAREST||u===$t.LINEAR_MIPMAP_LINEAR,g=!l(s)&&p,m=g||f===En.REPEAT||f===En.MIRRORED_REPEAT||h===En.REPEAT||h===En.MIRRORED_REPEAT,x=!P.isPowerOfTwo(i.width)||!P.isPowerOfTwo(i.height),b=m&&x,T;return l(s)?(!r.webgl2&&nt.isCompressedFormat(s)&&x&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),T=Rt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(b&&(i=gx(i)),T=Rt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&T.generateMipmap(),T}wg.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.LOADED&&this._state!==xt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=xt.PROCESSING;let t;if(this._asynchronous){let n=u3e;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,ec.TEXTURE))return;t=n.texture}else t=vie(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=xt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};wg.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var yw=wg;function Dg(e){e=y(e,y.EMPTY_OBJECT);let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=y(e.asynchronous,!0),p=y(e.loadBuffer,!1),g=y(e.loadTypedArray,!1);this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=h,this._loadBuffer=p,this._loadTypedArray=g,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Dg.prototype=Object.create(Ji.prototype),Dg.prototype.constructor=Dg);Object.defineProperties(Dg.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function d3e(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}Dg.prototype.load=async function(){return l(this._promise)?this._promise:d3e(this._draco,this._attributeSemantic)?(this._promise=m3e(this),this._promise):(this._promise=_3e(this),this._promise)};function h3e(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new xn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=on.VEC2,a.normalizationRange=r;else{let c=on.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function m3e(e){e._state=xt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=xt.LOADED,e)}catch{if(e.isDestroyed())return;z9(e)}}function p3e(e){e._state=xt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=h3e(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function _3e(e){e._state=xt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=xt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;z9(e,n)}}function z9(e,t){throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load vertex buffer",t)}function H9(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}H9.prototype.set=function(e,t){this.typedArray=e,this.context=t};H9.prototype.execute=function(){this.buffer=wie(this.typedArray,this.context)};function wie(e,t){let n=Tt.createVertexBuffer({typedArray:e,context:t,usage:ke.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var g3e=new H9;Dg.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.LOADED&&this._state!==xt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){z9(this,i)}p3e(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=g3e;if(i.set(n,e.context),!e.jobScheduler.execute(i,ec.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=wie(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=xt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Dg.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var xw=Dg;function bw(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=y(e.properties,{}),i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=He(e.extras,!0),this._extensions=He(e.extensions,!0)}bw.fromJson=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=Rp.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new bw({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(bw.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});bw.BATCH_TABLE_CLASS_NAME="_batchTable";var Jh=bw;function kN(e){e=y(e,y.EMPTY_OBJECT);let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=He(e.extras,!0),this._extensions=He(e.extensions,!0)}kN.fromJson=function(e){return new kN({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(kN.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var VN=kN;function UN(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=y(e.valueType,Ft.UINT16);this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=He(e.extras,!0),this._extensions=He(e.extensions,!0)}UN.fromJson=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.enum,i=n.values.map(function(o){return VN.fromJson(o)});return new UN({id:t,values:i,valueType:Ft[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(UN.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var zN=UN;function HN(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.classes,{}),n=y(e.enums,{});this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=He(e.extras,!0),this._extensions=He(e.extensions,!0)}HN.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=zN.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Jh.fromJson({id:i,class:e.classes[i],enums:t}));return new HN({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(HN.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var mf=HN;function yx(e){e=y(e,y.EMPTY_OBJECT);let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?mf.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(yx.prototype=Object.create(Ji.prototype),yx.prototype.constructor=yx);Object.defineProperties(yx.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});yx.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=y3e(this),this._promise)};async function y3e(e){let t=e._resource;e._state=xt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=mf.fromJson(n),e._state=xt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=xt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}yx.prototype.unload=function(){this._schema=void 0};var Tw=yx;var vd={};function EC(e){return cp(e.url)}function GN(e){let{byteOffset:t,byteLength:n}=e;if(ci(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=y(i.byteOffset,0),n=i.byteLength}return`${t}-${t+n}`}function x3e(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Die(e,t){return`${EC(e)}-buffer-id-${t}`}function Cw(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return EC(o)}return Die(n,t)}function G9(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=Cw(a,s,n,i),u=GN(r);return`${c}-range-${u}`}function Iie(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let p=i.getDerivedResource({url:s});return EC(p)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=Cw(u,c,n,i),h=GN(a);return`${f}-range-${h}`}function b3e(e,t){let n=au.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}vd.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${EC(n)}`};vd.getExternalBufferCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{resource:t}=e;return`external-buffer:${EC(t)}`};vd.getEmbeddedBufferCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Die(t,n)}`};vd.getGltfCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltfResource:t}=e;return`gltf:${EC(t)}`};vd.getBufferViewCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];ci(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=Cw(a,s,i,o),u=GN(r);return`buffer-view:${c}-range-${u}`};vd.getDracoCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${G9(t,n,i,o)}`};vd.getVertexBufferCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,attributeSemantic:a,dequantize:c=!1,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h="";if(c&&(h+="-dequantize"),u&&(h+="-buffer",h+=`-context-${o.context.id}`),f&&(h+="-typed-array"),l(s))return`vertex-buffer:${G9(t,s,n,i)}-draco-${a}${h}`;let p=t.bufferViews[r],g=p.buffer,m=t.buffers[g],x=Cw(m,g,n,i),b=GN(p);return`vertex-buffer:${x}-range-${b}${h}`};vd.getIndexBufferCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${G9(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,p=t.bufferViews[h],g=p.buffer,m=t.buffers[g],x=Cw(m,g,i,o),b=x3e(f,p);return`index-buffer:${x}-accessor-${b}${u}`};vd.getImageCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Iie(t,n,i,o)}`};vd.getTextureCacheKey=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=au.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Iie(t,c,i,o),f=b3e(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var cu=vd;function Aw(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}Aw.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};Aw.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};Aw.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};Aw.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var WN=Aw;function Nn(){}Nn.cacheEntries={};Nn.statistics=new WN;function T3e(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new T3e(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{schema:t,resource:n}=e,i=cu.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new Tw({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{parentResource:t,bufferId:n,typedArray:i}=e,o=cu.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new xC({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{resource:t}=e,n=cu.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new xC({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=cu.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new mw({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=cu.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new lw({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=cu.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new uw({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,attributeSemantic:c,accessorId:u,asynchronous:f=!0,dequantize:h=!1,loadBuffer:p=!1,loadTypedArray:g=!1}=e,m=cu.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,attributeSemantic:c,dequantize:h,loadBuffer:p,loadTypedArray:g}),x=Nn.get(m);return l(x)?x:(x=new xw({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,attributeSemantic:c,accessorId:u,cacheKey:m,asynchronous:f,dequantize:h,loadBuffer:p,loadTypedArray:g}),Nn.add(x))};Nn.getIndexBufferLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=cu.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),p=Nn.get(h);return l(p)?p:(p=new dw({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(p))};Nn.getImageLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=cu.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new fw({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=cu.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new yw({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[xw,dw,uw,yw,fw,lw,xC,Tw,mw],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var wi=Nn;function ca(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(ca.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});ca.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};ca.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};ca.prototype.contentIsAvailableAtIndex=function(e,t){return t=y(t,0),this._contentAvailabilityBitstreams[t].getBit(e)};ca.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};ca.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};ca.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};ca.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};ca.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===ss.OCTREE&&(t=3),e>>t};ca.fromSubtreeJson=async function(e,t,n,i,o){let r=new ca(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=C3e(n);let a=s.json;r._subtreeJson=a;let c;if(ci(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let C=a.tileMetadata;c=a.propertyTables[C]}let u=[];if(l(a.contentMetadata)){let C=a.contentMetadata.length;for(let A=0;A<C;A++){let E=a.contentMetadata[A];u.push(a.propertyTables[E])}}let f,h=i.metadataSchema,p=a.subtreeMetadata;if(l(p)){let C=p.class,A=h.classes[C];f=new yN({subtreeMetadata:p,class:A})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],ci(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(y(a.contentAvailability,g));let m=A3e(a.buffers),x=E3e(a.bufferViews,m);S3e(a,x),l(c)&&Pie(c,x);for(let C=0;C<u.length;C++){let A=u[C];Pie(A,x)}let b=await v3e(r,m,s.binary),T=D3e(x,b);return I3e(r,a,i,T),l(c)&&(P3e(r,i,T),R3e(r)),O3e(r,i,T),M3e(r),r._ready=!0,r};function C3e(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=cr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function A3e(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function E3e(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function S3e(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Pie(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=y(r.values,r.bufferView);i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=y(r.stringOffsets,r.stringOffsetBufferView);l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=y(r.arrayOffsets,r.arrayOffsetBufferView);l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function v3e(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=w3e(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function w3e(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=wi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function D3e(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function I3e(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=ci(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=W9(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let p=0;p<t.contentAvailabilityHeaders.length;p++){let g=W9(t.contentAvailabilityHeaders[p],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=W9(t.childSubtreeAvailability,i,a)}function W9(e,t,n,i){if(l(e.constant))return new sw({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new sw({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function P3e(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new Ed({class:a,count:o,properties:i.properties,bufferViews:n})}function O3e(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,p=r.classes[h],g=new Ed({class:p,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Oie(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function R3e(e){let t=Oie(e._tileAvailability);e._tileJumpBuffer=t}function M3e(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Oie(o);t.push(r)}}ca.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new se("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};ca.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new se("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function L3e(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function N3e(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}ca.prototype.getTileMetadataView=function(e){let t=L3e(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new aw({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};ca.prototype.getContentMetadataView=function(e,t){let n=N3e(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new aw({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};ca.prototype.isDestroyed=function(){return!1};ca.prototype.destroy=function(){return l(this._bufferLoader)&&wi.unload(this._bufferLoader),ue(this)};var SC=ca;var F3e={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},vC=Object.freeze(F3e);var wd={};wd.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:wd.parseBoundingVolumeSemantic("TILE",e),minimumHeight:wd._parseMinimumHeight("TILE",e),maximumHeight:wd._parseMaximumHeight("TILE",e)},content:{boundingVolume:wd.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:wd._parseMinimumHeight("CONTENT",e),maximumHeight:wd._parseMaximumHeight("CONTENT",e)}}};wd.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};wd._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};wd._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var wC=wd;function Bc(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(Bc.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Bc.fromSubtreeJson=async function(e,t,n,i,o,r){r=y(r,0);let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await SC.fromSubtreeJson(n,i,s,a,c),f=new Bc(e,t,n);return f._implicitSubtree=u,B3e(f,u),f._ready=!0,f};function B3e(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=V3e(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=k3e(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=X3e(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function k3e(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function V3e(e,t,n,i){let s=Rie(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let p=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let x=p+m;if(!t.tileIsAvailableAtIndex(x)){u.push(void 0);continue}let b=t.getParentMortonIndex(m),T=c[b],C=m%f.branchingFactor,A=Rie(e,t,T,C,x);T.children.push(A),a.numberOfTilesTotal++,u.push(A)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function Mie(e,t,n){let i=vC.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Rie(e,t,n,i,o,r){let s=e._implicitTileset,a;y(r,!1)?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let D=wC.parseAllBoundingVolumeSemantics(c);u=D.tile,f=D.content}let p=t.contentPropertyTableJsons.length,g=!1;for(let D=0;D<p;D++)if(t.contentIsAvailableAtCoordinates(a,D)){g=!0;break}let m=H3e(s,a,i,r,n,u),x=[];for(let D=0;D<s.contentCount;D++){if(!t.contentIsAvailableAtIndex(o,D))continue;let M={uri:s.contentUriTemplates[D].getDerivedResource({templateValues:a.getTemplateValues()}).url},N=G3e(m,f);l(N)&&(M.boundingVolume=N),x.push(At(M,s.contentHeaders[D]))}let b=Mie(c,s,a),T={boundingVolume:m,geometricError:b,refine:s.refine,contents:x},C=!0,A=He(s.tileHeader,C);delete A.boundingVolume,delete A.transform,delete A.metadata;let E=At(T,A,C),v=kie(e,s.baseResource,E,n);return v.implicitCoordinates=a,v.implicitSubtree=t,v.metadata=c,v.hasImplicitContentMetadata=g,v}function jN(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(ci(e,"3DTILES_bounding_volume_S2")||l(e.region))}function q9(e,t){l(t)&&(ci(e,"3DTILES_bounding_volume_S2")?z3e(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&U3e(e.region,t.minimumHeight,t.maximumHeight))}function U3e(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function z3e(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function H3e(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!jN(r.boundingVolume,r)&&jN(e.boundingVolume,r)?s=Lie(e,t,n,y(i,!1),o):s=r.boundingVolume,q9(s,r),s}function G3e(e,t){let n;return l(t)&&(n=t.boundingVolume),jN(n,t)?q9(n,t):jN(e,t)&&(n=He(e,!0),q9(n,t)),n}function Lie(e,t,n,i,o){let r=e.boundingVolume;return ci(r,"3DTILES_bounding_volume_S2")?Nie(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:Bie(r.region,t.level,t.x,t.y,t.z)}:{box:Fie(r.box,t.level,t.x,t.y,t.z)}}function Nie(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:xg.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?rw.encode2D(i,o,r):rw.encode2D(i,r,o),f=xg.fromFacePositionLevel(c,BigInt(u),i),h,p;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,p=n<4?g:a.maximumHeight}else h=a.minimumHeight,p=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:xg.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:p}}}}var W3e=new d,j3e=new d,j9=new d,q3e=new Z;function Fie(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,j3e),s=Z.unpack(e,3,q3e),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,W3e);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let p=d.fromElements(c,u,f,j9);p=Z.multiplyByVector(s,p,j9),p=d.add(p,r,j9);let g=Z.clone(s);g=Z.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(p,m),Z.pack(g,m,3),m}var Y3e=new ae;function Bie(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,Y3e),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=P.negativePiToPi(r.west+n*u),h=P.negativePiToPi(f+u),p=c*r.height,g=P.negativePiToPi(r.south+i*p),m=P.negativePiToPi(g+p),x=s,b=a;if(l(o)){let T=c*(a-s);x+=o*T,b=x+T}return[f,g,h,m,x,b]}function X3e(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=Lie(i,o,n,!1,t),s=Mie(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=kie(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function kie(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}Bc.prototype.hasProperty=function(e,t){return!1};Bc.prototype.getFeature=function(e){};Bc.prototype.applyDebugSettings=function(e,t){};Bc.prototype.applyStyle=function(e){};Bc.prototype.update=function(e,t){};Bc.prototype.pick=function(e,t,n){};Bc.prototype.isDestroyed=function(){return!1};Bc.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};Bc._deriveBoundingBox=Fie;Bc._deriveBoundingRegion=Bie;Bc._deriveBoundingVolumeS2=Nie;var Ew=Bc;var K3e={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},lu=Object.freeze(K3e);function DC(e,t){this._distance=t,this._normal=new Vie(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(DC.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});DC.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new DC(e.normal,e.distance),t};DC.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new DC(e.normal,e.distance)};function Vie(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(Vie.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var IC=DC;function nc(e){e=y(e,y.EMPTY_OBJECT),this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=y(e.enabled,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this.edgeColor=z.clone(y(e.edgeColor,z.WHITE)),this.edgeWidth=y(e.edgeWidth,0),this.planeAdded=new me,this.planeRemoved=new me,this._owner=void 0;let t=y(e.unionClippingRegions,!1);this._unionClippingRegions=t,this._testIntersection=t?Wie:jie,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function Wie(e){return e===jt.OUTSIDE}function jie(e){return e===jt.INSIDE}Object.defineProperties(nc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?Wie:jie)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function Uie(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}nc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){Uie(n,i)},e.index=t,Uie(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};nc.prototype.get=function(e){return this._planes[e]};function qie(e,t){let n=e.length;for(let i=0;i<n;++i)if(sn.equals(e[i],t))return i;return-1}nc.prototype.contains=function(e){return qie(this._planes,e)!==-1};nc.prototype.remove=function(e){let t=this._planes,n=qie(t,e);if(n===-1)return!1;e instanceof IC&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof IC&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};nc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof IC&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var $3e=new oe,Z3e=new oe;function zie(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=Bn.octEncodeToCartesian4(a.normal,Z3e);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=oe.packFloat(a.distance,$3e);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function Hie(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function Yie(e,t){let n=kt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var Q3e=new U;nc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=nc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=Yie(o,Q3e);s.y*=2,i?(t=new Rt({context:n,width:s.x,height:s.y,pixelFormat:nt.RGBA,pixelDatatype:Ke.FLOAT,sampler:Zt.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Rt({context:n,width:s.x,height:s.y,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,sampler:Zt.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(Hie(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(zie(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),Hie(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),zie(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var J3e=new F,Gie=new sn(d.UNIT_X,0);nc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=F.multiply(t,o,J3e));let r=jt.INSIDE;!this.unionClippingRegions&&i>0&&(r=jt.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];sn.transform(a,o,Gie);let c=e.intersectPlane(Gie);if(c===jt.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};nc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};nc.useFloatTexture=function(e){return e.floatingPointTexture};nc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=nc.useFloatTexture(t)?e.length:e.length*2,r=Yie(o,n);return r.y*=2,r};nc.prototype.isDestroyed=function(){return!1};nc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Es=nc;function K9(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Kie(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=oke(e,t,r,n)),e.length>80*n){a=1/0,c=1/0;let f=-1/0,h=-1/0;for(let p=n;p<o;p+=n){let g=e[p],m=e[p+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return vw(r,s,n,a,c,u,0),s}function Kie(e,t,n,i,o){let r;if(o===pke(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=Xie(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=Xie(s/i|0,e[s],e[s+1],r);return r&&PC(r,r.next)&&(Dw(r),r=r.next),r}function xx(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(PC(n,n.next)||Nr(n.prev,n,n.next)===0)){if(Dw(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function vw(e,t,n,i,o,r,s){if(!e)return;!s&&r&&lke(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?tke(e,i,o,r):eke(e)){t.push(c.i,e.i,u.i),Dw(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=nke(xx(e),t),vw(e,t,n,i,o,r,2)):s===2&&ike(e,t,n,i,o,r):vw(xx(e),t,n,i,o,r,1);break}}}function eke(e){let t=e.prev,n=e,i=e.next;if(Nr(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),p=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=p&&m.y>=h&&m.y<=g&&Sw(o,a,r,c,s,u,m.x,m.y)&&Nr(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function tke(e,t,n,i){let o=e.prev,r=e,s=e.next;if(Nr(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,p=s.y,g=Math.min(a,c,u),m=Math.min(f,h,p),x=Math.max(a,c,u),b=Math.max(f,h,p),T=Y9(g,m,t,n,i),C=Y9(x,b,t,n,i),A=e.prevZ,E=e.nextZ;for(;A&&A.z>=T&&E&&E.z<=C;){if(A.x>=g&&A.x<=x&&A.y>=m&&A.y<=b&&A!==o&&A!==s&&Sw(a,f,c,h,u,p,A.x,A.y)&&Nr(A.prev,A,A.next)>=0||(A=A.prevZ,E.x>=g&&E.x<=x&&E.y>=m&&E.y<=b&&E!==o&&E!==s&&Sw(a,f,c,h,u,p,E.x,E.y)&&Nr(E.prev,E,E.next)>=0))return!1;E=E.nextZ}for(;A&&A.z>=T;){if(A.x>=g&&A.x<=x&&A.y>=m&&A.y<=b&&A!==o&&A!==s&&Sw(a,f,c,h,u,p,A.x,A.y)&&Nr(A.prev,A,A.next)>=0)return!1;A=A.prevZ}for(;E&&E.z<=C;){if(E.x>=g&&E.x<=x&&E.y>=m&&E.y<=b&&E!==o&&E!==s&&Sw(a,f,c,h,u,p,E.x,E.y)&&Nr(E.prev,E,E.next)>=0)return!1;E=E.nextZ}return!0}function nke(e,t){let n=e;do{let i=n.prev,o=n.next.next;!PC(i,o)&&Zie(i,n,n.next,o)&&ww(i,o)&&ww(o,i)&&(t.push(i.i,n.i,o.i),Dw(n),Dw(n.next),n=e=o),n=n.next}while(n!==e);return xx(n)}function ike(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&dke(s,a)){let c=Qie(s,a);s=xx(s,s.next),c=xx(c,c.next),vw(s,t,n,i,o,r,0),vw(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function oke(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Kie(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(fke(u))}o.sort(rke);for(let r=0;r<o.length;r++)n=ske(o[r],n);return n}function rke(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function ske(e,t){let n=ake(e,t);if(!n)return t;let i=Qie(n,e);return xx(i,i.next),xx(n,n.next)}function ake(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(PC(e,n))return n;do{if(PC(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&$ie(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);ww(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&cke(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function cke(e,t){return Nr(e.prev,e,t.prev)<0&&Nr(t.next,e,e.next)<0}function lke(e,t,n,i){let o=e;do o.z===0&&(o.z=Y9(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,uke(o)}function uke(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function Y9(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function fke(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function $ie(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function Sw(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&$ie(e,t,n,i,o,r,s,a)}function dke(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!hke(e,t)&&(ww(e,t)&&ww(t,e)&&mke(e,t)&&(Nr(e.prev,e,t.prev)||Nr(e,t.prev,t))||PC(e,t)&&Nr(e.prev,e,e.next)>0&&Nr(t.prev,t,t.next)>0)}function Nr(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function PC(e,t){return e.x===t.x&&e.y===t.y}function Zie(e,t,n,i){let o=YN(Nr(e,t,n)),r=YN(Nr(e,t,i)),s=YN(Nr(n,i,e)),a=YN(Nr(n,i,t));return!!(o!==r&&s!==a||o===0&&qN(e,n,t)||r===0&&qN(e,i,t)||s===0&&qN(n,e,i)||a===0&&qN(n,t,i))}function qN(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function YN(e){return e>0?1:e<0?-1:0}function hke(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&Zie(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function ww(e,t){return Nr(e.prev,e,e.next)<0?Nr(e,t,e.next)>=0&&Nr(e,e.prev,t)>=0:Nr(e,t,e.prev)<0||Nr(e,e.next,t)<0}function mke(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function Qie(e,t){let n=X9(e.i,e.x,e.y),i=X9(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Xie(e,t,n,i){let o=X9(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function Dw(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function X9(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function pke(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var _ke=new d,gke=new d,Ig={};Ig.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};Ig.computeWindingOrder2D=function(e){return Ig.computeArea2D(e)>0?Cs.COUNTER_CLOCKWISE:Cs.CLOCKWISE};Ig.triangulate=function(e,t){let n=U.packArray(e);return K9(n,t,2)};var noe=new d,ioe=new d,ooe=new d,Jie=new d,eoe=new d,toe=new d,Fp=new d,roe=new U,soe=new U,aoe=new U,OC=new U;Ig.computeSubdivision=function(e,t,n,i,o){o=y(o,P.RADIANS_PER_DEGREE);let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,p=0;for(a=0;a<c;a++){let A=t[a];if(u[h++]=A.x,u[h++]=A.y,u[h++]=A.z,r){let E=i[a];f[p++]=E.x,f[p++]=E.y}}let g=[],m={},x=e.maximumRadius,b=P.chordLength(o,x),T=b*b;for(;s.length>0;){let A=s.pop(),E=s.pop(),v=s.pop(),D=d.fromArray(u,v*3,noe),R=d.fromArray(u,E*3,ioe),O=d.fromArray(u,A*3,ooe),M,N,_;r&&(M=U.fromArray(f,v*2,roe),N=U.fromArray(f,E*2,soe),_=U.fromArray(f,A*2,aoe));let S=d.multiplyByScalar(d.normalize(D,Jie),x,Jie),w=d.multiplyByScalar(d.normalize(R,eoe),x,eoe),I=d.multiplyByScalar(d.normalize(O,toe),x,toe),L=d.magnitudeSquared(d.subtract(S,w,Fp)),B=d.magnitudeSquared(d.subtract(w,I,Fp)),H=d.magnitudeSquared(d.subtract(I,S,Fp)),V=Math.max(L,B,H),G,k,W;V>T?L===V?(G=`${Math.min(v,E)} ${Math.max(v,E)}`,a=m[G],l(a)||(k=d.add(D,R,Fp),d.multiplyByScalar(k,.5,k),u.push(k.x,k.y,k.z),a=u.length/3-1,m[G]=a,r&&(W=U.add(M,N,OC),U.multiplyByScalar(W,.5,W),f.push(W.x,W.y))),s.push(v,a,A),s.push(a,E,A)):B===V?(G=`${Math.min(E,A)} ${Math.max(E,A)}`,a=m[G],l(a)||(k=d.add(R,O,Fp),d.multiplyByScalar(k,.5,k),u.push(k.x,k.y,k.z),a=u.length/3-1,m[G]=a,r&&(W=U.add(N,_,OC),U.multiplyByScalar(W,.5,W),f.push(W.x,W.y))),s.push(E,a,v),s.push(a,A,v)):H===V&&(G=`${Math.min(A,v)} ${Math.max(A,v)}`,a=m[G],l(a)||(k=d.add(O,D,Fp),d.multiplyByScalar(k,.5,k),u.push(k.x,k.y,k.z),a=u.length/3-1,m[G]=a,r&&(W=U.add(_,M,OC),U.multiplyByScalar(W,.5,W),f.push(W.x,W.y))),s.push(A,a,E),s.push(a,v,E)):(g.push(v),g.push(E),g.push(A))}let C={attributes:{position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Ne.TRIANGLES};return r&&(C.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:f})),new ut(C)};var yke=new fe,xke=new fe,bke=new fe,$9=new fe;Ig.computeRhumbLineSubdivision=function(e,t,n,i,o){o=y(o,P.RADIANS_PER_DEGREE);let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,p=0;for(a=0;a<c;a++){let v=t[a];if(u[h++]=v.x,u[h++]=v.y,u[h++]=v.z,r){let D=i[a];f[p++]=D.x,f[p++]=D.y}}let g=[],m={},x=e.maximumRadius,b=P.chordLength(o,x),T=new $a(void 0,void 0,e),C=new $a(void 0,void 0,e),A=new $a(void 0,void 0,e);for(;s.length>0;){let v=s.pop(),D=s.pop(),R=s.pop(),O=d.fromArray(u,R*3,noe),M=d.fromArray(u,D*3,ioe),N=d.fromArray(u,v*3,ooe),_,S,w;r&&(_=U.fromArray(f,R*2,roe),S=U.fromArray(f,D*2,soe),w=U.fromArray(f,v*2,aoe));let I=e.cartesianToCartographic(O,yke),L=e.cartesianToCartographic(M,xke),B=e.cartesianToCartographic(N,bke);T.setEndPoints(I,L);let H=T.surfaceDistance;C.setEndPoints(L,B);let V=C.surfaceDistance;A.setEndPoints(B,I);let G=A.surfaceDistance,k=Math.max(H,V,G),W,q,J,j,K;k>b?H===k?(W=`${Math.min(R,D)} ${Math.max(R,D)}`,a=m[W],l(a)||(q=T.interpolateUsingFraction(.5,$9),J=(I.height+L.height)*.5,j=d.fromRadians(q.longitude,q.latitude,J,e,Fp),u.push(j.x,j.y,j.z),a=u.length/3-1,m[W]=a,r&&(K=U.add(_,S,OC),U.multiplyByScalar(K,.5,K),f.push(K.x,K.y))),s.push(R,a,v),s.push(a,D,v)):V===k?(W=`${Math.min(D,v)} ${Math.max(D,v)}`,a=m[W],l(a)||(q=C.interpolateUsingFraction(.5,$9),J=(L.height+B.height)*.5,j=d.fromRadians(q.longitude,q.latitude,J,e,Fp),u.push(j.x,j.y,j.z),a=u.length/3-1,m[W]=a,r&&(K=U.add(S,w,OC),U.multiplyByScalar(K,.5,K),f.push(K.x,K.y))),s.push(D,a,R),s.push(a,v,R)):G===k&&(W=`${Math.min(v,R)} ${Math.max(v,R)}`,a=m[W],l(a)||(q=A.interpolateUsingFraction(.5,$9),J=(B.height+I.height)*.5,j=d.fromRadians(q.longitude,q.latitude,J,e,Fp),u.push(j.x,j.y,j.z),a=u.length/3-1,m[W]=a,r&&(K=U.add(w,_,OC),U.multiplyByScalar(K,.5,K),f.push(K.x,K.y))),s.push(v,a,D),s.push(a,R,D)):(g.push(R),g.push(D),g.push(v))}let E={attributes:{position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Ne.TRIANGLES};return r&&(E.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:f})),new ut(E)};Ig.scaleToGeodeticHeight=function(e,t,n,i){n=y(n,ee.default);let o=_ke,r=gke;if(t=y(t,0),i=y(i,!0),l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var li=Ig;function Pg(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(Pg.prototype,{length:{get:function(){return this._length}}});Pg.prototype.enqueue=function(e){this._array.push(e),this._length++};Pg.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};Pg.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};Pg.prototype.contains=function(e){return this._array.indexOf(e)!==-1};Pg.prototype.clear=function(){this._array.length=this._offset=this._length=0};Pg.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var bx=Pg;var Xo={};Xo.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};Xo.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};Xo.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=Xo.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var Tx=new U;function uoe(e,t,n,i){return U.subtract(t,e,Tx),U.multiplyByScalar(Tx,n/i,Tx),U.add(e,Tx,Tx),[Tx.x,Tx.y]}var Og=new d;function Tke(e,t,n,i){return d.subtract(t,e,Og),d.multiplyByScalar(Og,n/i,Og),d.add(e,Og,Og),[Og.x,Og.y,Og.z]}Xo.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(P.log2(o)));return Math.pow(2,r)};var KN=new fe,$N=new fe,Cke=new fe,Ake=new d,XN=new $a;Xo.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,KN),r=e.cartesianToCartographic(n,$N),a=new $a(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(P.log2(a)));return Math.pow(2,c)};Xo.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=Xo.subdivideLineCount(n,i,o),a=U.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let p=uoe(e,t,h*c,a);u[f++]=p[0],u[f++]=p[1]}return u};Xo.subdivideLine=function(e,t,n,i){let o=Xo.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=Tke(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};Xo.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,KN),c=n.cartesianToCartographic(o,$N);XN.setEndPoints(a,c);let u=XN.surfaceDistance/r,f=Math.max(0,Math.ceil(P.log2(u))),h=Math.pow(2,f),p=U.distance(e,t),g=p/h,m=s;m.length=h*2;let x=0;for(let b=0;b<h;b++){let T=uoe(e,t,b*g,p);m[x++]=T[0],m[x++]=T[1]}return m};Xo.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,KN),s=e.cartesianToCartographic(n,$N),a=new $a(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(P.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,p=o;p.length=f*3;let g=0;for(let m=0;m<f;m++){let x=a.interpolateUsingSurfaceDistance(m*h,Cke),b=e.cartographicToCartesian(x,Ake);p[g++]=b.x,p[g++]=b.y,p[g++]=b.z}return p};var Eke=new d,Ske=new d,vke=new d,wke=new d;Xo.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=y(i,ee.default);let r=Eke,s=Ske,a=vke,c=wke;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};Xo.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new bx;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=To(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],p=h.positions;if(t)for(a=p.length,s=0;s<a;++s)n.scaleToGeodeticSurface(p[s],p[s]);if(p=To(p,d.equalsEpsilon,!0),p.length<3)continue;i.push(p);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var Dke=new fe;function Ike(e,t,n){let i=n.cartesianToCartographic(e,KN),o=n.cartesianToCartographic(t,$N);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;XN.setEndPoints(i,o);let r=XN.findIntersectionWithLatitude(0,Dke);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>P.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function Pke(e,t,n,i){if(i===en.RHUMB)return Ike(e,t,n);let o=ti.lineSegmentPlane(e,t,sn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var Oke=new fe;function Rke(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=P.sign(o.z),a=P.sign(r.z);let f=h=>t.cartesianToCartographic(h,Oke).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=Pke(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function foe(e,t,n,i,o,r,s){let a=[],c=r,u=h=>p=>p.position===h,f=[];do{let h=n[c];a.push(h);let p=i.findIndex(u(c)),g=i[p];if(!l(g)){++c;continue}let{visited:m,type:x,next:b}=g;if(g.visited=!0,x===0){if(b===0){let E=i[p-(s?1:-1)];if((E==null?void 0:E.position)===c+1)E.visited=!0;else{++c;continue}}if(!m&&s&&b>0||r===c&&!s&&b<0){++c;continue}}if(!(s?x>=0:x<=0)){++c;continue}m||f.push(c);let C=p+(s?1:-1),A=i[C];if(!l(A)){++c;continue}c=A.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=foe(e,++t,n,i,0,h,!s);return t}Xo.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=Rke(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=foe(i,o,s,a,1,0,c)}return i};Xo.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new bx;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,p=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=To(h,d.equalsEpsilon,!0)),h.length<3)continue;let x=n(h);if(!l(x))continue;let b=[],T=li.computeWindingOrder2D(x);if(T===Cs.CLOCKWISE&&(x.reverse(),h=h.slice().reverse()),u){u=!1;let D=[h];if(D=r(D,D),D.length>1){for(let R of D)c.enqueue(new Za(R,p));continue}}let C=h.slice(),A=l(p)?p.length:0,E=[],v;for(g=0;g<A;g++){let D=p[g],R=D.positions;if(i)for(m=R.length,v=0;v<m;++v)o.scaleToGeodeticSurface(R[v],R[v]);if(t||(R=To(R,d.equalsEpsilon,!0)),R.length<3)continue;let O=n(R);if(!l(O))continue;T=li.computeWindingOrder2D(O),T===Cs.CLOCKWISE&&(O.reverse(),R=R.slice().reverse()),E.push(R),b.push(C.length),C=C.concat(R),x=x.concat(O);let M=0;for(l(D.holes)&&(M=D.holes.length),v=0;v<M;v++)c.enqueue(D.holes[v])}s.push({outerRing:h,holes:E}),a.push({positions:C,positions2D:x,holes:b})}return{hierarchy:s,polygons:a}};var Mke=new U,Lke=new d,Nke=new Le,Fke=new Z;Xo.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,Nke),s=Z.fromQuaternion(r,Fke),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let p=0;p<h;++p){let g=d.clone(n[p],Lke);Z.multiplyByVector(s,g,g);let m=t(g,Mke);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};Xo.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=li.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,p=new Array(h*3),g=0;for(let b=0;b<h;b++){let T=c[b];p[g++]=T.x,p[g++]=T.y,p[g++]=T.z}let m={attributes:{position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:p})},indices:a,primitiveType:Ne.TRIANGLES};u&&(m.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:U.packArray(f)}));let x=new ut(m);return r.normal?kn.computeNormal(x):x}if(s===en.GEODESIC)return li.computeSubdivision(e,c,a,f,i);if(s===en.RHUMB)return li.computeRhumbLineSubdivision(e,c,a,f,i)};var coe=[],loe=[],Bke=new d,kke=new d;Xo.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,p,g,m,x=e.length,b=0,T=0,C=l(t),A=C?t.positions:void 0;if(o)for(a=x*3*2,s=new Array(a*2),C&&(m=x*2*2,g=new Array(m*2)),c=0;c<x;c++)u=e[c],f=e[(c+1)%x],s[b]=s[b+a]=u.x,++b,s[b]=s[b+a]=u.y,++b,s[b]=s[b+a]=u.z,++b,s[b]=s[b+a]=f.x,++b,s[b]=s[b+a]=f.y,++b,s[b]=s[b+a]=f.z,++b,C&&(h=A[c],p=A[(c+1)%x],g[T]=g[T+m]=h.x,++T,g[T]=g[T+m]=h.y,++T,g[T]=g[T+m]=p.x,++T,g[T]=g[T+m]=p.y,++T);else{let O=P.chordLength(i,n.maximumRadius),M=0;if(r===en.GEODESIC)for(c=0;c<x;c++)M+=Xo.subdivideLineCount(e[c],e[(c+1)%x],O);else if(r===en.RHUMB)for(c=0;c<x;c++)M+=Xo.subdivideRhumbLineCount(n,e[c],e[(c+1)%x],O);for(a=(M+x)*3,s=new Array(a*2),C&&(m=(M+x)*2,g=new Array(m*2)),c=0;c<x;c++){u=e[c],f=e[(c+1)%x];let N,_;C&&(h=A[c],p=A[(c+1)%x]),r===en.GEODESIC?(N=Xo.subdivideLine(u,f,O,loe),C&&(_=Xo.subdivideTexcoordLine(h,p,u,f,O,coe))):r===en.RHUMB&&(N=Xo.subdivideRhumbLine(n,u,f,O,loe),C&&(_=Xo.subdivideTexcoordRhumbLine(h,p,n,u,f,O,coe)));let S=N.length;for(let w=0;w<S;++w,++b)s[b]=N[w],s[b+a]=N[w];if(s[b]=f.x,s[b+a]=f.x,++b,s[b]=f.y,s[b+a]=f.y,++b,s[b]=f.z,s[b+a]=f.z,++b,C){let w=_.length;for(let I=0;I<w;++I,++T)g[T]=_[I],g[T+m]=_[I];g[T]=p.x,g[T+m]=p.x,++T,g[T]=p.y,g[T+m]=p.y,++T}}}x=s.length;let E=Be.createTypedArray(x/3,x-e.length*6),v=0;for(x/=6,c=0;c<x;c++){let O=c,M=O+1,N=O+x,_=N+1;u=d.fromArray(s,O*3,Bke),f=d.fromArray(s,M*3,kke),!d.equalsEpsilon(u,f,P.EPSILON10,P.EPSILON10)&&(E[v++]=O,E[v++]=N,E[v++]=M,E[v++]=M,E[v++]=N,E[v++]=_)}let D={attributes:new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:s})}),indices:E,primitiveType:Ne.TRIANGLES};return C&&(D.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:g})),new ut(D)};var Gn=Xo;function Fr(e,t){this.position=e,l(this.position)||(this.position=new U),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=Fr.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(Fr.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=U.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(P.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=P.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=P.TWO_PI),e}}});var RC=new fe,Vke=new d;Fr.prototype.getLatitude=function(e){l(e)||(e=ee.default),RC.latitude=this.conformalLatitude,RC.longitude=this.longitude,RC.height=0;let t=this.ellipsoid.cartographicToCartesian(RC,Vke);return e.cartesianToCartographic(t,RC),RC.latitude};var Uke=new pn,zke=new d,Hke=new d;Fr.fromCartesian=function(e,t){let n=P.signNotZero(e.z),i=Fr.NORTH_POLE_TANGENT_PLANE,o=Fr.SOUTH_POLE;n<0&&(i=Fr.SOUTH_POLE_TANGENT_PLANE,o=Fr.NORTH_POLE);let r=Uke;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,zke),d.normalize(r.direction,r.direction);let s=ti.rayPlane(r,i.plane,Hke),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new U(c,u),t.tangentPlane=i,t):new Fr(new U(c,u),i)};Fr.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=Fr.fromCartesian(e[i],t[i]);return t};Fr.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new Fr(e.position,e.tangentPlane)};Fr.HALF_UNIT_SPHERE=Object.freeze(new ee(.5,.5,.5));Fr.NORTH_POLE=Object.freeze(new d(0,0,.5));Fr.SOUTH_POLE=Object.freeze(new d(0,0,-.5));Fr.NORTH_POLE_TANGENT_PLANE=Object.freeze(new os(Fr.NORTH_POLE,Fr.HALF_UNIT_SPHERE));Fr.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new os(Fr.SOUTH_POLE,Fr.HALF_UNIT_SPHERE));var kc=Fr;var Gke=new fe,doe=new fe;function Wke(e,t,n,i){let r=i.cartesianToCartographic(e,Gke).height,s=i.cartesianToCartographic(t,doe);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,doe);a.height=r-100,i.cartographicToCartesian(a,n)}var hoe=new je,jke=new d,qke=new d,Yke=new d,Xke=new d,Kke=new d,$ke=new d,ZN=new d,em=new d,MC=new d,Zke=new U,Qke=new U,Jke=new d,moe=new Le,eVe=new Z,tVe=new Z;function Z9(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,p=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,x=e.perPositionHeight,b=Zke;b.x=f.x,b.y=f.y;let T=t.st?new Float32Array(2*(s/3)):void 0,C;t.normal&&(x&&c&&!a?C=n.attributes.normal.values:C=new Float32Array(s));let A=t.tangent?new Float32Array(s):void 0,E=t.bitangent?new Float32Array(s):void 0,v=i?new Float32Array(s):void 0,D=0,R=0,O=qke,M=Yke,N=Xke,_=!0,S=eVe,w=tVe;if(m!==0){let B=Le.fromAxisAngle(h,m,moe);S=Z.fromQuaternion(B,S),B=Le.fromAxisAngle(h,-m,moe),w=Z.fromQuaternion(B,w)}else S=Z.clone(Z.IDENTITY,S),w=Z.clone(Z.IDENTITY,w);let I=0,L=0;c&&u&&(I=s/2,L=s/3,s/=2);for(let B=0;B<s;B+=3){let H=d.fromArray(o,B,Jke);if(t.st&&!l(r)){let V=Z.multiplyByVector(S,H,jke);V=g.scaleToGeodeticSurface(V,V);let G=p([V],Qke)[0];U.subtract(G,b,G);let k=P.clamp(G.x/f.width,0,1),W=P.clamp(G.y/f.height,0,1);u&&(T[D+L]=k,T[D+1+L]=W),c&&(T[D]=k,T[D+1]=W),D+=2}if(t.normal||t.tangent||t.bitangent||i){let V=R+1,G=R+2;if(a){if(B+3<s){let k=d.fromArray(o,B+3,Kke);if(_){let W=d.fromArray(o,B+s,$ke);x&&Wke(H,k,W,g),d.subtract(k,H,k),d.subtract(W,H,W),O=d.normalize(d.cross(W,k,O),O),_=!1}d.equalsEpsilon(k,H,P.EPSILON10)&&(_=!0)}(t.tangent||t.bitangent)&&(N=g.geodeticSurfaceNormal(H,N),t.tangent&&(M=d.normalize(d.cross(N,O,M),M)))}else O=g.geodeticSurfaceNormal(H,O),(t.tangent||t.bitangent)&&(x&&(ZN=d.fromArray(C,R,ZN),em=d.cross(d.UNIT_Z,ZN,em),em=d.normalize(Z.multiplyByVector(w,em,em),em),t.bitangent&&(MC=d.normalize(d.cross(ZN,em,MC),MC))),M=d.cross(d.UNIT_Z,O,M),M=d.normalize(Z.multiplyByVector(w,M,M),M),t.bitangent&&(N=d.normalize(d.cross(O,M,N),N)));t.normal&&(e.wall?(C[R+I]=O.x,C[V+I]=O.y,C[G+I]=O.z):u&&(C[R+I]=-O.x,C[V+I]=-O.y,C[G+I]=-O.z),(c&&!x||a)&&(C[R]=O.x,C[V]=O.y,C[G]=O.z)),i&&(a&&(O=g.geodeticSurfaceNormal(H,O)),v[R+I]=-O.x,v[V+I]=-O.y,v[G+I]=-O.z),t.tangent&&(e.wall?(A[R+I]=M.x,A[V+I]=M.y,A[G+I]=M.z):u&&(A[R+I]=-M.x,A[V+I]=-M.y,A[G+I]=-M.z),c&&(x?(A[R]=em.x,A[V]=em.y,A[G]=em.z):(A[R]=M.x,A[V]=M.y,A[G]=M.z))),t.bitangent&&(u&&(E[R+I]=N.x,E[V+I]=N.y,E[G+I]=N.z),c&&(x?(E[R]=MC.x,E[V]=MC.y,E[G]=MC.z):(E[R]=N.x,E[V]=N.y,E[G]=N.z))),R+=3}}t.st&&!l(r)&&(n.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:T})),t.normal&&(n.attributes.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(n.attributes.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:A})),t.bitangent&&(n.attributes.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:E})),i&&(n.attributes.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:v}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===rn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let p=e.offsetAttribute===rn.NONE?0:1;h=h.fill(p)}n.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var poe=[];function nVe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let C=Gn.createGeometryFromPositions(e,t,n,i,r,c,u),A=C.attributes.position.values,E=C.indices,v,D;if(s&&a){let R=A.concat(A);v=R.length/3,D=Be.createTypedArray(v,E.length*2),D.set(E);let O=E.length,M=v/2;for(h=0;h<O;h+=3){let N=D[h]+M,_=D[h+1]+M,S=D[h+2]+M;D[h+O]=S,D[h+1+O]=_,D[h+2+O]=N}if(C.attributes.position.values=R,r&&c.normal){let N=C.attributes.normal.values;C.attributes.normal.values=new Float32Array(R.length),C.attributes.normal.values.set(N)}if(c.st&&l(n)){let N=C.attributes.st.values;C.attributes.st.values=new Float32Array(v*2),C.attributes.st.values=N.concat(N)}C.indices=D}else if(a){for(v=A.length/3,D=Be.createTypedArray(v,E.length),h=0;h<E.length;h+=3)D[h]=E[h+2],D[h+1]=E[h+1],D[h+2]=E[h];C.indices=D}f.topAndBottom=new Dt({geometry:C})}let p=o.outerRing,g=os.fromPoints(p,e),m=g.projectPointsOntoPlane(p,poe),x=li.computeWindingOrder2D(m);x===Cs.CLOCKWISE&&(p=p.slice().reverse());let b=Gn.computeWallGeometry(p,n,e,i,r,u);f.walls.push(new Dt({geometry:b}));let T=o.holes;for(h=0;h<T.length;h++){let C=T[h];m=g.projectPointsOntoPlane(C,poe),x=li.computeWindingOrder2D(m),x===Cs.COUNTER_CLOCKWISE&&(C=C.slice().reverse()),b=Gn.computeWallGeometry(C,n,e,i,r,u),f.walls.push(new Dt({geometry:b}))}return f}function _f(e){let t=e.polygonHierarchy,n=y(e.vertexFormat,Ie.DEFAULT),i=y(e.ellipsoid,ee.default),o=y(e.granularity,P.RADIANS_PER_DEGREE),r=y(e.stRotation,0),s=e.textureCoordinates,a=y(e.perPositionHeight,!1),c=a&&l(e.extrudedHeight),u=y(e.height,0),f=y(e.extrudedHeight,u);if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Ie.clone(n),this._ellipsoid=ee.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=y(e.closeTop,!0),this._closeBottom=y(e.closeBottom,!0),this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=y(e.shadowVolume,!1),this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=y(e.arcType,en.GEODESIC),this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=Gn.computeHierarchyPackedLength(t,d)+ee.packedLength+Ie.packedLength+(s?Gn.computeHierarchyPackedLength(s,U):1)+12}_f.fromPositions=function(e){e=y(e,y.EMPTY_OBJECT);let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new _f(t)};_f.pack=function(e,t,n){return n=y(n,0),n=Gn.packPolygonHierarchy(e._polygonHierarchy,t,n,d),ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=y(e._offsetAttribute,-1),t[n++]=e._arcType,l(e._textureCoordinates)?n=Gn.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var iVe=ee.clone(ee.UNIT_SPHERE),oVe=new Ie,rVe={polygonHierarchy:{}};_f.unpack=function(e,t,n){t=y(t,0);let i=Gn.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=ee.unpack(e,t,iVe);t+=ee.packedLength;let r=Ie.unpack(e,t,oVe);t+=Ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,p=e[t++]===1,g=e[t++]===1,m=e[t++]===1,x=e[t++],b=e[t++],T=e[t]===-1?void 0:Gn.unpackPolygonHierarchy(e,t,U);l(T)?(t=T.startingIndex,delete T.startingIndex):t++;let C=e[t++];return l(n)||(n=new _f(rVe)),n._polygonHierarchy=i,n._ellipsoid=ee.clone(o,n._ellipsoid),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=p,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=x===-1?void 0:x,n._arcType=b,n._textureCoordinates=T,n.packedLength=C,n};var sVe=new U,aVe=new U,cVe=new kc;function _oe(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+P.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==en.RHUMB){let p=U.subtract(t.position,e.position,sVe),g=U.dot(t.position,p)/U.dot(p,p);if(g>0&&g<1){let m=U.add(t.position,U.multiplyByScalar(p,-g,p),aVe),x=kc.clone(t,cVe);x.position=m;let b=x.getLatitude(n);r.south=Math.min(r.south,b),r.north=Math.max(r.north,b),Math.abs(c)>Math.abs(b)&&(u=b)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=U.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var goe=new kc,lVe=new kc,pf={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};_f.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,pf.northAngle=0,pf.southAngle=0,pf.westOverIdl=Number.POSITIVE_INFINITY,pf.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=kc.fromCartesian(e[0],lVe);for(let s=1;s<o;s++){let a=kc.fromCartesian(e[s],goe);_oe(a,r,t,n,pf,i),r=kc.clone(a,r)}return _oe(kc.fromCartesian(e[0],goe),r,t,n,pf,i),i.east-i.west>pf.eastOverIdl-pf.westOverIdl&&(i.west=pf.westOverIdl,i.east=pf.eastOverIdl,i.east>P.PI&&(i.east=i.east-P.TWO_PI),i.west>P.PI&&(i.west=i.west-P.TWO_PI)),P.equalsEpsilon(Math.abs(pf.northAngle),P.TWO_PI,P.EPSILON10)&&(i.north=P.PI_OVER_TWO,i.east=P.PI,i.west=-P.PI),P.equalsEpsilon(Math.abs(pf.southAngle),P.TWO_PI,P.EPSILON10)&&(i.south=-P.PI_OVER_TWO,i.east=P.PI,i.west=-P.PI),i};var uVe=new kc;function fVe(e,t,n){return e.height>=P.PI||e.width>=P.PI?kc.fromCartesian(t[0],uVe).tangentPlane:os.fromPoints(t,n)}var yoe=new fe;function dVe(e,t,n){return(i,o)=>{if(e.height>=P.PI||e.width>=P.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],yoe);o[s]=new U(a.longitude/P.PI,a.latitude/P.PI_OVER_TWO)}return o.length=i.length,o}return kc.fromCartesianArray(i,o)}return os.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function hVe(e,t,n){if(e.height>=P.PI||e.width>=P.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,yoe);return l(r)||(r=new U),r.x=s.longitude/P.PI,r.y=s.latitude/P.PI_OVER_TWO,r}return kc.fromCartesian(o,r)};let i=os.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function mVe(e,t,n,i){return(o,r)=>!i&&(e.height>=P.PI_OVER_TWO||e.width>=2*P.PI_OVER_THREE)?Gn.splitPolygonsOnEquator(o,t,n,r):o}function pVe(e,t,n,i){if(t.height>=P.PI||t.width>=P.PI)return je.fromRectangle(t,void 0,hoe);let o=e,r=os.fromPoints(o,n);return Gn.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,hoe)}_f.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),p=r.positions;if(p.length<3)return;let g=e.rectangle,m=Gn.polygonsFromHierarchy(r,h,dVe(g,p,n),!s,n,mVe(g,n,u,s)),x=m.hierarchy,b=m.polygons,T=function(I){return I},C=h?Gn.polygonsFromHierarchy(f,!0,T,!1,n).polygons:void 0;if(x.length===0)return;let A=x[0].outerRing,E=pVe(A,g,n,o),v=[],D=e._height,R=e._extrudedHeight,O=e._perPositionHeightExtrude||!P.equalsEpsilon(D,R,0,P.EPSILON2),M={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:fVe(g,A,n).plane.normal,projectTo2d:hVe(g,A,n),boundingRectangle:E,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},N;if(O)for(M.extrude=!0,M.top=a,M.bottom=c,M.shadowVolume=e._shadowVolume,M.offsetAttribute=e._offsetAttribute,N=0;N<b.length;N++){let I=nVe(n,b[N],h?C[N]:void 0,i,x[N],s,a,c,t,u),L;a&&c?(L=I.topAndBottom,M.geometry=Gn.scaleToGeodeticHeightExtruded(L.geometry,D,R,n,s)):a?(L=I.topAndBottom,L.geometry.attributes.position.values=li.scaleToGeodeticHeight(L.geometry.attributes.position.values,D,n,!s),M.geometry=L.geometry):c&&(L=I.topAndBottom,L.geometry.attributes.position.values=li.scaleToGeodeticHeight(L.geometry.attributes.position.values,R,n,!0),M.geometry=L.geometry),(a||c)&&(M.wall=!1,L.geometry=Z9(M),v.push(L));let B=I.walls;M.wall=!0;for(let H=0;H<B.length;H++){let V=B[H];M.geometry=Gn.scaleToGeodeticHeightExtruded(V.geometry,D,R,n,s),V.geometry=Z9(M),v.push(V)}}else for(N=0;N<b.length;N++){let I=new Dt({geometry:Gn.createGeometryFromPositions(n,b[N],h?C[N]:void 0,i,s,t,u)});if(I.geometry.attributes.position.values=li.scaleToGeodeticHeight(I.geometry.attributes.position.values,D,n,!s),M.geometry=I.geometry,I.geometry=Z9(M),l(e._offsetAttribute)){let L=I.geometry.attributes.position.values.length,B=e._offsetAttribute===rn.NONE?0:1,H=new Uint8Array(L/3).fill(B);I.geometry.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:H})}v.push(I)}let _=kn.combineInstances(v)[0];_.attributes.position.values=new Float64Array(_.attributes.position.values),_.indices=Be.createTypedArray(_.attributes.position.values.length/3,_.indices);let S=_.attributes,w=ce.fromVertices(S.position.values);return t.position||delete S.position,new ut({attributes:S,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:w,offsetAttribute:e._offsetAttribute})};_f.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new _f({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Ie.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function _Ve(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ut._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(_f.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=_f.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=_Ve(this)),this._textureCoordinateRotationPoints}}});var Rg=_f;function Cx(e){this._ellipsoid=y(e.ellipsoid,ee.default),this._positions=[...e.positions]}Object.defineProperties(Cx.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});Cx.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new Cx({positions:e.positions,ellipsoid:e.ellipsoid})};Cx.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};Cx.prototype.computeRectangle=function(e){return Rg.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var gVe=new ae,xoe=new d;Cx.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(gVe),n=fe.toCartesian(ae.southwest(t),this.ellipsoid,xoe),i=Math.sqrt(n.x*n.x+n.y*n.y),o=P.fastApproximateAtan2(i,n.z),r=P.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=fe.toCartesian(ae.northeast(t),this.ellipsoid,xoe),i=Math.sqrt(n.x*n.x+n.y*n.y),o=P.fastApproximateAtan2(i,n.z),r=P.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var Iw=Cx;function boe(e){e=y(e,y.EMPTY_OBJECT),this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=y(e.persists,!1),this.pass=ve.COMPUTE,this.owner=e.owner}boe.prototype.execute=function(e){e.execute(this)};var Al=boe;var QN=`in vec2 v_textureCoordinates;
uniform int u_polygonsLength;
uniform int u_extentsLength;
uniform highp sampler2D u_polygonTexture;
uniform highp sampler2D u_extentsTexture;
int getPolygonIndex(float dimension, vec2 coord) {
vec2 uv = coord.xy * dimension;
return int(floor(uv.y) * dimension + floor(uv.x));
}
vec2 getLookupUv(ivec2 dimensions, int i) {
int pixY = i / dimensions.x;
int pixX = i - (pixY * dimensions.x);
float pixelWidth = 1.0 / float(dimensions.x);
float pixelHeight = 1.0 / float(dimensions.y);
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
float v = (float(pixY) + 0.5) * pixelHeight;
return vec2(u, v);
}
vec4 getExtents(int i) {
return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i));
}
ivec2 getPositionsLengthAndExtentsIndex(int i) {
vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i);
vec4 value = texture(u_polygonTexture, uv);
return ivec2(int(value.x), int(value.y));
}
vec2 getPolygonPosition(int i) {
vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i);
return texture(u_polygonTexture, uv).xy;
}
vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) {
float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y);
float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x);
return vec2(latitude, longitude);
}
void main() {
int lastPolygonIndex = 0;
out_FragColor = vec4(1.0);
// Get the relevant region of the texture
float dimension = float(u_extentsLength);
if (u_extentsLength > 2) {
dimension = ceil(log2(float(u_extentsLength)));
}
int regionIndex = getPolygonIndex(dimension, v_textureCoordinates);
for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) {
ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex);
int positionsLength = positionsLengthAndExtents.x;
int polygonExtentsIndex = positionsLengthAndExtents.y;
lastPolygonIndex += 1;
// Only compute signed distance for the relevant part of the atlas
if (polygonExtentsIndex == regionIndex) {
float clipAmount = czm_infinity;
vec4 extents = getExtents(polygonExtentsIndex);
vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension;
vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents);
float s = 1.0;
// Check each edge for absolute distance
for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) {
vec2 a = getPolygonPosition(lastPolygonIndex + i);
vec2 b = getPolygonPosition(lastPolygonIndex + j);
vec2 ab = b - a;
vec2 pa = p - a;
float t = dot(pa, ab) / dot(ab, ab);
t = clamp(t, 0.0, 1.0);
vec2 pq = pa - t * ab;
float d = length(pq);
// Inside / outside computation to determine sign
bvec3 cond = bvec3(p.y >= a.y,
p.y < b.y,
ab.x * pa.y > ab.y * pa.x);
if (all(cond) || all(not(cond))) s = -s;
if (abs(d) < abs(clipAmount)) {
clipAmount = d;
}
}
// Normalize the range to [0,1]
vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5;
// In the case where we've iterated through multiple polygons, take the minimum
out_FragColor = min(out_FragColor, result);
}
lastPolygonIndex += positionsLength;
}
}`;function Xr(e){e=y(e,y.EMPTY_OBJECT),this._polygons=[],this._totalPositions=0,this.enabled=y(e.enabled,!0),this.inverse=y(e.inverse,!1),this.polygonAdded=new me,this.polygonRemoved=new me,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(Xr.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});Xr.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};Xr.prototype.get=function(e){return this._polygons[e]};Xr.prototype.contains=function(e){return this._polygons.some(t=>Iw.equals(t,e))};Xr.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>Iw.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var yVe=new ae;function xVe(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let p=0;p<t.length;++p){let g=t[p];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[p];h.push(...m),m.reduce((x,b)=>ae.union(e[b].computeSphericalExtents(yVe),x,x),a),t[p]=void 0,n[p]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),p=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}Xr.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function bVe(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=xVe(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let p=u.positions[h],g=Math.hypot(p.x,p.y),m=P.fastApproximateAtan2(g,p.z),x=P.fastApproximateAtan2(p.x,p.y);t[s++]=m,t[s++]=x}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var Q9=new U;Xr.prototype.update=function(e){let t=e.context;if(!Xr.isSupported(e))throw new se("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=Xr.getTextureResolution(i,this.pixelsNeededForPolygonPositions,Q9);i=new Rt({context:t,width:s.x,height:s.y,pixelFormat:nt.RG,pixelDatatype:Ke.FLOAT,sampler:Zt.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=Xr.getTextureResolution(o,this.pixelsNeededForExtents,Q9);o=new Rt({context:t,width:s.x,height:s.y,pixelFormat:nt.RGBA,pixelDatatype:Ke.FLOAT,sampler:Zt.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(bVe(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=Xr.getClippingDistanceTextureResolution(this,Q9);r=new Rt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?nt.RED:nt.LUMINANCE,pixelDatatype:Ke.FLOAT,sampler:new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR,magnificationFilter:pi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=TVe(this)};Xr.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function TVe(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Al({fragmentShaderSource:QN,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var Toe=new ae,CVe=new ae;Xr.prototype.computeIntersectionWithBoundingVolume=function(e,t){var r;let n=this._polygons,i=n.length,o=jt.OUTSIDE;this.inverse&&(o=jt.INSIDE);for(let s=0;s<i;++s){let c=n[s].computeRectangle(),u=e.rectangle;if(!l(u)&&l((r=e.boundingVolume)==null?void 0:r.computeCorners)){let h=e.boundingVolume.computeCorners();u=ae.fromCartesianArray(h,t,Toe)}l(u)||(u=ae.fromBoundingSphere(e.boundingSphere,t,Toe));let f=ae.simpleIntersection(u,c,CVe);l(f)&&(o=jt.INTERSECTING)}return o};Xr.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Xr.isSupported=function(e){return e==null?void 0:e.context.webgl2};Xr.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=kt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};Xr.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(kt.maximumTextureSize,4096),t.y=Math.min(kt.maximumTextureSize,4096),t)};Xr.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):Xr.getTextureResolution(n,e.pixelsNeededForExtents,t)};Xr.prototype.isDestroyed=function(){return!1};Xr.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var tm=Xr;var Pw={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};Pw.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?Pw.SUNLIGHT:Pw.SCENE_LIGHT:Pw.NONE};var Mg=Object.freeze(Pw);function Coe(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=Mg.NONE}Coe.requiresColorCorrect=function(e){return!(P.equalsEpsilon(e.hueShift,0,P.EPSILON7)&&P.equalsEpsilon(e.saturationShift,0,P.EPSILON7)&&P.equalsEpsilon(e.brightnessShift,0,P.EPSILON7))};var LC=Coe;var nm=`uniform vec3 u_radiiAndDynamicAtmosphereColor;
uniform float u_atmosphereLightIntensity;
uniform float u_atmosphereRayleighScaleHeight;
uniform float u_atmosphereMieScaleHeight;
uniform float u_atmosphereMieAnisotropy;
uniform vec3 u_atmosphereRayleighCoefficient;
uniform vec3 u_atmosphereMieCoefficient;
const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters.
const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled.
const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
/**
* This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as
* the transmittance value for the ray.
*
* @param {czm_ray} primaryRay The ray from the camera to the position.
* @param {float} primaryRayLength The length of the primary ray.
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
* @param {vec3} mieColor The variable the Mie scattering will be written to.
* @param {float} opacity The variable the transmittance will be written to.
* @glslFunction
*/
void computeScattering(
czm_ray primaryRay,
float primaryRayLength,
vec3 lightDirection,
float atmosphereInnerRadius,
out vec3 rayleighColor,
out vec3 mieColor,
out float opacity
) {
// Initialize the default scattering amounts to 0.
rayleighColor = vec3(0.0);
mieColor = vec3(0.0);
opacity = 0.0;
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
vec3 origin = vec3(0.0);
// Calculate intersection from the camera to the outer ring of the atmosphere.
czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius);
// Return empty colors if no intersection with the atmosphere geometry.
if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) {
return;
}
// To deal with smaller values of PRIMARY_STEPS (e.g. 4)
// we implement a split strategy: sky or horizon.
// For performance reasons, instead of a if/else branch
// a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0
float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength);
// Value close to 0.0: close to the horizon
// Value close to 1.0: above in the sky
float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x));
// The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere.
float start_0 = primaryRayAtmosphereIntersect.start;
primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0);
// The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller.
primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength));
// For the number of ray steps, distinguish inside or outside atmosphere (outer space)
// (1) from outer space we have to use more ray steps to get a realistic rendering
// (2) within atmosphere we need fewer steps for faster rendering
float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters
float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a));
int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled.
int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
// Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere.
float rayPositionLength = primaryRayAtmosphereIntersect.start;
// (1) Outside the atmosphere: constant rayStepLength
// (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps
float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength;
float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0));
float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS));
vec3 rayleighAccumulation = vec3(0.0);
vec3 mieAccumulation = vec3(0.0);
vec2 opticalDepth = vec2(0.0);
vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight);
// Sample positions on the primary ray.
for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) {
// The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to break early instead
if (i >= PRIMARY_STEPS) {
break;
}
// Calculate sample position along viewpoint ray.
vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength);
// Calculate height of sample position above ellipsoid.
float sampleHeight = length(samplePosition) - atmosphereInnerRadius;
// Calculate and accumulate density of particles at the sample position.
vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength;
opticalDepth += sampleDensity;
// Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere.
czm_ray lightRay = czm_ray(samplePosition, lightDirection);
czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius);
float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS);
float lightPositionLength = 0.0;
vec2 lightOpticalDepth = vec2(0.0);
// Sample positions along the light ray, to accumulate incidence of light on the latest sample segment.
for (int j = 0; j < LIGHT_STEPS_MAX; ++j) {
// The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to break early instead
if (j >= LIGHT_STEPS) {
break;
}
// Calculate sample position along light ray.
vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5);
// Calculate height of the light sample position above ellipsoid.
float lightHeight = length(lightPosition) - atmosphereInnerRadius;
// Calculate density of photons at the light sample position.
lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength;
// Increment distance on light ray.
lightPositionLength += lightStepLength;
}
// Compute attenuation via the primary ray and the light ray.
vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x))));
// Accumulate the scattering.
rayleighAccumulation += sampleDensity.x * attenuation;
mieAccumulation += sampleDensity.y * attenuation;
// Increment distance on primary ray.
rayPositionLength += (rayStepLength += rayStepLengthIncrease);
}
// Compute the scattering amount.
rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation;
mieColor = u_atmosphereMieCoefficient * mieAccumulation;
// Compute the transmittance i.e. how much light is passing through the atmosphere.
opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x))));
}
vec4 computeAtmosphereColor(
vec3 positionWC,
vec3 lightDirection,
vec3 rayleighColor,
vec3 mieColor,
float opacity
) {
// Setup the primary ray: from the camera position to the vertex position.
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
float cosAngle = dot(cameraToPositionWCDirection, lightDirection);
float cosAngleSq = cosAngle * cosAngle;
float G = u_atmosphereMieAnisotropy;
float GSq = G * G;
// The Rayleigh phase function.
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
// The Mie phase function.
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
vec3 rayleigh = rayleighPhase * rayleighColor;
vec3 mie = miePhase * mieColor;
vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity;
return vec4(color, opacity);
}
`;var JN=`uniform samplerCube u_radianceMap;
in vec2 v_textureCoordinates;
const float twoSqrtPi = 2.0 * sqrt(czm_pi);
// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf
float computeShBasis(int index, vec3 s) {
if (index == 0) { // l = 0, m = 0
return 1.0 / twoSqrtPi;
}
if (index == 1) { // l = 1, m = -1
return -sqrt(3.0) * s.y / twoSqrtPi;
}
if (index == 2) { // l = 1, m = 0
return sqrt(3.0) * s.z / twoSqrtPi;
}
if (index == 3) { // l = 1, m = 1
return -sqrt(3.0) * s.x / twoSqrtPi;
}
if (index == 4) { // l = 2, m = -2
return sqrt(15.0) * s.y * s.x / twoSqrtPi;
}
if (index == 5) { // l = 2, m = -1
return -sqrt(15.0) * s.y * s.z / twoSqrtPi;
}
if (index == 6) { // l = 2, m = 0
return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi;
}
if (index == 7) { // l = 2, m = 1
return -sqrt(15.0) * s.x * s.z / twoSqrtPi;
}
if (index == 8) { // l = 2, m = 2
return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi;
}
return 0.0;
}
float vdcRadicalInverse(int i)
{
float r;
float base = 2.0;
float value = 0.0;
float invBase = 1.0 / base;
float invBi = invBase;
for (int x = 0; x < 100; x++)
{
if (i <= 0)
{
break;
}
r = mod(float(i), base);
value += r * invBi;
invBi *= invBase;
i = int(float(i) * invBase);
}
return value;
}
vec2 hammersley2D(int i, int N)
{
return vec2(float(i) / float(N), vdcRadicalInverse(i));
}
// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics
const int samples = 256;
const float solidAngle = 1.0 / float(samples);
void main() {
// Get the current coefficient based on the uv
vec2 uv = v_textureCoordinates.xy * 3.0;
int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x));
for (int i = 0; i < samples; ++i) {
vec2 xi = hammersley2D(i, samples);
float phi = czm_twoPi * xi.x;
float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y);
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi)));
// Generate the spherical harmonics basis from the direction
float Ylm = computeShBasis(coefficientIndex, direction);
vec3 lookupDirection = -direction.xyz;
lookupDirection.z = -lookupDirection.z;
vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0);
// Use the relevant function for this coefficient
out_FragColor += Ylm * color * solidAngle * sinTheta;
}
}
`;var eF=`precision highp float;
in vec2 v_textureCoordinates;
uniform vec3 u_faceDirection; // Current cubemap face
uniform vec3 u_positionWC;
uniform mat4 u_enuToFixedFrame;
uniform vec4 u_brightnessSaturationGammaIntensity;
uniform vec4 u_groundColor; // alpha component represent albedo
vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) {
vec2 scaledUV = uv * 2.0 - 1.0;
if (faceDir.x != 0.0) {
return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0);
} else if (faceDir.y != 0.0) {
return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0);
} else {
return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0);
}
}
void main() {
float height = length(u_positionWC);
float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y;
float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0);
// Scale the position to ensure the sky color is present, even when underground.
vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius);
float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x;
float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius;
vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz;
vec3 normalizedDirection = normalize(direction);
czm_ray ray = czm_ray(positionWC, normalizedDirection);
czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius);
if (!czm_isEmpty(intersection)) {
intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii);
}
bool onEllipsoid = intersection.start >= 0.0;
float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius);
// Compute sky color for each position on a sphere at radius centered around the provided position's origin
vec3 skyPositionWC = positionWC + normalizedDirection * rayLength;
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum));
vec3 mieColor;
vec3 rayleighColor;
float opacity;
czm_computeScattering(
ray,
rayLength,
lightDirectionWC,
atmosphereInnerRadius,
rayleighColor,
mieColor,
opacity
);
vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity);
#ifdef ATMOSPHERE_COLOR_CORRECT
const bool ignoreBlackPixels = true;
atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels);
#endif
vec3 lookupDirection = -normalizedDirection;
// Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z.
lookupDirection.x = -lookupDirection.x;
lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection);
lookupDirection.x = -lookupDirection.x;
// Values outside the atmopshere are rendered as black, when they should be treated as transparent
float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0);
skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent
// Blend starmap with atmopshere scattering
float intensity = u_brightnessSaturationGammaIntensity.w;
vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection);
vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a);
vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0);
// Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height
vec3 up = normalize(positionWC);
float occlusion = max(dot(lightDirectionWC, up), 0.05);
vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0);
vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0));
vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor);
float brightness = u_brightnessSaturationGammaIntensity.x;
float saturation = u_brightnessSaturationGammaIntensity.y;
float gamma = u_brightnessSaturationGammaIntensity.z;
#ifdef ENVIRONMENT_COLOR_CORRECT
color.rgb = mix(vec3(0.0), color.rgb, brightness);
color.rgb = czm_saturation(color.rgb, saturation);
#endif
color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0.
color.rgb = czm_gammaCorrect(color.rgb);
out_FragColor = color;
}
`;var tF=`precision highp float;
in vec3 v_textureCoordinates;
uniform float u_roughness;
uniform samplerCube u_radianceTexture;
uniform vec3 u_faceDirection;
float vdcRadicalInverse(int i)
{
float r;
float base = 2.0;
float value = 0.0;
float invBase = 1.0 / base;
float invBi = invBase;
for (int x = 0; x < 100; x++)
{
if (i <= 0)
{
break;
}
r = mod(float(i), base);
value += r * invBi;
invBi *= invBase;
i = int(float(i) * invBase);
}
return value;
}
vec2 hammersley2D(int i, int N)
{
return vec2(float(i) / float(N), vdcRadicalInverse(i));
}
vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N)
{
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
float phi = czm_twoPi * xi.x;
float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y));
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
vec3 tangentX = normalize(cross(upVector, N));
vec3 tangentY = cross(N, tangentX);
return tangentX * H.x + tangentY * H.y + N * H.z;
}
// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses
const int samples = 128;
void main() {
vec3 normal = u_faceDirection;
vec3 V = normalize(v_textureCoordinates);
float roughness = u_roughness;
vec4 color = vec4(0.0);
float weight = 0.0;
for (int i = 0; i < samples; ++i) {
vec2 xi = hammersley2D(i, samples);
vec3 H = importanceSampleGGX(xi, roughness, V);
vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector
float NdotL = max(dot(V, L), 0.0);
if (NdotL > 0.0) {
color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL;
weight += NdotL;
}
}
out_FragColor = color / weight;
}
`;var nF=`in vec3 position;
out vec3 v_textureCoordinates;
uniform vec3 u_faceDirection;
vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) {
vec2 scaledUV = uv;
if (faceDir.x != 0.0) {
return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x);
} else if (faceDir.y != 0.0) {
return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y);
} else {
return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z);
}
}
void main()
{
v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection);
v_textureCoordinates.y = -v_textureCoordinates.y;
v_textureCoordinates.z = -v_textureCoordinates.z;
gl_Position = vec4(position, 1.0);
}
`;function Zn(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=y(e,y.EMPTY_OBJECT);let t=Math.min(y(e.mipmapLevels,7),Math.log2(kt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=Zn.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new $;let n=Math.pow(2,t-1);this._textureDimensions=new U(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=y(e.enabled,!0),this.shouldUpdate=!0,this.maximumSecondsDifference=y(e.maximumSecondsDifference,60*60),this.maximumPositionEpsilon=y(e.maximumPositionEpsilon,1e3),this.atmosphereScatteringIntensity=y(e.atmosphereScatteringIntensity,2),this.gamma=y(e.gamma,1),this.brightness=y(e.brightness,1),this.saturation=y(e.saturation,1),this.groundColor=y(e.groundColor,Zn.AVERAGE_EARTH_GROUND_COLOR),this.groundAlbedo=y(e.groundAlbedo,.31)}Object.defineProperties(Zn.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});Zn._maximumComputeCommandCount=8;Zn._activeComputeCommandCount=0;Zn._nextFrameCommandQueue=[];Zn._queueCommand=(e,t)=>{if(Zn._activeComputeCommandCount>=Zn._maximumComputeCommandCount){Zn._nextFrameCommandQueue.push(e);return}t.commandList.push(e),Zn._activeComputeCommandCount++};Zn._updateCommandQueue=e=>{if(Zn._maximumComputeCommandCount=Math.log2(kt.maximumCubeMapSize),Zn._nextFrameCommandQueue.length>0&&Zn._activeComputeCommandCount<Zn._maximumComputeCommandCount){let t=Zn._nextFrameCommandQueue.shift();for(;l(t)&&Zn._activeComputeCommandCount<Zn._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=Zn._nextFrameCommandQueue.shift();continue}e.commandList.push(t),Zn._activeComputeCommandCount++,t=Zn._nextFrameCommandQueue.shift()}l(t)&&Zn._nextFrameCommandQueue.push(t)}};Zn.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Zn.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var AVe=new d,EVe=new d;function SVe(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,EVe),s=1.025,a=AVe,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Aoe=new d,vVe=new F,wVe=new oe,DVe=new z;function IVe(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new Or({context:n,width:i.x,height:i.y,pixelDatatype:Ke.UNSIGNED_BYTE,pixelFormat:nt.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new Ue({sources:[nm,eF]}),e._radianceMapFS=o),LC.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=Mt.eastNorthUpToFixedFrame(r,a,vVe),u=wVe;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of Or.faceNames()){let p=e._radianceMapTextures[f];l(p)&&!p.isDestroyed()&&p.destroy(),p=new Rt({context:n,width:i.x,height:i.y,pixelDatatype:Ke.UNSIGNED_BYTE,pixelFormat:nt.RGBA}),e._radianceMapTextures[f]=p;let g=f,m=new Al({fragmentShaderSource:o,outputTexture:p,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>Or.getDirection(h,Aoe),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,DVe)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){Zn._activeComputeCommandCount--;return}let x=e._radianceMapComputeCommands;x[g]=void 0;let b=new Wr({context:n,colorTextures:[e._radianceMapTextures[g]]});b._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),b._unBind(),b.destroy(),Zn._activeComputeCommandCount--,x.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,Zn._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function PVe(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,p,g,m,x)=>()=>{if(e.isDestroyed()||h.canceled){Zn._activeComputeCommandCount--;return}let b=e._convolutionComputeCommands;b[p]=void 0,n.copyFace(t,g,m,x),c++,Zn._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[p]=void 0;let T=e._specularMapTextures.length;c>=T&&(e._irradianceCommandDirty=!0,n.sampler=new Zt({minificationFilter:$t.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let p of Or.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Rt({context:a,width:r,height:s,pixelDatatype:Ke.UNSIGNED_BYTE,pixelFormat:nt.RGBA}),m=e._va;l(m)||(m=Or.createVertexArray(a,p),e._va=m);let x=e._convolveSP;l(x)||(x=Jt.fromCache({context:a,vertexShaderSource:nF,fragmentShaderSource:tF,attributeLocations:{positions:0}}),e._convolveSP=x);let b=new Al({shaderProgram:x,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n!=null?n:a.defaultTexture,u_faceDirection:()=>Or.getDirection(p,Aoe)}});b.postExecute=u(b,f,g,p,h),e._convolutionComputeCommands[f]=b,Zn._queueCommand(b,t),++f}r/=2,s/=2}}var Eoe=new U(3,3);function OVe(e,t){let n=t.context,i=Eoe,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Rt({context:n,width:i.x,height:i.y,pixelDatatype:Ke.FLOAT,pixelFormat:nt.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new Ue({sources:[JN]}),e._irradianceMapFS=r);let s=new Al({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>{var a;return(a=e._radianceCubeMap)!=null?a:n.defaultTexture}}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){Zn._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,Zn._activeComputeCommandCount--},e._irradianceComputeCommand=s,Zn._queueCommand(s,t),e._irradianceTextureDirty=!0}function RVe(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new Wr({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Eoe,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}Zn.prototype.update=function(e){let t=e.mode;if(!Zn.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ne.MORPHING){this._shouldRegenerateShaders=!1;return}Zn._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=SVe(this,e)||i===Mg.SUNLIGHT&&!$.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=$.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(IVe(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(PVe(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(OVe(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){RVe(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};Zn.prototype.isDestroyed=function(){return!1};Zn.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};Zn.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};Zn.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(z.fromCssColorString("#717145"));Zn.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var Lg=Zn;var Ow={HIGHLIGHT:0,REPLACE:1,MIX:2};Ow.getColorBlend=function(e,t){if(e===Ow.HIGHLIGHT)return 0;if(e===Ow.REPLACE)return 1;if(e===Ow.MIX)return P.clamp(t,P.EPSILON4,1)};var Vc=Object.freeze(Ow);var MVe={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},Uc=Object.freeze(MVe);var LVe={STEP:0,LINEAR:1,CUBICSPLINE:2},im=Object.freeze(LVe);var Soe={};function Rw(e){this._count=e.count,this._properties=He(e.properties,!0)}Rw.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,Soe)};Rw.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,Soe,e)};Rw.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return He(n[e],!0)};Rw.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=He(n,!0)};var Ng=Rw;function ic(e){e=y(e,y.EMPTY_OBJECT),this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(ic.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});ic.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};ic.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};ic.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};ic.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var J9=[];ic.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,l(this._metadataTable)&&t.push.apply(t,this._metadataTable.getPropertyIds(J9)),l(this._batchTableHierarchy)&&t.push.apply(t,this._batchTableHierarchy.getPropertyIds(e,J9)),l(this._jsonMetadataTable)&&t.push.apply(t,this._jsonMetadataTable.getPropertyIds(J9)),t};ic.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};ic.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new Ng({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};ic.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};ic.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};ic.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};ic.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};ic.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};ic.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};ic.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var El=ic;function Mw(e){e=y(e,y.EMPTY_OBJECT);let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=au.createModelTextureReader({textureInfo:r,channels:BVe(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=y(a,n.offset),c=y(c,n.scale),a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Mw.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Mw.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(Ct(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(Ct(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==lt.SCALAR?(Ct(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==Ft.UINT8?(Ct(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:lt.isVectorType(t)||t===lt.SCALAR?n!==Ft.UINT8?(Ct(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(Ct(`Property texture property ${e.id} has an unsupported type`),!1)};var NVe=[void 0,"float","vec2","vec3","vec4"],FVe=[void 0,"int","ivec2","ivec3","ivec4"];Mw.prototype.getGlslType=function(){let e=this._classProperty,t=lt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?NVe[t]:FVe[t]};Mw.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function BVe(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var iF=Mw;function eW(e){e=y(e,y.EMPTY_OBJECT);let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new iF({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(eW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});eW.prototype.getProperty=function(e){return this._properties[e]};var Fg=eW;function voe(e){e=y(e,y.EMPTY_OBJECT);let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=y(i,n.offset),o=y(o,n.scale),i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(voe.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var oF=voe;function tW(e){e=y(e,y.EMPTY_OBJECT);let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new oF({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(tW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});tW.prototype.getProperty=function(e){return this._properties[e]};var NC=tW;function Lw(e){e=y(e,y.EMPTY_OBJECT),this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(Lw.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});Lw.prototype.getPropertyTable=function(e){return this._propertyTables[e]};Lw.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};Lw.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var la=Lw;function kVe(e){e=y(e,y.EMPTY_OBJECT);let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new Ed({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new El({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new Fg({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new NC({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new la({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var rF=kVe;function VVe(e){e=y(e,y.EMPTY_OBJECT);let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new Ed({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new El({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new Fg({id:a,propertyTexture:UVe(c),class:n.classes[c.class],textures:e.textures}))}return new la({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function UVe(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:zVe(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=At(o.texture,r,!0)}return t}function zVe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var sF=VVe;function Bg(e){e=y(e,y.EMPTY_OBJECT);let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(Bg.prototype=Object.create(Ji.prototype),Bg.prototype.constructor=Bg);Object.defineProperties(Bg.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function HVe(e){try{let t=YVe(e),n=QVe(e),i=JVe(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=xt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=xt.FAILED,e.getError("Failed to load structural metadata",t)}}Bg.prototype.load=function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,this._promise=HVe(this),this._promise)};function GVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function WVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function jVe(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];GVe(o.properties,n)}return n}function qVe(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&WVe(r,n)}}return n}async function YVe(e){let t;l(e._extension)?t=jVe(e._extension):t=qVe(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=wi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function XVe(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&KVe(r,t)}return t}function KVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function $Ve(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&ZVe(r,t)}}return t}function ZVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function QVe(e){let t;l(e._extension)?t=XVe(e._extension):t=$Ve(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=wi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function JVe(e){let t=y(e._extension,e._extensionLegacy),n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=wi.getSchemaLoader({resource:i})}else n=wi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}Bg.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=rF({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=sF({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),woe(this),this._state=xt.READY,!0};function woe(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)wi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function eUe(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)wi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}Bg.prototype.unload=function(){woe(this),eUe(this),l(this._schemaLoader)&&wi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var aF=Bg;var FC={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};FC.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return FC.TRANSLATION;case"ROTATION":return FC.ROTATION;case"SCALE":return FC.SCALE;case"_FEATURE_ID":return FC.FEATURE_ID}};var as=Object.freeze(FC);var tUe=65534,nUe=255;function cF(e){e=y(e,y.EMPTY_OBJECT);let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Poe(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],iUe(this)}Object.defineProperties(cF.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function iUe(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,p=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),x=Doe(i,c,u,f,p,g,m);for(;l(x);){let b=s[x];if(!l(b)){b=r+o.length;let T=x;for(;T>=r;)T=o[T-r];o.push(T),s[x]=b}b>tUe&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):b>nUe&&t instanceof Uint8Array&&(t=new Uint16Array(t)),x===c?(c=b,t[a]=b):x===u?(u=b,t[a+1]=b):(f=b,t[a+2]=b),x=Doe(i,c,u,f,p,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function Doe(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=nW(e,t,a,c,u);if(f===0)return t;let h=0,p=o?1:0,g=r?1:0,m=nW(e,n,h,p,g);if(m===0)return n;let x=s?1:0,b=0,T=r?1:0,C=nW(e,i,x,b,T);if(C===0)return i;let A=f&m&C,E,v,D;if(A&1)E=0,v=1,D=2;else if(A&2)E=0,D=1,v=2;else if(A&4)v=0,E=1,D=2;else if(A&8)v=0,D=1,E=2;else if(A&16)D=0,E=1,v=2;else if(A&32)D=0,v=1,E=2;else{let N=iW(f),_=iW(m),S=iW(C);return N<_&&N<S?t:_<S?n:i}let R=t*3;e[R+E]=a,e[R+v]=c,e[R+D]=u;let O=n*3;e[O+E]=h,e[O+v]=p,e[O+D]=g;let M=i*3;e[M+E]=x,e[M+v]=b,e[M+D]=T}function nW(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function iW(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}cF.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};cF.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,kt.maximumTextureSize),i=n,o=Ioe(i),r=[];for(;i>1;)i>>=1,r.push(Ioe(i));let s=new Rt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:nt.LUMINANCE,sampler:new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function Ioe(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Poe(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Poe.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var BC=cF;function Ooe(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function oUe(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function lF(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0}lF.prototype.postProcess=function(e){this.needsOutlines&&(rUe(this),aUe(this,e))};function rUe(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new BC({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Be.fromTypedArray(n.typedArray);let r=sUe(o.outlineCoordinates),s=new Ooe(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function sUe(e){let t=new xn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=X.FLOAT,t.type=on.VEC3,t.normalized=!1,t.count=e.length/3,t}function aUe(e,t){cUe(e.attributePlans,t),l(e.indicesPlan)&&lUe(e.indicesPlan,t)}function cUe(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Tt.createVertexBuffer({typedArray:s,context:t,usage:ke.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function lUe(e,t){let n=e.indices;if(e.loadBuffer){let i=Tt.createIndexBuffer({typedArray:n.typedArray,context:t,usage:ke.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}lF.AttributeLoadPlan=Ooe;lF.IndicesLoadPlan=oUe;var kC=lF;function uUe(e){e=y(e,y.EMPTY_OBJECT),this.webp=y(e.webp,!1),this.basis=y(e.basis,!1)}var uF=uUe;function Roe(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Roe.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var fF=Roe;function Moe(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties(Moe.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var dF=Moe;function Loe(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(Loe.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var hF=Loe;var fUe={Direct:"Direct",Indirect:"Indirect"},Ax=Object.freeze(fUe);function Noe(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(Noe.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var Nw=Noe;function Foe(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(Foe.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var mF=Foe;function VC(){}function Boe(e){return new Z(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function dUe(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new fF({position:t,adjustmentParams:n})}function hUe(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=Boe(e.covarianceMatrix);return new dF({position:t,adjustmentParams:n,covarianceMatrix:i})}function mUe(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new mF({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new hF({groupFlags:t,rotationThetas:n,params:i})}VC.load=function(e){let t=e.storageType;if(t===Ax.Direct)return VC.loadDirect(e);if(t===Ax.Indirect)return VC.loadIndirect(e);throw new se(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};VC.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=dUe(r);t.push(s)}let i=Boe(e.covarianceDirectUpperTriangle);return new Nw({storageType:Ax.Direct,anchorPointsDirect:t,covarianceDirect:i})};VC.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=hUe(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=mUe(s);o.push(a)}return new Nw({storageType:Ax.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var pF=VC;function koe(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(koe.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var _F=koe;function Voe(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(Voe.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var gF=Voe;function Uoe(e){this._ppeTextures=e}Object.defineProperties(Uoe.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var yF=Uoe;function gr(e){e=y(e,y.EMPTY_OBJECT);let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=y(e.asynchronous,!0);this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=xt.UNLOADED,this._promise=void 0}l(Object.create)&&(gr.prototype=Object.create(Ji.prototype),gr.prototype.constructor=gr);Object.defineProperties(gr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});gr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=xt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=xt.FAILED,this.getError("Failed to load GPM data",e)}};gr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=xt.LOADING,this._promise=this._loadResources(this),this._promise)};function pUe(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}gr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=pUe(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=wi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};gr.ppeTexturesMetadataSchemaCache=new Map;gr._createPpeTextureClassJson=function(e,t){var a,c;let n=e.traits,i=n.source,o=(a=e.offset)!=null?a:0,r=((c=e.scale)!=null?c:1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};gr._obtainPpeTexturesMetadataSchema=function(e){let n=gr._collectPpeTexturePropertyIdentifiers(e).toString(),i=gr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${gr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=gr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=mf.fromJson(r),gr.ppeTexturesMetadataSchemaCache.set(n,i),i};gr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=gr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};gr._convertToStructuralMetadata=function(e,t){let n=[],i=gr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],p={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new Fg({id:s,name:a.name,propertyTexture:p,class:h,textures:t}))}return new la({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};gr.prototype.process=function(e){if(this._state===xt.READY)return!0;if(this._state!==xt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,p=new gF({min:h.min,max:h.max,source:h.source}),g=new _F({traits:p,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new yF(r);this._meshPrimitiveGpmLocal=a;let c=gr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=xt.READY,!0};gr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)wi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};gr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var xF=gr;var{Attribute:_Ue,Indices:gUe,FeatureIdAttribute:zoe,FeatureIdTexture:Hoe,FeatureIdImplicitRange:Goe,MorphTarget:yUe,Primitive:xUe,Instances:bUe,Skin:TUe,Node:CUe,AnimatedPropertyType:AUe,AnimationSampler:EUe,AnimationTarget:SUe,AnimationChannel:vUe,Animation:wUe,ArticulationStage:DUe,Articulation:IUe,Asset:PUe,Scene:OUe,Components:RUe,MetallicRoughness:MUe,SpecularGlossiness:LUe,Specular:NUe,Anisotropy:oW,Clearcoat:rW,Material:FUe}=xn,Io={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function Dd(e){e=y(e,y.EMPTY_OBJECT);let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=Vo.Y,forwardAxis:a=Vo.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:p=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:x=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=x,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=p,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Io.NOT_LOADED,this._textureState=Io.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(Dd.prototype=Object.create(Ji.prototype),Dd.prototype.constructor=Dd);Object.defineProperties(Dd.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function BUe(e){e._state=Io.LOADING,e._textureState=Io.LOADING;try{let t=wi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Io.LOADED,e._textureState=Io.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Io.FAILED,e._textureState=Io.FAILED,bF(e,t)}}async function kUe(e,t){Ht.supportsWebP.initialized||await Ht.supportsWebP.initialize(),e._supportedImageFormats=new uF({webp:Ht.supportsWebP(),basis:t.context.supportsBasis});let n=zze(e,t);return e._state=Io.PROCESSING,e._textureState=Io.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(wi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}Dd.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=BUe(this),this._promise)};function bF(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function VUe(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&Ct("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Io.POST_PROCESSING)}function UUe(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),o.needsOutlines&&zUe(e,o)}}function zUe(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}Dd.prototype._process=function(e){return this._state===Io.READY?!0:(this._state===Io.PROCESSING&&VUe(this,e),this._resourcesLoaded&&this._state===Io.POST_PROCESSING&&(UUe(this,e.context),this._state=Io.PROCESSED),this._resourcesLoaded&&this._state===Io.PROCESSED?(Qoe(this),this._typedArray=void 0,this._state=Io.READY,!0):!1)};Dd.prototype._processTextures=function(e){if(this._textureState===Io.READY)return!0;if(this._textureState!==Io.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Io.READY,this._texturesLoaded=!0,!0):!1};Dd.prototype.process=function(e){if(this._state===Io.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=kUe(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Io.FAILED;let o=this._processError;this._processError=void 0,bF(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Io.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Io.FAILED,bF(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Io.FAILED,bF(this,o)}return this._incrementallyLoadTextures?n:n&&i};function HUe(e,t,n,i,o,r,s,a){let c=e.gltfJson,f=c.accessors[t].bufferView;return wi.getVertexBufferLoader({gltf:c,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:a,bufferViewId:f,primitive:i,draco:o,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:r,loadTypedArray:s})}function GUe(e,t,n,i,o,r,s){return wi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function WUe(e,t){let n=wi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function Woe(e,t,n){let i=t.byteOffset,o=su(e,t),r=t.count,s=hf(t.type),a=t.componentType,c=X.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),X.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=X.createTypedArray(a,f),p=new DataView(n.buffer),g=new Array(s),m=Eg(t.componentType);i=n.byteOffset+i;for(let x=0;x<r;++x){m(p,i,s,c,g);for(let b=0;b<s;++b)h[x*s+b]=g[b];i+=o}return h}function jUe(e,t){let n=e.type;if(n===on.SCALAR)return t.fill(0);let i=on.getMathType(n);return t.fill(i.clone(i.ZERO))}function qUe(e,t,n,i){let o=e.type,r=e.count;if(o===on.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===on.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=on.getMathType(o),a=on.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function YUe(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=Woe(r,n,t.typedArray);i=y(i,!1),qUe(n,s,o,i)}function TF(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=WUe(e,o),s=YUe(e,r,t,n,i);return e._loaderPromises.push(s),i}return jUe(t,i)}function uu(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function XUe(e){return e===Number?0:new e}function KUe(e){switch(e){case X.BYTE:return 127;case X.UNSIGNED_BYTE:return 255;case X.SHORT:return 32767;case X.UNSIGNED_SHORT:return 65535;default:return 1}}var $Ue={VEC2:new U(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new oe(-1,-1,-1,-1)};function ZUe(e,t){let n=KUe(e.componentDatatype),i=$Ue[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function QUe(e,t,n){let i=e.decodeMatrix,o=uu(n,e.decodedMin),r=uu(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new xn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new U(i[6],i[7]),s.quantizedVolumeStepSize=new U(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new oe(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new oe(i[0],i[6],i[12],i[18])),t.quantization=s}function JUe(e,t,n,i,o){var h;let r=e.accessors[t],s=on.getMathType(r.type),a=y(r.normalized,!1),c=new _Ue;c.name=n,c.semantic=i,c.setIndex=o,c.constant=XUe(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=uu(s,r.min),c.max=uu(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=su(e,r),ci(r,"WEB3D_quantized_attributes")&&QUe(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===pt.POSITION||c.semantic===pt.NORMAL||c.semantic===pt.TANGENT||c.semantic===pt.TEXCOORD;return((h=e.extensionsRequired)==null?void 0:h.includes("KHR_mesh_quantization"))&&a&&u&&ZUe(c,s),c}function joe(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var eze={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function sW(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=eze;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function tze(e){let t=e===pt.POSITION,n=e===pt.FEATURE_ID,i=e===pt.TEXCOORD;return t||n||i}function nze(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=X.createArrayBufferView(o,t.typedArray.buffer)}}function ize(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=Woe(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function qoe(e,t,n,i,o,r,s,a){let c=e.gltfJson,u=c.accessors[t],f=u.bufferView,h=n.gltfSemantic,p=n.renamedSemantic,g=n.modelSemantic,m=l(g)?joe(p):void 0,b=JUe(c,t,h,g,m);if(!l(o)&&!l(f))return b;let T=HUe(e,t,h,i,o,r,s,a),C=e._geometryLoaders.length;e._geometryLoaders.push(T);let A=T.load();return e._loaderPromises.push(A),e._geometryCallbacks[C]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[h])?nze(b,T,r,s):ize(c,u,b,T,r,s)},b}function Yoe(e,t,n,i,o,r,s,a){let c=n.modelSemantic,u=c===pt.POSITION,f=c===pt.FEATURE_ID,h=u&&!r&&e._loadAttributesFor2D&&!a.scene3DOnly,p=u&&e._enablePick&&!a.context.webgl2,g=e._loadForClassification&&f,m=e._loadAttributesAsTypedArray,x=!m,b=m||h||p||g,A=qoe(e,t,n,i,o,s?!1:x,s?!0:b,a),E=new kC.AttributeLoadPlan(A);return E.loadBuffer=x,E.loadTypedArray=b,E}function oze(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=sW(e,as,i),u=c.modelSemantic,f=u===as.TRANSLATION||u===as.ROTATION||u===as.SCALE,h=u===as.TRANSLATION,p=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!p,x=e._loadAttributesFor2D&&!o.scene3DOnly;return qoe(e,t,c,void 0,void 0,m,p||h&&(!a||x||g),o)}function rze(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new gUe;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,p=e._loadForClassification&&o,m=!f,x=f||h||p,C=GUe(e,t,n,i,r?!1:m,r?!0:x,s),A=e._geometryLoaders.length;e._geometryLoaders.push(C);let E=C.load();e._loaderPromises.push(E),e._geometryCallbacks[A]=()=>{u.indexDatatype=C.indexDatatype,u.buffer=C.buffer,u.typedArray=C.typedArray};let v=new kC.IndicesLoadPlan(u);return v.loadBuffer=m,v.loadTypedArray=x,v}function zc(e,t,n,i){let o=e.gltfJson,r=au.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=wi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=au.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Io.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function sze(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new LUe;return l(i)&&(c.diffuseTexture=zc(e,i,n)),l(o)&&(c.specularGlossinessTexture=zc(e,o,n)),c.diffuseFactor=uu(oe,r),c.specularFactor=uu(d,s),c.glossinessFactor=a,c}function aze(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new MUe;return l(i)&&(c.baseColorTexture=zc(e,i,n)),l(o)&&(c.metallicRoughnessTexture=zc(e,o,n)),c.baseColorFactor=uu(oe,r),c.metallicFactor=s,c.roughnessFactor=a,c}function cze(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new NUe;return l(o)&&(a.specularTexture=zc(e,o,n)),l(s)&&(a.specularColorTexture=zc(e,s,n)),a.specularFactor=i,a.specularColorFactor=uu(d,r),a}function lze(e,t,n){let{anisotropyStrength:i=oW.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=oW.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new oW;return l(r)&&(s.anisotropyTexture=zc(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function uze(e,t,n){let{clearcoatFactor:i=rW.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=rW.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new rW;return l(o)&&(c.clearcoatTexture=zc(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=zc(e,s,n)),l(a)&&(c.clearcoatNormalTexture=zc(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function fze(e,t,n){let i=new FUe,o=y(t.extensions,y.EMPTY_OBJECT),r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=sze(e,r,n):(l(u)&&(i.metallicRoughness=aze(e,u,n)),l(s)&&!i.unlit&&(i.specular=cze(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=lze(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=uze(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=zc(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=zc(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=zc(e,t.occlusionTexture,n)),i.emissiveFactor=uu(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Xoe(e,t){let n=new zoe;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Koe(e,t,n,i){let o=new zoe,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=joe(r.attribute),o.positionalLabel=i,o}function $oe(e,t){let n=new Goe;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function Zoe(e,t,n,i){let o=new Goe,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=y(r.constant,0);let s=y(r.divisor,0);return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function dze(e,t,n,i){let o=new Hoe;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=zc(e,r,n,Zt.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function hze(e,t,n,i,o,r){let s=new Hoe,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=zc(e,c,i,Zt.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function mze(e,t,n,i,o){let r=new yUe,s=void 0,a=void 0,c=!1;for(let u in t){if(!t.hasOwnProperty(u))continue;let f=t[u],h=sW(e,pt,u),p=Yoe(e,f,h,s,a,c,n,o);r.attributes.push(p.attribute),i.attributePlans.push(p)}return r}function pze(e,t,n,i){let o=new xUe,r=new kC(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=fze(e,e.gltfJson.materials[s],i));let a=y(t.extensions,y.EMPTY_OBJECT),c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=_ze(e,u,r));let f=e._loadForClassification,h=a.KHR_draco_mesh_compression,p=!1,g=t.attributes;if(l(g))for(let v in g){if(!g.hasOwnProperty(v))continue;let D=g[v],R=sW(e,pt,v),O=R.modelSemantic;if(f&&!tze(O))continue;O===pt.FEATURE_ID&&(p=!0);let M=Yoe(e,D,R,t,h,n,c,i);r.attributePlans.push(M),o.attributes.push(M.attribute)}let m=t.targets;if(l(m)&&!f)for(let v=0;v<m.length;++v)o.morphTargets.push(mze(e,m[v],c,r,i));let x=t.indices;if(l(x)){let v=rze(e,x,t,h,p,c,i);l(v)&&(r.indicesPlan=v,o.indices=v.indices)}let b=a.EXT_structural_metadata,T=a.EXT_mesh_features,C=a.EXT_feature_metadata,A=l(C);l(T)?gze(e,o,T,i):A&&yze(e,o,C,i),l(b)?xze(o,b):A&&bze(e,o,C);let E=t.mode;if(f&&E!==Ne.TRIANGLES)throw new se("Only triangle meshes can be used for classification.");return o.primitiveType=E,o}function _ze(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return TF(e,i,!1)}function gze(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=dze(e,s,i,a):l(s.attribute)?c=Xoe(s,a):c=$oe(s,a),t.featureIds.push(c)}}function yze(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),p=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Koe(u,h,p,g):m=Zoe(u,h,p,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),p=o[f].count,g=`featureId_${r}`;r++;let m=hze(e,u,h,i,p,g);t.featureIds.push(m)}}function xze(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function bze(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function Tze(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new bUe,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(oze(e,f,r,u,n))}let s=y(i.extensions,y.EMPTY_OBJECT),a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?Cze(o,a):l(c)&&Aze(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function Cze(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=Xoe(o,r):s=$oe(o,r),e.featureIds.push(s)}}function Aze(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,p;l(a.featureIds.attribute)?p=Koe(a,u,f,h):p=Zoe(a,u,f,h),t.featureIds.push(p)}}function Eze(e,t,n){let i=new CUe;i.name=t.name,i.matrix=uu(F,t.matrix),i.translation=uu(d,t.translation),i.rotation=uu(Le,t.rotation),i.scale=uu(d,t.scale);let o=y(t.extensions,y.EMPTY_OBJECT),r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new se("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=Tze(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let p=0;p<u.length;++p)i.primitives.push(pze(e,u[p],l(i.instances),n));let f=y(t.weights,c.weights),h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function Sze(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=Eze(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function vze(e,t,n){let i=new TUe,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=TF(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(F.IDENTITY);return i}function wze(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=vze(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function Dze(e,t,n,i){let o=new aF({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function Ize(e,t,n,i){let o=new xF({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function Pze(e,t){let n=new EUe,i=e.gltfJson.accessors,o=i[t.input];n.input=TF(e,o);let r=t.interpolation;n.interpolation=y(im[r],im.LINEAR);let s=i[t.output];return n.output=TF(e,s,!0),n}function Oze(e,t){let n=new SUe,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=AUe[o],n}function Rze(e,t,n){let i=new vUe,o=e.sampler;return i.sampler=t[o],i.target=Oze(e.target,n),i}function Mze(e,t,n){let i=new wUe;i.name=t.name;let o=t.samplers.map(function(s,a){let c=Pze(e,s);return c.index=a,c}),r=t.channels.map(function(s){return Rze(s,o,n)});return i.samplers=o,i.channels=r,i}function Lze(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=Mze(e,o,t);return s.index=r,s})}function Nze(e){let t=new DUe;t.name=e.name;let n=e.type.toUpperCase();return t.type=Uc[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function Fze(e){let t=new IUe;return t.name=e.name,t.stages=e.stages.map(Nze),t}function Bze(e){var i;let n=(i=y(e.extensions,y.EMPTY_OBJECT).AGI_articulations)==null?void 0:i.articulations;return l(n)?n.map(Fze):[]}function kze(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=y(t,e.nodes),t=l(t)?t:[],t}function Vze(e,t){let n=new OUe,i=kze(e);return n.nodes=i.map(function(o){return t[o]}),n}var Uze=new d;function zze(e,t){let n=e.gltfJson,i=y(n.extensions,y.EMPTY_OBJECT),o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let C=r.featureTables,A=r.featureTextures,E=l(C)?C:[],v=l(A)?A:[];e._sortedPropertyTableIds=Object.keys(E).sort(),e._sortedFeatureTextureIds=Object.keys(v).sort()}let a=Sze(e,t),c=wze(e,a),u=Lze(e,a),f=Bze(n),h=Vze(n,a),p=new RUe,g=new PUe,m=n.asset.copyright;if(l(m)){let C=m.split(";").map(function(A){return new vt(A.trim())});g.credits=C}if(p.asset=g,p.scene=h,p.nodes=a,p.skins=c,p.animations=u,p.articulations=f,p.upAxis=e._upAxis,p.forwardAxis=e._forwardAxis,l(s)){let C=d.fromArray(s.center,0,Uze);p.transform=F.fromTranslation(C,p.transform)}if(e._components=p,l(o)||l(r)){let C=Dze(e,o,r,t);e._loaderPromises.push(C)}let x=i.NGA_gpm_local;if(l(x)){let C=pF.load(x);e._components.extensions.NGA_gpm_local=C}let b=n.meshes;if(l(b))for(let C of b){let A=C.primitives;if(l(A))for(let E of A){let v=E.extensions;if(l(v)){let D=v.NGA_gpm_local;if(l(D)){let R=Ize(e,n,D,t);e._loaderPromises.push(R)}}}}let T=[];return T.push.apply(T,e._loaderPromises),e._incrementallyLoadTextures||T.push.apply(T,e._texturesPromises),Promise.all(T)}function Hze(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&wi.unload(t[n]);e._textureLoaders.length=0}function Qoe(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&wi.unload(t[n]);e._bufferViewLoaders.length=0}function Gze(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&wi.unload(t[n]);e._geometryLoaders.length=0}function Wze(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function jze(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function qze(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}Dd.prototype.isUnloaded=function(){return this._state===Io.UNLOADED};Dd.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&wi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,Hze(this),Qoe(this),Gze(this),Wze(this),jze(this),qze(this),this._components=void 0,this._typedArray=void 0,this._state=Io.UNLOADED};var om=Dd;function UC(e){e=y(e,y.EMPTY_OBJECT);let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new de("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new de("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new Wr({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new Wr({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}UC.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};UC.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};UC.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};UC.prototype.isDestroyed=function(){return!1};UC.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var CF=UC;var Sl={RGBA4:te.RGBA4,RGBA8:te.RGBA8,RGBA16F:te.RGBA16F,RGBA32F:te.RGBA32F,RGB5_A1:te.RGB5_A1,RGB565:te.RGB565,DEPTH_COMPONENT16:te.DEPTH_COMPONENT16,STENCIL_INDEX8:te.STENCIL_INDEX8,DEPTH_STENCIL:te.DEPTH_STENCIL,DEPTH24_STENCIL8:te.DEPTH24_STENCIL8,validate:function(e){return e===Sl.RGBA4||e===Sl.RGBA8||e===Sl.RGBA16F||e===Sl.RGBA32F||e===Sl.RGB5_A1||e===Sl.RGB565||e===Sl.DEPTH_COMPONENT16||e===Sl.STENCIL_INDEX8||e===Sl.DEPTH_STENCIL||e===Sl.DEPTH24_STENCIL8},getColorFormat:function(e){return e===te.FLOAT?Sl.RGBA32F:e===te.HALF_FLOAT_OES?Sl.RGBA16F:Sl.RGBA8}},vl=Object.freeze(Sl);function Fw(e){e=y(e,y.EMPTY_OBJECT);let n=e.context._gl,i=kt.maximumRenderbufferSize,o=y(e.format,vl.RGBA4),r=l(e.width)?e.width:n.drawingBufferWidth,s=l(e.height)?e.height:n.drawingBufferHeight,a=y(e.numSamples,1);this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(Fw.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});Fw.prototype._getRenderbuffer=function(){return this._renderbuffer};Fw.prototype.isDestroyed=function(){return!1};Fw.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var gf=Fw;function Ss(e){e=y(e,y.EMPTY_OBJECT),this._numSamples=y(e.numSamples,1),this._colorAttachmentsLength=y(e.colorAttachmentsLength,1),this._color=y(e.color,!0),this._depth=y(e.depth,!1),this._depthStencil=y(e.depthStencil,!1),this._supportsDepthTexture=y(e.supportsDepthTexture,!1),this._createColorAttachments=y(e.createColorAttachments,!0),this._createDepthAttachments=y(e.createDepthAttachments,!0),this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Ss.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Ss.prototype.isDirty=function(e,t,n,i,o){n=y(n,1);let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Ss.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?y(i,1):1,o=y(o,this._color?y(this._pixelDatatype,Ke.UNSIGNED_BYTE):void 0),r=y(r,this._color?y(this._pixelFormat,nt.RGBA):void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Rt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:Zt.NEAREST}),this._numSamples>1){let a=vl.getColorFormat(o);this._colorRenderbuffers[s]=new gf({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Rt({context:e,width:t,height:n,pixelFormat:nt.DEPTH_STENCIL,pixelDatatype:Ke.UNSIGNED_INT_24_8,sampler:Zt.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new gf({context:e,width:t,height:n,format:vl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new gf({context:e,width:t,height:n,format:vl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Rt({context:e,width:t,height:n,pixelFormat:nt.DEPTH_COMPONENT,pixelDatatype:Ke.UNSIGNED_INT,sampler:Zt.NEAREST}):this._depthRenderbuffer=new gf({context:e,width:t,height:n,format:vl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new CF({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new Wr({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Ss.prototype.getColorTexture=function(e){return e=y(e,0),this._colorTextures[e]};Ss.prototype.setColorTexture=function(e,t){t=y(t,0),this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Ss.prototype.getColorRenderbuffer=function(e){return e=y(e,0),this._colorRenderbuffers[e]};Ss.prototype.setColorRenderbuffer=function(e,t){t=y(t,0),this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Ss.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Ss.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Ss.prototype.getDepthTexture=function(){return this._depthTexture};Ss.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Ss.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Ss.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Ss.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Ss.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Ss.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Ss.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Ss.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Ss.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var _i=Ss;var AF=`uniform sampler2D u_pointCloud_colorGBuffer;
uniform sampler2D u_pointCloud_depthGBuffer;
uniform vec2 u_distanceAndEdlStrength;
in vec2 v_textureCoordinates;
vec2 neighborContribution(float log2Depth, vec2 offset)
{
float dist = u_distanceAndEdlStrength.x;
vec2 texCoordOrig = v_textureCoordinates + offset * dist;
vec2 texCoord0 = v_textureCoordinates + offset * floor(dist);
vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist);
float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0));
float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1));
// ignore depth values that are the clear depth
if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) {
return vec2(0.0);
}
// interpolate the two adjacent depth values
float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist));
vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix);
return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0);
}
void main()
{
float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates));
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth);
eyeCoordinate /= eyeCoordinate.w;
float log2Depth = log2(-eyeCoordinate.z);
if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer
{
discard;
}
vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates);
// sample from neighbors left, right, down, up
vec2 texelSize = 1.0 / czm_viewport.zw;
vec2 responseAndCount = vec2(0.0);
responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0));
responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0));
responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y));
responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y));
float response = responseAndCount.x / responseAndCount.y;
float strength = u_distanceAndEdlStrength.y;
float shade = exp(-response * 300.0 * strength);
color.rgb *= shade;
out_FragColor = vec4(color);
// Input and output depth are the same.
gl_FragDepth = depthOrLogDepth;
}
`;function zC(){this._framebuffer=new _i({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(zC.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function Yze(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var aW=new U;function Xze(e,t){let n=new Ue({defines:["LOG_DEPTH_WRITE"],sources:[AF]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return aW.x=e._radius,aW.y=e._strength,aW}},o=Ve.fromCache({blending:fn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Ut.setCesium3DTileBit(),stencilMask:Ut.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:ve.CESIUM_3D_TILE,owner:e}),e._clearCommand=new ai({framebuffer:e.framebuffer,color:new z(0,0,0,0),depth:1,renderState:Ve.fromCache(),pass:ve.CESIUM_3D_TILE,owner:e})}function Kze(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),Xze(e,t)}function Joe(e){return e.drawBuffers&&e.fragmentDepth}zC.isSupported=Joe;function $ze(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0;
layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=Ue.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main()
{
czm_point_cloud_post_process_main();
#ifdef LOG_DEPTH
czm_writeLogDepth();
out_FragData_1 = czm_packDepth(gl_FragDepth);
#else
out_FragData_1 = czm_packDepth(gl_FragCoord.z);
#endif
}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}zC.prototype.update=function(e,t,n,i){if(!Joe(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,Kze(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Ne.POINTS||u.pass===ve.TRANSLUCENT)continue;let f,h,p=u.derivedCommands.pointCloudProcessor;l(p)&&(f=p.command,h=p.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=Qe.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=$ze(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(p)||(p={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=p),p.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};zC.prototype.isDestroyed=function(){return!1};zC.prototype.destroy=function(){return Yze(this),ue(this)};var kg=zC;function ere(e){let t=y(e,{});this.attenuation=y(t.attenuation,!1),this.geometricErrorScale=y(t.geometricErrorScale,1),this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=y(t.eyeDomeLighting,!0),this.eyeDomeLightingStrength=y(t.eyeDomeLightingStrength,1),this.eyeDomeLightingRadius=y(t.eyeDomeLightingRadius,1),this.backFaceCulling=y(t.backFaceCulling,!1),this.normalShading=y(t.normalShading,!0)}ere.isSupported=function(e){return kg.isSupported(e.context)};var Bp=ere;var Ia={},Zze=new oe(0,0,0,1),oc=new oe,Qze=new je,cW=new U,lW=new U;Ia.worldToWindowCoordinates=function(e,t,n){return Ia.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var tre=new oe,nre=new d;function Bw(e,t,n,i){let o=n.viewMatrix,r=F.multiplyByVector(o,oe.fromElements(e.x,e.y,e.z,1,tre),tre),s=d.multiplyComponents(t,d.normalize(r,nre),nre);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,F.multiplyByVector(n.frustum.projectionMatrix,r,i)}var Jze=new fe(Math.PI,P.PI_OVER_TWO),e4e=new d,t4e=new d;Ia.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=Ia.computeActualEllipsoidPosition(o,t,Zze);if(!l(r))return;let s=e.canvas,a=Qze;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ne.SCENE2D){let f=e.mapProjection,h=Jze,p=f.project(h,e4e),g=d.clone(c.position,t4e),m=c.frustum.clone(),x=F.computeViewportTransformation(a,0,1,new F),b=c.frustum.projectionMatrix,T=c.positionWC.y,C=d.fromElements(P.sign(T)*p.x-T,0,-c.positionWC.x),A=Mt.pointToGLWindowCoordinates(b,x,C);if(T===0||A.x<=0||A.x>=s.clientWidth)u=!0;else{if(A.x>s.clientWidth*.5){a.width=A.x,c.frustum.right=p.x-T,oc=Bw(r,n,c,oc),Ia.clipToGLWindowCoordinates(a,oc,cW),a.x+=A.x,c.position.x=-c.position.x;let E=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-E,oc=Bw(r,n,c,oc),Ia.clipToGLWindowCoordinates(a,oc,lW)}else{a.x+=A.x,a.width-=A.x,c.frustum.left=-p.x-T,oc=Bw(r,n,c,oc),Ia.clipToGLWindowCoordinates(a,oc,cW),a.x=a.x-a.width,c.position.x=-c.position.x;let E=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-E,oc=Bw(r,n,c,oc),Ia.clipToGLWindowCoordinates(a,oc,lW)}d.clone(g,c.position),c.frustum=m.clone(),i=U.clone(cW,i),(i.x<0||i.x>s.clientWidth)&&(i.x=lW.x)}}if(o.mode!==ne.SCENE2D||u){if(oc=Bw(r,n,c,oc),oc.z<0&&!(c.frustum instanceof an)&&!(c.frustum instanceof qr))return;i=Ia.clipToGLWindowCoordinates(a,oc,i)}return i.y=s.clientHeight-i.y,i};Ia.worldToDrawingBufferCoordinates=function(e,t,n){if(n=Ia.worldToWindowCoordinates(e,t,n),!!l(n))return Ia.transformWindowToDrawingBuffer(e,n,n)};var kp=new d,n4e=new fe;Ia.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ne.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,n4e);if(!l(r))return;if(o.project(r,kp),i===ne.COLUMBUS_VIEW)return d.fromElements(kp.z,kp.x,kp.y,n);if(i===ne.SCENE2D)return d.fromElements(0,kp.x,kp.y,n);let s=e.morphTime;return d.fromElements(P.lerp(kp.z,t.x,s),P.lerp(kp.x,t.y,s),P.lerp(kp.y,t.z,s),n)};var ire=new d,ore=new d,rre=new F;Ia.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,ire),F.computeViewportTransformation(e,0,1,rre),F.multiplyByPoint(rre,ire,ore),U.fromCartesian3(ore,n)};Ia.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return U.fromElements(t.x*o,t.y*r,n)};var i4e=new oe,sre=new oe;Ia.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=oe.clone(oe.UNIT_W,i4e);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,p=e.camera.frustum;if(l(p.fovy)){h=F.multiplyByVector(r.inverseViewProjection,f,sre);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=p.offCenterFrustum;l(g)&&(p=g),h=sre,h.x=(f.x*(p.right-p.left)+p.left+p.right)*.5,h.y=(f.y*(p.top-p.bottom)+p.bottom+p.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=F.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var Wi=Ia;var HC={};HC._deprecationWarning=Qa;var Vp=Uint32Array.BYTES_PER_ELEMENT;HC.parse=function(e,t){let n=y(t,0);t=n;let i=new Uint8Array(e),o=new DataView(e);t+=Vp;let r=o.getUint32(t,!0);if(r!==1)throw new se(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=Vp;let s=o.getUint32(t,!0);t+=Vp;let a=o.getUint32(t,!0);t+=Vp;let c=o.getUint32(t,!0);t+=Vp;let u=o.getUint32(t,!0);t+=Vp;let f=o.getUint32(t,!0);t+=Vp;let h;u>=570425344?(t-=Vp*2,h=a,u=c,f=0,a=0,c=0,HC._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=Vp,h=u,u=a,f=c,a=0,c=0,HC._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let p;a===0?p={BATCH_LENGTH:y(h,0)}:(p=cr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,x;u>0&&(m=cr(i,t,u),t+=u,f>0&&(x=new Uint8Array(e,t,f),x=new Uint8Array(x),t+=f));let b=n+s-t;if(b===0)throw new se("glTF byte length must be greater than 0.");let T;return t%4===0?T=new Uint8Array(e,t,b):(HC._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),T=new Uint8Array(i.subarray(t,t+b))),{batchLength:h,featureTableJson:p,featureTableBinary:g,batchTableJson:m,batchTableBinary:x,gltf:T}};var EF=HC;function kw(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function are(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=X.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function o4e(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=X.createTypedArray(n,i),o[t]=r),r}kw.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=y(t,X.UNSIGNED_INT),n=y(n,1),are(this,e,t,n,1,i.byteOffset)):i};kw.prototype.hasProperty=function(e){return l(this.json[e])};kw.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=X.fromName(i.componentType)),are(this,e,t,n,this.featuresLength,i.byteOffset)):o4e(this,e,t,i)};kw.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var rm=kw;function Vw(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=y(e.parseAsPropertyAttributes,!1),r=e.customAttributeOutput,s=r4e(n),a;l(s.jsonProperties)&&(a=new Ng({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new _C({extension:s.hierarchy,binaryBody:i}));let u=Jh.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,p,g;if(o){let b=a4e(t,u,f,i,r);g=b.transcodedSchema,p=[new NC({propertyAttribute:b.propertyAttributeJson,class:b.transcodedClass})]}else{let b=s4e(t,u,f,i);g=b.transcodedSchema;let T=b.featureTableJson;h=new Ed({count:T.count,properties:T.properties,class:b.transcodedClass,bufferViews:b.bufferViewsTypedArrays}),p=[]}let m=[];if(l(h)||l(a)||l(c)){let b=new El({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(b)}let x={schema:g,propertyTables:m,propertyAttributes:p,extensions:s.extensions,extras:s.extras};return new la(x)}function r4e(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(Vw._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function s4e(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new se(`Property ${h} requires a batch table binary.`);let p=n[h],g=ff(p);r[h]={bufferView:a},o[h]=cre(p),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+p.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=mf.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function a4e(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let p=n[h];if(!l(i)&&!l(p.typedArray))throw new se(`Property ${h} requires a batch table binary.`);let g=Kt.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=cre(p);m.name=h,r[g]=m;let x=g.toUpperCase();x.startsWith("_")||(x=`_${x}`);let b=p.typedArray;l(b)||(b=ff(p).createArrayBufferView(i.buffer,i.byteOffset+p.byteOffset,e));let T=new xn.Attribute;T.name=x,T.count=e,T.type=p.type;let C=X.fromTypedArray(b);(C===X.INT||C===X.UNSIGNED_INT||C===X.DOUBLE)&&(Vw._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${x}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),b=new Float32Array(b)),T.componentDatatype=X.fromTypedArray(b),T.typedArray=b,o.push(T),s[g]={attribute:x}}let c={classes:{}};c.classes[t]={properties:r};let u=mf.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function cre(e){let t=c4e(e.componentType);return{type:e.type,componentType:t}}function c4e(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}Vw._deprecationWarning=Qa;Vw._oneTimeWarning=Ct;var Vg=Vw;var Ex={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},l4e=xn.FeatureIdAttribute;function Ug(e){e=y(e,y.EMPTY_OBJECT);let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=y(e.byteOffset,0),r=y(e.releaseGltfJson,!1),s=y(e.asynchronous,!0),a=y(e.incrementallyLoadTextures,!0),c=y(e.upAxis,Vo.Y),u=y(e.forwardAxis,Vo.X),f=y(e.loadAttributesAsTypedArray,!1),h=y(e.loadAttributesFor2D,!1),p=y(e.enablePick,!1),g=y(e.loadIndicesForWireframe,!1),m=y(e.loadPrimitiveOutline,!0),x=y(e.loadForClassification,!1);n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=p,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=x,this._state=Ex.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=F.IDENTITY}l(Object.create)&&(Ug.prototype=Object.create(Ji.prototype),Ug.prototype.constructor=Ug);Object.defineProperties(Ug.prototype,{texturesLoaded:{get:function(){var e;return(e=this._gltfLoader)==null?void 0:e.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});Ug.prototype.load=function(){if(l(this._promise))return this._promise;let e=EF.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new rm(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",X.FLOAT,3);l(a)&&(this._transform=F.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new om({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=Ex.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=Ex.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return u4e(u,f)}),this._promise};function u4e(e,t){return e.unload(),e._state=Ex.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}Ug.prototype.process=function(e){if(this._state===Ex.READY)return!0;if(this._state!==Ex.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=F.multiplyTransformation(this._transform,n.transform,n.transform),f4e(this,n),this._components=n,this._arrayBuffer=void 0,this._state=Ex.READY,!0};function f4e(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=Vg({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new El({name:Jh.BATCH_TABLE_CLASS_NAME,count:i});o=new la({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)lre(r[a]);t.structuralMetadata=o}function lre(e){let t=e.children.length;for(let i=0;i<t;i++)lre(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Kt.getAttributeBySemantic(o,pt.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new l4e;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}Ug.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var SF=Ug;function zg(e){e=y(e,y.EMPTY_OBJECT),this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(zg.prototype=Object.create(Ji.prototype),zg.prototype.constructor=zg);Object.defineProperties(zg.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});zg.prototype.load=function(){return Promise.resolve(this)};zg.prototype.process=function(e){return l(this._components)||(this._components=E4e(this._geoJson,e),this._geoJson=void 0),!0};function d4e(){this.lines=void 0,this.points=void 0,this.properties=void 0}function h4e(){this.features=[]}function uW(e){let t=e[0],n=e[1],i=y(e[2],0);return new d(t,n,i)}function fW(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=uW(e[o]);return[n]}function m4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=fW(e[i])[0];return n}function ure(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=fW(e[i])[0];return n}function p4e(e){let t=e.length,n=[];for(let i=0;i<t;i++)Array.prototype.push.apply(n,ure(e[i]));return n}function _4e(e){return[uW(e)]}function g4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=uW(e[i]);return n}var y4e={LineString:fW,MultiLineString:m4e,MultiPolygon:p4e,Polygon:ure,MultiPoint:g4e,Point:_4e},x4e={LineString:Ne.LINES,MultiLineString:Ne.LINES,MultiPolygon:Ne.LINES,Polygon:Ne.LINES,MultiPoint:Ne.POINTS,Point:Ne.POINTS};function fre(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=y4e[n],o=x4e[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new d4e;o===Ne.LINES?s.lines=i(r):o===Ne.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function b4e(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)fre(n[o],t)}var T4e={FeatureCollection:b4e,Feature:fre},vF=new d;function C4e(e,t,n){let i=0,o=0,r=e.length;for(let M=0;M<r;M++){let N=e[M];if(l(N.lines)){let _=N.lines.length;for(let S=0;S<_;S++){let w=N.lines[S];i+=w.length,o+=(w.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Be.createTypedArray(i,o),u=Be.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),p=0,g=0;for(let M=0;M<r;M++){let N=e[M];if(!l(N.lines))continue;let _=N.lines.length;for(let S=0;S<_;S++){let w=N.lines[S],I=w.length;for(let L=0;L<I;L++){let B=w[L],H=d.fromDegrees(B.x,B.y,B.z,ee.WGS84,vF),V=F.multiplyByPoint(t,H,vF);d.minimumByComponent(f,V,f),d.maximumByComponent(h,V,h),d.pack(V,s,p*3),a[p]=M,L<I-1&&(c[g*2]=p,c[g*2+1]=p+1,g++),p++}}}let m=Tt.createVertexBuffer({typedArray:s,context:n.context,usage:ke.STATIC_DRAW});m.vertexArrayDestroyable=!1;let x=Tt.createVertexBuffer({typedArray:a,context:n.context,usage:ke.STATIC_DRAW});x.vertexArrayDestroyable=!1;let b=Tt.createIndexBuffer({typedArray:c,context:n.context,usage:ke.STATIC_DRAW,indexDatatype:u});b.vertexArrayDestroyable=!1;let T=new xn.Attribute;T.semantic=pt.POSITION,T.componentDatatype=X.FLOAT,T.type=on.VEC3,T.count=i,T.min=f,T.max=h,T.buffer=m;let C=new xn.Attribute;C.semantic=pt.FEATURE_ID,C.setIndex=0,C.componentDatatype=X.FLOAT,C.type=on.SCALAR,C.count=i,C.buffer=x;let A=[T,C],E=new xn.Material;E.unlit=!0;let v=new xn.Indices;v.indexDatatype=u,v.count=c.length,v.buffer=b;let D=new xn.FeatureIdAttribute;D.featureCount=r,D.propertyTableId=0,D.setIndex=0,D.positionalLabel="featureId_0";let R=[D],O=new xn.Primitive;return O.attributes=A,O.indices=v,O.featureIds=R,O.primitiveType=Ne.LINES,O.material=E,O}function A4e(e,t,n){let i=0,o=e.length;for(let A=0;A<o;A++){let E=e[A];l(E.points)&&(i+=E.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let A=0;A<o;A++){let E=e[A];if(!l(E.points))continue;let v=E.points.length;for(let D=0;D<v;D++){let R=E.points[D],O=d.fromDegrees(R.x,R.y,R.z,ee.WGS84,vF),M=F.multiplyByPoint(t,O,vF);d.minimumByComponent(a,M,a),d.maximumByComponent(c,M,c),d.pack(M,r,u*3),s[u]=A,u++}}let f=Tt.createVertexBuffer({typedArray:r,context:n.context,usage:ke.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Tt.createVertexBuffer({typedArray:s,context:n.context,usage:ke.STATIC_DRAW});h.vertexArrayDestroyable=!1;let p=new xn.Attribute;p.semantic=pt.POSITION,p.componentDatatype=X.FLOAT,p.type=on.VEC3,p.count=i,p.min=a,p.max=c,p.buffer=f;let g=new xn.Attribute;g.semantic=pt.FEATURE_ID,g.setIndex=0,g.componentDatatype=X.FLOAT,g.type=on.SCALAR,g.count=i,g.buffer=h;let m=[p,g],x=new xn.Material;x.unlit=!0;let b=new xn.FeatureIdAttribute;b.featureCount=o,b.propertyTableId=0,b.setIndex=0,b.positionalLabel="featureId_0";let T=[b],C=new xn.Primitive;return C.attributes=m,C.featureIds=T,C.primitiveType=Ne.POINTS,C.material=x,C}function E4e(e,t){let n=new h4e,i=T4e[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new se("GeoJSON must have at least one feature");let s={};for(let M=0;M<r;M++){let N=o[M],_=y(N.properties,y.EMPTY_OBJECT);for(let S in _)_.hasOwnProperty(S)&&(l(s[S])||(s[S]=new Array(r)))}for(let M=0;M<r;M++){let N=o[M];for(let _ in s)if(s.hasOwnProperty(_)){let S=y(N.properties[_],"");s[_][M]=S}}let a=new Ng({count:r,properties:s}),u=[new El({id:0,count:r,jsonMetadataTable:a})],f=mf.fromJson({}),h=new la({schema:f,propertyTables:u}),p=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,x=!1;for(let M=0;M<r;M++){let N=o[M];if(l(N.lines)){m=!0;let _=N.lines.length;for(let S=0;S<_;S++){let w=N.lines[S],I=w.length;for(let L=0;L<I;L++)d.minimumByComponent(p,w[L],p),d.maximumByComponent(g,w[L],g)}}if(l(N.points)){x=!0;let _=N.points.length;for(let S=0;S<_;S++){let w=N.points[S];d.minimumByComponent(p,w,p),d.maximumByComponent(g,w,g)}}}let b=d.midpoint(p,g,new d),T=d.fromDegrees(b.x,b.y,b.z,ee.WGS84,new d),C=Mt.eastNorthUpToFixedFrame(T,ee.WGS84,new F),A=F.inverseTransformation(C,new F),E=[];m&&E.push(C4e(o,A,t)),x&&E.push(A4e(o,A,t));let v=new xn.Node;v.index=0,v.primitives=E;let D=[v],R=new xn.Scene;R.nodes=D;let O=new xn.Components;return O.scene=R,O.nodes=D,O.transform=C,O.structuralMetadata=h,O}zg.prototype.unload=function(){this._components=void 0};var wF=zg;var DF={};DF._deprecationWarning=Qa;var Hg=Uint32Array.BYTES_PER_ELEMENT;DF.parse=function(e,t){let n=y(t,0);t=n;let i=new Uint8Array(e),o=new DataView(e);t+=Hg;let r=o.getUint32(t,!0);if(r!==1)throw new se(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=Hg;let s=o.getUint32(t,!0);t+=Hg;let a=o.getUint32(t,!0);if(a===0)throw new se("featureTableJsonByteLength is zero, the feature table must be defined.");t+=Hg;let c=o.getUint32(t,!0);t+=Hg;let u=o.getUint32(t,!0);t+=Hg;let f=o.getUint32(t,!0);t+=Hg;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new se(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=Hg;let p=cr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,x;u>0&&(m=cr(i,t,u),t+=u,f>0&&(x=new Uint8Array(e,t,f),x=new Uint8Array(x),t+=f));let b=n+s-t;if(b===0)throw new se("glTF byte length must be greater than 0.");let T;return t%4===0?T=new Uint8Array(e,t,b):(DF._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),T=new Uint8Array(i.subarray(t,t+b))),{gltfFormat:h,featureTableJson:p,featureTableBinary:g,batchTableJson:m,batchTableBinary:x,gltf:T}};var IF=DF;var Up={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},PF=xn.Attribute,S4e=xn.FeatureIdAttribute,hre=xn.Instances;function zp(e){e=y(e,y.EMPTY_OBJECT);let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=y(e.byteOffset,0),r=y(e.releaseGltfJson,!1),s=y(e.asynchronous,!0),a=y(e.incrementallyLoadTextures,!0),c=y(e.upAxis,Vo.Y),u=y(e.forwardAxis,Vo.X),f=y(e.loadAttributesAsTypedArray,!1),h=y(e.loadIndicesForWireframe,!1),p=y(e.loadPrimitiveOutline,!0),g=y(e.enablePick,!1);i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=p,this._enablePick=g,this._state=Up.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=F.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(zp.prototype=Object.create(Ji.prototype),zp.prototype.constructor=zp);Object.defineProperties(zp.prototype,{texturesLoaded:{get:function(){var e;return(e=this._gltfLoader)==null?void 0:e.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});zp.prototype.load=function(){if(l(this._promise))return this._promise;let e=IF.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new rm(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new se("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",X.FLOAT,3);l(c)&&(this._transform=F.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=iu(e.gltf);h=h.replace(/[\s\0]+$/,"");let p=this._baseResource.getDerivedResource({url:h});u.gltfResource=p,u.baseResource=p}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new om(u);return this._gltfLoader=f,this._state=Up.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=Up.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw v4e(this,h)}),this._promise};function v4e(e,t){return e.unload(),e._state=Up.FAILED,e.getError("Failed to load i3dm",t)}zp.prototype.process=function(e){if(this._state===Up.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===Up.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=F.multiplyTransformation(this._transform,i.transform,i.transform),I4e(this,i,e),w4e(this,i),this._components=i,this._arrayBuffer=void 0,this._state=Up.READY,!0};function w4e(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=Vg({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new El({name:Jh.BATCH_TABLE_CLASS_NAME,count:i});o=new la({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var OF=new d,dW=new Array(4),D4e=new F;function I4e(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",X.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=O4e(o,r),h;c&&(h=new Float32Array(4*r));let p;u&&(p=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),x=new d,b=new d,T=new d,C=new d,A=new Z,E=new Le,v=new Array(4),D=new d,R=new Array(3),O=new F;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let V=ce.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],V.center,OF),f[3*i+0]=OF.x,f[3*i+1]=OF.y,f[3*i+2]=OF.z;let G=F.fromTranslation(V.center,D4e);t.transform=F.multiplyTransformation(G,t.transform,t.transform)}for(i=0;i<r;i++){x=d.clone(m[i]),l(s)&&d.add(x,d.unpack(s),x),c&&(R4e(o,a,i,E,x,T,b,C,A,O),Le.pack(E,v,0),h[4*i+0]=v[0],h[4*i+1]=v[1],h[4*i+2]=v[2],h[4*i+3]=v[3]),u&&(M4e(o,i,D),d.pack(D,R,0),p[3*i+0]=R[0],p[3*i+1]=R[1],p[3*i+2]=R[2]);let V=o.getProperty("BATCH_ID",X.UNSIGNED_SHORT,1,i);l(V)||(V=i),g[i]=V}let M=new hre;M.transformInWorldSpace=!0;let N=e._buffers,_=new PF;if(_.name="Instance Translation",_.semantic=as.TRANSLATION,_.componentDatatype=X.FLOAT,_.type=on.VEC3,_.count=r,_.typedArray=f,!c){let V=Tt.createVertexBuffer({context:n.context,typedArray:f,usage:ke.STATIC_DRAW});V.vertexArrayDestroyable=!1,N.push(V),_.buffer=V}if(M.attributes.push(_),c){let V=new PF;V.name="Instance Rotation",V.semantic=as.ROTATION,V.componentDatatype=X.FLOAT,V.type=on.VEC4,V.count=r,V.typedArray=h,M.attributes.push(V)}if(u){let V=new PF;if(V.name="Instance Scale",V.semantic=as.SCALE,V.componentDatatype=X.FLOAT,V.type=on.VEC3,V.count=r,c)V.typedArray=p;else{let G=Tt.createVertexBuffer({context:n.context,typedArray:p,usage:ke.STATIC_DRAW});G.vertexArrayDestroyable=!1,N.push(G),V.buffer=G}M.attributes.push(V)}let S=new PF;S.name="Instance Feature ID",S.setIndex=0,S.semantic=as.FEATURE_ID,S.componentDatatype=X.FLOAT,S.type=on.SCALAR,S.count=r;let w=Tt.createVertexBuffer({context:n.context,typedArray:g,usage:ke.STATIC_DRAW});w.vertexArrayDestroyable=!1,N.push(w),S.buffer=w,M.attributes.push(S);let I=new S4e;I.propertyTableId=0,I.setIndex=0,I.positionalLabel="instanceFeatureId_0",M.featureIds.push(I);let L=t.nodes,B=L.length,H=!1;for(i=0;i<B;i++){let V=L[i];V.primitives.length>0&&(V.instances=H?P4e(M):M,H=!0)}}function P4e(e){let t=new hre;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=He(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function O4e(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",X.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",X.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",X.FLOAT,3);if(!l(i))throw new se("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",X.FLOAT,3);if(!l(o))throw new se("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new se("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var dre=new Array(4);function R4e(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",X.FLOAT,3,n,dW),h=e.getProperty("NORMAL_RIGHT",X.FLOAT,3,n,dre),p=!1;if(l(f)){if(!l(h))throw new se("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),p=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",X.UNSIGNED_SHORT,2,n,dW),m=e.getProperty("NORMAL_RIGHT_OCT32P",X.UNSIGNED_SHORT,2,n,dre);if(l(g)){if(!l(m))throw new se("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");Bn.octDecodeInRange(g[0],g[1],65535,r),Bn.octDecodeInRange(m[0],m[1],65535,s),p=!0}else t?(Mt.eastNorthUpToFixedFrame(o,ee.WGS84,u),F.getMatrix3(u,c)):Z.clone(Z.IDENTITY,c)}p&&(d.cross(s,r,a),d.normalize(a,a),Z.setColumn(c,0,s,c),Z.setColumn(c,1,r,c),Z.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function M4e(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",X.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",X.FLOAT,3,t,dW);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function L4e(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}zp.prototype.isUnloaded=function(){return this._state===Up.UNLOADED};zp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),L4e(this),this._components=void 0,this._arrayBuffer=void 0,this._state=Up.UNLOADED};var RF=zp;var N4e={STOPPED:0,ANIMATING:1},sm=Object.freeze(N4e);function GC(){this.times=void 0,this.points=void 0,de.throwInstantiationError()}GC.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};GC.prototype.evaluate=de.throwInstantiationError;GC.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=y(t,0),e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};GC.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};GC.prototype.clampTime=function(e){let t=this.times;return P.clamp(e,t[0],t[t.length-1])};var so=GC;function WC(e){this._value=e,this._valueType=so.getPointType(e)}Object.defineProperties(WC.prototype,{value:{get:function(){return this._value}}});WC.prototype.findTimeInterval=function(e){};WC.prototype.wrapTime=function(e){return 0};WC.prototype.clampTime=function(e){return 0};WC.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var MF=WC;function jC(e){e=y(e,y.EMPTY_OBJECT);let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=so.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(jC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});jC.prototype.findTimeInterval=so.prototype.findTimeInterval;jC.prototype.wrapTime=so.prototype.wrapTime;jC.prototype.clampTime=so.prototype.clampTime;jC.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var Sx=jC;var mre={};mre.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var Uw=mre;var pre=[],_re=[],gre=[],yre=[];function F4e(e,t,n){let i=pre,o=gre,r=_re,s=yre;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),Uw.solve(i,r,o,s)}function B4e(e){let t=pre,n=gre,i=_re,o=yre;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),Uw.solve(t,i,n,o)}function wl(e){e=y(e,y.EMPTY_OBJECT);let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=so.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(wl.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});wl.createC1=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new wl({times:t,points:n,inTangents:r,outTangents:o})};wl.createNaturalCubic=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.times,n=e.points;if(n.length<3)return new Sx({points:n,times:t});let i=B4e(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new wl({times:t,points:n,inTangents:r,outTangents:o})};wl.createClampedCubic=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=so.getPointType(n[0]);if(n.length<3)return new Sx({points:n,times:t});let s=F4e(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new wl({times:t,points:n,inTangents:c,outTangents:a})};wl.hermiteCoefficientMatrix=new F(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);wl.prototype.findTimeInterval=so.prototype.findTimeInterval;var k4e=new oe,qC=new d;wl.prototype.wrapTime=so.prototype.wrapTime;wl.prototype.clampTime=so.prototype.clampTime;wl.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=k4e;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=F.multiplyByVector(wl.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,qC),h.add(t,qC,t),h.multiplyByScalar(r[s],f.z,qC),h.add(t,qC,t),h.multiplyByScalar(o[s],f.w,qC),h.add(t,qC,t))};var vx=wl;function YC(e){e=y(e,y.EMPTY_OBJECT);let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=so.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(YC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});YC.prototype.findTimeInterval=so.prototype.findTimeInterval;YC.prototype.wrapTime=so.prototype.wrapTime;YC.prototype.clampTime=so.prototype.clampTime;YC.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var LF=YC;function V4e(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function XC(e){e=y(e,y.EMPTY_OBJECT);let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=V4e(this),this._lastTimeIndex=0}Object.defineProperties(XC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});XC.prototype.findTimeInterval=so.prototype.findTimeInterval;XC.prototype.wrapTime=so.prototype.wrapTime;XC.prototype.clampTime=so.prototype.clampTime;XC.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var NF=XC;var KC=xn.AnimatedPropertyType;function hW(e){e=y(e,y.EMPTY_OBJECT);let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,W4e(this)}Object.defineProperties(hW.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function U4e(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new vx({times:e,points:n,inTangents:i,outTangents:o})}function xre(e,t,n,i){if(e.length===1&&t.length===1)return new MF(t[0]);switch(n){case im.STEP:return new LF({times:e,points:t});case im.CUBICSPLINE:return U4e(e,t);case im.LINEAR:return i===KC.ROTATION?new NF({times:e,points:t}):new Sx({times:e,points:t})}}function z4e(e,t,n,i,o){let r=[];if(i===KC.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===im.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(xre(e,f,n,i))}}else r.push(xre(e,t,n,i));return r}var H4e=new d,G4e=new Le;function W4e(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=z4e(i,o,r,a,u);e._splines=f,e._path=a}hW.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===KC.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===KC.TRANSLATION||n===KC.SCALE?o[n]=r.evaluate(s,H4e):n===KC.ROTATION&&(o[n]=r.evaluate(s,G4e))}}};var FF=hW;function mW(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=$.clone(n.startTime),this._delay=y(n.delay,0),this._stopTime=$.clone(n.stopTime),this.removeOnStop=y(n.removeOnStop,!1),this._multiplier=y(n.multiplier,1),this._reverse=y(n.reverse,!1),this._loop=y(n.loop,lu.NONE),this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new me,this.update=new me,this.stop=new me,this._state=sm.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,j4e(this)}Object.defineProperties(mW.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function j4e(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,p=i._runtimeNodes[h],g=new FF({channel:u,runtimeAnimation:e,runtimeNode:p}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}mW.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var BF=mW;function Hp(e){this.animationAdded=new me,this.animationRemoved=new me,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(Hp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function pW(e,t,n){let i=e._model,o=new BF(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}Hp.prototype.add=function(e){e=y(e,y.EMPTY_OBJECT);let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return pW(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return pW(this,n[i],e)};Hp.prototype.addAll=function(e){e=y(e,y.EMPTY_OBJECT);let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=pW(this,n[r],e);i.push(s)}return i};Hp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};Hp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};Hp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};Hp.prototype.get=function(e){return this._runtimeAnimations[e]};var kF=[];function q4e(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}Hp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&$.equals(e.time,this._previousTime))return!1;this._previousTime=$.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=$.addSeconds(y(a.startTime,o),a.delay,new $)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=$.lessThanOrEquals(c,o),p=l(f)&&$.greaterThan(o,f),g=0;if(u!==0){let b=$.secondsDifference(p?f:o,c);g=l(a._animationTime)?a._animationTime(u,b):b/u}let m=a.loop===lu.REPEAT||a.loop===lu.MIRRORED_REPEAT,x=(h||m&&!l(a.startTime))&&(g<=1||m)&&!p;if(g===a._prevAnimationDelta){let b=a._state===sm.STOPPED;if(x!==b)continue}if(a._prevAnimationDelta=g,x||a._state===sm.ANIMATING){if(x&&a._state===sm.STOPPED&&(a._state=sm.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===lu.REPEAT)g=g-Math.floor(g);else if(a.loop===lu.MIRRORED_REPEAT){let T=Math.floor(g),C=g-T;g=T%2===1?1-C:C}a.reverse&&(g=1-g);let b=g*u*a.multiplier;b=P.clamp(b,a.localStartTime,a.localStopTime),a.animate(b),a.update.numberOfListeners>0&&(a._updateEventTime=b,e.afterRender.push(a._raiseUpdateEvent)),i=!0,x||(a._state=sm.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&kF.push(a))}}n=kF.length;for(let s=0;s<n;++s){let a=kF[s];t.splice(t.indexOf(a),1),e.afterRender.push(q4e(this,r,a))}return kF.length=0,i};var VF=Hp;function wx(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(wx.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new z),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});wx.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};wx.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};wx.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};wx.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};wx.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var UF=wx;var zw={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};zw.getStyleCommandsNeeded=function(e,t){return t===0?zw.ALL_OPAQUE:t===e?zw.ALL_TRANSLUCENT:zw.OPAQUE_AND_TRANSLUCENT};var am=Object.freeze(zw);var Gg={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};Gg.is3DTiles=function(e){switch(e){case Gg.TILE_GLTF:case Gg.TILE_B3DM:case Gg.TILE_I3DM:case Gg.TILE_PNTS:case Gg.TILE_GEOJSON:return!0;case Gg.GLTF:return!1}};var yr=Object.freeze(Gg);function Br(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=am.ALL_OPAQUE,Y4e(this)}Object.defineProperties(Br.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function Y4e(e){let t=e._model,n=yr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new sa(s,o)}else for(o=0;o<i;o++)r[o]=new UF({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Tl({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}Br.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=am.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};Br.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Br.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Br.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Br.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Br.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Br.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Br.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};Br.prototype.getFeature=function(e){return this._features[e]};Br.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};Br.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};Br.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};Br.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};Br.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};Br.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};Br.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};Br.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};Br.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var X4e=new z;Br.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Tl.DEFAULT_COLOR_VALUE),this.setAllShow(Tl.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?y(e.color.evaluateColor(n,X4e),Tl.DEFAULT_COLOR_VALUE):Tl.DEFAULT_COLOR_VALUE,o=l(e.show)?y(e.show.evaluate(n),Tl.DEFAULT_SHOW_VALUE):Tl.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};Br.prototype.isDestroyed=function(){return!1};Br.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var zF=Br;var Dx={VERTEX:0,FRAGMENT:1,BOTH:2};Dx.includesVertexShader=function(e){return e===Dx.VERTEX||e===Dx.BOTH};Dx.includesFragmentShader=function(e){return e===Dx.FRAGMENT||e===Dx.BOTH};var pe=Object.freeze(Dx);var bre={name:"TilesetPipelineStage"};bre.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return U.ZERO}};e.uniformMap=At(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Ut.setCesium3DTileBit(),i.stencilMask=Ut.CESIUM_3D_TILE_MASK};var HF=bre;var GF=`// robust iterative solution without trig functions
// https://github.com/0xfaded/ellipse_demo/issues/1
// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse
//
// This version uses only a single iteration for best performance. For fog
// rendering, the difference is negligible.
vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) {
vec2 p = abs(pos);
vec2 inverseRadii = 1.0 / radii;
vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii;
// We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t))
// but store the cos and sin of t in a vec2 for efficiency.
// Initial guess: t = cos(pi/4)
vec2 tTrigs = vec2(0.70710678118);
vec2 v = radii * tTrigs;
// Find the evolute of the ellipse (center of curvature) at v.
vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs;
// Find the (approximate) intersection of p - evolute with the ellipsoid.
vec2 q = normalize(p - evolute) * length(v - evolute);
// Update the estimate of t.
tTrigs = (q + evolute) * inverseRadii;
tTrigs = normalize(clamp(tTrigs, 0.0, 1.0));
v = radii * tTrigs;
return v * sign(pos);
}
vec3 computeEllipsoidPositionWC(vec3 positionMC) {
// Get the world-space position and project onto a meridian plane of
// the ellipsoid
vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz;
vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z);
vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz);
// Reconstruct a 3D point in world space
return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y);
}
void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) {
vec3 fogColor = groundAtmosphereColor.rgb;
// If there is dynamic lighting, apply that to the fog.
const float NONE = 0.0;
if (czm_atmosphereDynamicLighting != NONE) {
float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0);
fogColor *= darken;
}
// Tonemap if HDR rendering is disabled
#ifndef HDR
fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);
fogColor.rgb = czm_inverseGamma(fogColor.rgb);
#endif
vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar);
color = vec4(withFog, color.a);
}
void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) {
vec3 rayleighColor;
vec3 mieColor;
float opacity;
vec3 positionWC;
vec3 lightDirection;
// When the camera is in space, compute the position per-fragment for
// more accurate ground atmosphere. All other cases will use
//
// The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717
if (false) {
positionWC = computeEllipsoidPositionWC(attributes.positionMC);
lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting);
// The fog color is derived from the ground atmosphere color
czm_computeGroundAtmosphereScattering(
positionWC,
lightDirection,
rayleighColor,
mieColor,
opacity
);
} else {
positionWC = attributes.positionWC;
lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting);
rayleighColor = v_atmosphereRayleighColor;
mieColor = v_atmosphereMieColor;
opacity = v_atmosphereOpacity;
}
//color correct rayleigh and mie colors
const bool ignoreBlackPixels = true;
rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels);
mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels);
vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity);
if (u_isInFog) {
float distanceToCamera = length(attributes.positionEC);
applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera);
} else {
// Ground atmosphere
}
}
`;var WF=`void atmosphereStage(ProcessedAttributes attributes) {
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting);
czm_computeGroundAtmosphereScattering(
// This assumes the geometry stage came before this.
v_positionWC,
lightDirection,
v_atmosphereRayleighColor,
v_atmosphereMieColor,
v_atmosphereOpacity
);
}
`;var Tre={name:"AtmospherePipelineStage"};Tre.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([WF]),i.addFragmentLines([GF]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return P.fog(o,n.fog.density)>P.EPSILON3}};var jF=Tre;var qF=`#ifdef DIFFUSE_IBL
vec3 sampleDiffuseEnvironment(vec3 cubeDir)
{
#ifdef CUSTOM_SPHERICAL_HARMONICS
return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients);
#else
return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients);
#endif
}
#endif
#ifdef SPECULAR_IBL
vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness)
{
#ifdef CUSTOM_SPECULAR_IBL
float lod = roughness * model_specularEnvironmentMapsMaximumLOD;
return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb;
#else
float lod = roughness * czm_specularEnvironmentMapsMaximumLOD;
return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb;
#endif
}
vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)
{
// see https://bruop.github.io/ibl/ at Single Scattering Results
// Roughness dependent fresnel, from Fdez-Aguera
vec3 f90 = max(vec3(1.0 - roughness), f0);
vec3 F = fresnelSchlick2(f0, f90, NdotV);
vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness);
return specularSample * (F * brdfLut.x + brdfLut.y);
}
#endif
#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
/**
* Compute the light contributions from environment maps and spherical harmonic coefficients.
* See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation
* of the single- and multi-scattering terms.
*
* @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position.
* @param {vec3} normalEC The surface normal in eye coordinates.
* @param {czm_modelMaterial} The material properties.
* @return {vec3} The computed HDR color.
*/
vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) {
vec3 f0 = material.specular;
float roughness = material.roughness;
float specularWeight = 1.0;
#ifdef USE_SPECULAR
specularWeight = material.specularWeight;
#endif
float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);
// see https://bruop.github.io/ibl/ at Single Scattering Results
// Roughness dependent fresnel, from Fdez-Aguera
vec3 f90 = max(vec3(1.0 - roughness), f0);
vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV);
vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y);
#ifdef DIFFUSE_IBL
vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC);
vec3 irradiance = sampleDiffuseEnvironment(normalMC);
vec3 averageFresnel = f0 + (1.0 - f0) / 21.0;
float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y);
vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems);
vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse;
vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x;
#else
vec3 diffuseContribution = vec3(0.0);
#endif
#ifdef USE_ANISOTROPY
// Bend normal to account for anisotropic distortion of specular reflection
vec3 anisotropyDirection = material.anisotropicB;
vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC);
vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection);
float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness);
float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor;
vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4));
vec3 reflectEC = reflect(-viewDirectionEC, bentNormal);
#else
vec3 reflectEC = reflect(-viewDirectionEC, normalEC);
#endif
#ifdef SPECULAR_IBL
vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC);
vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness);
vec3 specularContribution = radiance * FssEss * model_iblFactor.y;
#else
vec3 specularContribution = vec3(0.0);
#endif
return diffuseContribution + specularContribution;
}
#endif
`;var Cre={name:"ImageBasedLightingPipelineStage"},K4e=new U;Cre.process=function(e,t,n){var u;let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=(u=i.sphericalHarmonicCoefficients)!=null?u:o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),jh.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(qF);let c={model_iblFactor:function(){return U.multiplyByScalar(i.imageBasedLightingFactor,(o==null?void 0:o.intensity)||1,K4e)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=At(c,e.uniformMap)};var YF=Cre;var $4e=P.EPSILON16;function gW(e){e=y(e,y.EMPTY_OBJECT);let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(gW.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=P.clamp(e,this.minimumValue,this.maximumValue),P.equalsEpsilon(this._currentValue,e,$4e)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var Z4e=new d,_W=new Z;gW.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=Z4e,o;switch(t){case Uc.XROTATE:o=Z.fromRotationX(P.toRadians(n),_W),e=F.multiplyByMatrix3(e,o,e);break;case Uc.YROTATE:o=Z.fromRotationY(P.toRadians(n),_W),e=F.multiplyByMatrix3(e,o,e);break;case Uc.ZROTATE:o=Z.fromRotationZ(P.toRadians(n),_W),e=F.multiplyByMatrix3(e,o,e);break;case Uc.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=F.multiplyByTranslation(e,i,e);break;case Uc.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=F.multiplyByTranslation(e,i,e);break;case Uc.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=F.multiplyByTranslation(e,i,e);break;case Uc.XSCALE:i.x=n,i.y=1,i.z=1,e=F.multiplyByScale(e,i,e);break;case Uc.YSCALE:i.x=1,i.y=n,i.z=1,e=F.multiplyByScale(e,i,e);break;case Uc.ZSCALE:i.x=1,i.y=1,i.z=n,e=F.multiplyByScale(e,i,e);break;case Uc.UNIFORMSCALE:e=F.multiplyByUniformScale(e,n,e);break;default:break}return e};var XF=gW;function KF(e){e=y(e,y.EMPTY_OBJECT);let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Q4e(this)}Object.defineProperties(KF.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Q4e(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new XF({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}KF.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var J4e=new F,eHe=new F;KF.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=F.clone(F.IDENTITY,J4e),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=F.multiplyTransformation(s.originalTransform,e,eHe);s.transform=a}};var $F=KF;var ZF=`void modelColorStage(inout czm_modelMaterial material)
{
material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend);
float highlight = ceil(model_colorBlend);
material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight);
material.alpha *= model_color.a;
}
`;var $C={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};$C.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(ZF);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=ve.TRANSLUCENT),i.addUniform("vec4",$C.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[$C.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",$C.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[$C.COLOR_BLEND_UNIFORM_NAME]=function(){return Vc.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=At(o,e.uniformMap)};var Ix=$C;var QF=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE
vec4 getClippingPlane(
highp sampler2D packedClippingPlanes,
int clippingPlaneNumber,
mat4 transform
) {
int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH;
int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH);
float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH);
float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT);
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
float v = (float(pixY) + 0.5) * pixelHeight;
vec4 plane = texture(packedClippingPlanes, vec2(u, v));
return czm_transformPlane(plane, transform);
}
#else
// Handle uint8 clipping texture instead
vec4 getClippingPlane(
highp sampler2D packedClippingPlanes,
int clippingPlaneNumber,
mat4 transform
) {
int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each
int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH;
int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH);
float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH);
float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT);
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
float v = (float(pixY) + 0.5) * pixelHeight;
vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0;
vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w);
vec4 plane;
plane.xyz = czm_octDecode(oct, 65535.0);
plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v)));
return czm_transformPlane(plane, transform);
}
#endif
float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) {
vec4 position = czm_windowToEyeCoordinates(fragCoord);
vec3 clipNormal = vec3(0.0);
vec3 clipPosition = vec3(0.0);
float pixelWidth = czm_metersPerPixel(position);
#ifdef UNION_CLIPPING_REGIONS
float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below.
#else
float clipAmount = 0.0;
bool clipped = true;
#endif
for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) {
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
clipNormal = clippingPlane.xyz;
clipPosition = -clippingPlane.w * clipNormal;
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
#ifdef UNION_CLIPPING_REGIONS
clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount));
if (amount <= 0.0) {
discard;
}
#else
clipAmount = max(amount, clipAmount);
clipped = clipped && (amount <= 0.0);
#endif
}
#ifndef UNION_CLIPPING_REGIONS
if (clipped) {
discard;
}
#endif
return clipAmount;
}
void modelClippingPlanesStage(inout vec4 color)
{
float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix);
vec4 clippingPlanesEdgeColor = vec4(1.0);
clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb;
float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a;
if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) {
color = clippingPlanesEdgeColor;
}
}
`;var Are={name:"ModelClippingPlanesPipelineStage"},tHe=new U;Are.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Es.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Es.getTextureResolution(i,o,tHe);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(QF);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=z.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=At(a,e.uniformMap)};var JF=Are;var e2=`void modelClippingPolygonsStage(ProcessedAttributes attributes)
{
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC);
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
vec2 minDistance = vec2(czm_infinity);
v_regionIndex = -1;
v_clippingPosition = vec2(czm_infinity);
for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) {
vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex);
vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz;
vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0));
vec2 distance = abs(rectUv - clamped) * extents.wz;
if (minDistance.x > distance.x || minDistance.y > distance.y) {
minDistance = distance;
v_clippingPosition = rectUv;
}
float threshold = 0.01;
if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) {
v_regionIndex = regionIndex;
}
}
}
`;var t2=`void modelClippingPolygonsStage()
{
vec2 clippingPosition = v_clippingPosition;
int regionIndex = v_regionIndex;
czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex);
}
`;var Ere={name:"ModelClippingPolygonsPipelineStage"};Ere.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(e2),o.addFragmentLines(t2);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=At(r,e.uniformMap)};var n2=Ere;function Sre(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(Sre.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var i2=Sre;var o2=`mat4 getInstancingTransform()
{
mat4 instancingTransform;
#ifdef HAS_INSTANCE_MATRICES
instancingTransform = mat4(
a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1
a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2
a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3
a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4
);
#else
vec3 translation = vec3(0.0, 0.0, 0.0);
vec3 scale = vec3(1.0, 1.0, 1.0);
#ifdef HAS_INSTANCE_TRANSLATION
translation = a_instanceTranslation;
#endif
#ifdef HAS_INSTANCE_SCALE
scale = a_instanceScale;
#endif
instancingTransform = mat4(
scale.x, 0.0, 0.0, 0.0,
0.0, scale.y, 0.0, 0.0,
0.0, 0.0, scale.z, 0.0,
translation.x, translation.y, translation.z, 1.0
);
#endif
return instancingTransform;
}
#ifdef USE_2D_INSTANCING
mat4 getInstancingTransform2D()
{
mat4 instancingTransform2D;
#ifdef HAS_INSTANCE_MATRICES
instancingTransform2D = mat4(
a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1
a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2
a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3
a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4
);
#else
vec3 translation2D = vec3(0.0, 0.0, 0.0);
vec3 scale = vec3(1.0, 1.0, 1.0);
#ifdef HAS_INSTANCE_TRANSLATION
translation2D = a_instanceTranslation2D;
#endif
#ifdef HAS_INSTANCE_SCALE
scale = a_instanceScale;
#endif
instancingTransform2D = mat4(
scale.x, 0.0, 0.0, 0.0,
0.0, scale.y, 0.0, 0.0,
0.0, 0.0, scale.z, 0.0,
translation2D.x, translation2D.y, translation2D.z, 1.0
);
#endif
return instancingTransform2D;
}
#endif
`;var r2=`void instancingStage(inout ProcessedAttributes attributes)
{
vec3 positionMC = attributes.positionMC;
mat4 instancingTransform = getInstancingTransform();
attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz;
#ifdef HAS_NORMALS
vec3 normalMC = attributes.normalMC;
attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz;
#endif
#ifdef USE_2D_INSTANCING
mat4 instancingTransform2D = getInstancingTransform2D();
attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz;
#endif
}
`;var s2=`void legacyInstancingStage(
inout ProcessedAttributes attributes,
out mat4 instanceModelView,
out mat3 instanceModelViewInverseTranspose)
{
vec3 positionMC = attributes.positionMC;
mat4 instancingTransform = getInstancingTransform();
mat4 instanceModel = instancingTransform * u_instance_nodeTransform;
instanceModelView = u_instance_modifiedModelView;
instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel);
attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz;
#ifdef USE_2D_INSTANCING
mat4 instancingTransform2D = getInstancingTransform2D();
attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz;
#endif
}
`;var a2=new F,nHe=new F,iHe=new F,wre={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Rre,_transformsToTypedArray:xW};wre.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(o2);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ne.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];yHe(e,n,i,h,u,f),THe(e,n,i,h);let p={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),p.u_instance_modifiedModelView=function(){let g=F.multiplyTransformation(s.modelMatrix,a.components.transform,a2);return u?F.multiplyTransformation(n.context.uniformState.view3D,g,a2):(n.mode!==ne.SCENE3D&&(g=Mt.basisTo2D(n.mapProjection,g,a2)),F.multiplyTransformation(n.context.uniformState.view,g,a2))},p.u_instance_nodeTransform=function(){return F.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,nHe)},r.addVertexLines(s2)):r.addVertexLines(r2),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=F.fromTranslation(c.instancingReferencePoint2D,new F);p.u_modelView2D=function(){return F.multiplyTransformation(g.uniformState.view,m,iHe)}}e.uniformMap=At(p,e.uniformMap),e.instanceCount=o,e.attributes.push.apply(e.attributes,h)};var Hw=new F,oHe=new d;function rHe(e,t,n,i,o){let r=F.multiplyTransformation(t,e,Hw);return r=F.multiplyTransformation(r,n,Hw),o=Mt.basisTo2D(i.mapProjection,r,o),o}function sHe(e,t,n,i,o){let r=F.fromTranslation(e,Hw),s=F.multiplyTransformation(t,r,Hw);s=F.multiplyTransformation(s,n,Hw);let a=F.getTranslation(s,oHe);return o=Wi.computeActualEllipsoidPosition(i,a,o),o}function Dre(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=F.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=F.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=F.clone(o.computedModelMatrix,t),t=F.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=F.clone(F.IDENTITY,n))}var Ire=new F,Pre=new F,aHe=new F,cHe=new d;function lHe(e,t,n,i){let o=Ire,r=Pre;Dre(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=rHe(f,o,r,n,aHe),p=F.getTranslation(h,cHe),g=d.subtract(p,a,p);i[u]=F.setTranslation(h,g,i[u])}return i}function uHe(e,t,n,i){let o=Ire,r=Pre;Dre(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=sHe(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var fHe=new d,dHe=new d;function Ore(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=F.multiplyByPoint(i,n.instancingTranslationMin,fHe),r=Wi.computeActualEllipsoidPosition(t,o,o),s=F.multiplyByPoint(i,n.instancingTranslationMax,dHe),a=Wi.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function xW(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function hHe(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var mHe=new d,pHe=new Le,_He=new d;function Rre(e,t,n){let i=new Array(t),o=Kt.getAttributeBySemantic(e,as.TRANSLATION),r=Kt.getAttributeBySemantic(e,as.ROTATION),s=Kt.getAttributeBySemantic(e,as.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),p=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=Bn.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let b=0;b<t;b++){let T=new d(p[b*3],p[b*3+1],p[b*3+2],mHe);d.maximumByComponent(a,T,a),d.minimumByComponent(c,T,c);let C=new Le(g[b*4],g[b*4+1],g[b*4+2],f?g[b*4+3]:1,pHe),A=new d(m[b*3],m[b*3+1],m[b*3+2],_He),E=F.fromTranslationQuaternionRotationScale(T,C,A,new F);i[b]=E}let x=n.runtimeNode;return x.instancingTranslationMin=c,x.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function gHe(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function bW(e,t){let n=Tt.createVertexBuffer({context:t.context,typedArray:e,usage:ke.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function yHe(e,t,n,i,o,r){let s=Kt.getAttributeBySemantic(n,as.ROTATION);l(s)?xHe(e,n,i,t,o,r):bHe(e,n,i,t,o)}function xHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,p=u.instancingTransformsBuffer;if(!l(p)){h=Rre(t,a,e);let b=xW(h);p=bW(b,i),c._modelResources.push(p),r&&(u.transformsTypedArray=b),u.instancingTransformsBuffer=p}if(vre(e,p,n,f),!o)return;let g=He(i);g.mode=ne.COLUMBUS_VIEW,Ore(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let b=lHe(h,e,g,h),T=xW(b);m=bW(T,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}vre(e,m,n,"Transform2D")}function bHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Kt.getAttributeBySemantic(t,as.TRANSLATION),u=Kt.getAttributeBySemantic(t,as.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),yW(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=gHe(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),yW(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=He(i);g.mode=ne.COLUMBUS_VIEW,Ore(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let C=uHe(f,e,g,f),A=hHe(C);r&&(a.transformsTypedArray=A),m=bW(A,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;yW(e,m,0,void 0,n,"Translation2D")}function vre(e,t,n,i){let r=X.getSizeInBytes(X.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:X.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:X.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:X.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),n.push.apply(n,a)}function yW(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:X.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function THe(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===as.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:on.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var c2=wre;var TW={};TW.name="ModelMatrixUpdateStage";TW.update=function(e,t,n){let i=n.mode!==ne.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;Mre(e,t,o,e.transformToRoot),e._transformDirty=!1}};function CHe(e,t,n){e.modelMatrix=F.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Kt.getCullFace(e.modelMatrix,e.primitiveType)}function Mre(e,t,n,i){let o;i=F.multiplyTransformation(i,e.transform,new F),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];CHe(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=F.clone(i,a._transformToRoot),Mre(a,t,n,i),a._transformDirty=!1}}var l2=TW;var Lre={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:Nre,_countGeneratedBuffers:Fre};Lre.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;Nre(i,o),Fre(i,r)};function Nre(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function Fre(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var u2=Lre;function ZC(e){e=y(e,y.EMPTY_OBJECT);let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=F.clone(n,this._originalTransform),this._transform=F.clone(n,this._transform),this._transformToRoot=F.clone(i,this._transformToRoot),this._computedTransform=new F,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,AHe(this)}Object.defineProperties(ZC.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=F.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),CW(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),CW(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),CW(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function AHe(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=F.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new ox(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function CW(e,t){e._transformDirty=!0,e._transform=F.fromTranslationRotationScale(t,e._transform)}ZC.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};ZC.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(c2),t.push(u2),n.push(l2)};ZC.prototype.updateComputedTransform=function(){this._computedTransform=F.multiply(this._transformToRoot,this._transform,this._computedTransform)};ZC.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new F);let r=F.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=F.inverseTransformation(r,t[o]);t[o]=F.multiplyTransformation(s,n[o],t[o])}};var f2=ZC;var Bre={name:"AlphaPipelineStage"};Bre.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=y(i.pass,o.opaquePass);let r=e.renderStateOptions;i.pass===ve.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=fn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var d2=Bre;var kre={name:"BatchTexturePipelineStage"};kre.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return y(c.batchTexture,c.defaultTexture)},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=At(o,e.uniformMap)};var h2=kre;var Vre={name:"ClassificationPipelineStage"};Vre.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||EHe(t,o)};function EHe(e,t){let n=Kt.getAttributeBySemantic(e,pt.POSITION);if(!l(n))throw new se("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Kt.getAttributeBySemantic(e,pt.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,p=c[h],g=0;for(let x=1;x<s;x++){let b=r?i[x]:x,T=c[b];if(T!==p){let C=x-g,A=x;u.push(C),f.push(A),g=A,p=T}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var m2=Vre;var p2=`void filterByPassType(inout vec3 positionMC, vec4 featureColor)
{
bool styleTranslucent = (featureColor.a != 1.0);
// Only render translucent features in the translucent pass (if the style or the original command has translucency).
if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent)
{
// If the model has a translucent silhouette, it needs to render during the silhouette color command,
// (i.e. the command where model_silhouettePass = true), even if the model isn't translucent.
#ifdef HAS_SILHOUETTE
positionMC *= float(model_silhouettePass);
#else
positionMC *= 0.0;
#endif
}
// If the current pass is not the translucent pass and the style is not translucent, don't render the feature.
else if (czm_pass != czm_passTranslucent && styleTranslucent)
{
positionMC *= 0.0;
}
}
void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature)
{
float show = ceil(feature.color.a);
positionMC *= show;
#if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION)
filterByPassType(positionMC, feature.color);
#endif
}
`;var _2=`void filterByPassType(vec4 featureColor)
{
bool styleTranslucent = (featureColor.a != 1.0);
// Only render translucent features in the translucent pass (if the style or the original command has translucency).
if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent)
{
// If the model has a translucent silhouette, it needs to render during the silhouette color command,
// (i.e. the command where model_silhouettePass = true), even if the model isn't translucent.
#ifdef HAS_SILHOUETTE
if(!model_silhouettePass) {
discard;
}
#else
discard;
#endif
}
// If the current pass is not the translucent pass and the style is not translucent, don't render the feature.
else if (czm_pass != czm_passTranslucent && styleTranslucent)
{
discard;
}
}
void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature)
{
vec4 featureColor = feature.color;
if (featureColor.a == 0.0)
{
discard;
}
// If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader.
// So, we only apply in in the fragment shader if the feature ID texture is used.
#if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION)
filterByPassType(featureColor);
#endif
featureColor = czm_gammaCorrect(featureColor);
// Classification models compute the diffuse differently.
#ifdef HAS_CLASSIFICATION
material.diffuse = featureColor.rgb * featureColor.a;
#else
float highlight = ceil(model_colorBlend);
material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight);
#endif
material.alpha *= featureColor.a;
}
`;var Ure={name:"CPUStylingPipelineStage"};Ure.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(p2),o.addFragmentLines(_2),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",Ix.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[Ix.COLOR_BLEND_UNIFORM_NAME]=function(){return Vc.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===ve.TRANSLUCENT}};var g2=Ure;var zre={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};zre.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var Wg=Object.freeze(zre);var y2=`void customShaderStage(
inout czm_modelVertexOutput vsOutput,
inout ProcessedAttributes attributes,
FeatureIds featureIds,
Metadata metadata,
MetadataClass metadataClass,
MetadataStatistics metadataStatistics
) {
// VertexInput and initializeInputStruct() are dynamically generated in JS,
// see CustomShaderPipelineStage.js
VertexInput vsInput;
initializeInputStruct(vsInput, attributes);
vsInput.featureIds = featureIds;
vsInput.metadata = metadata;
vsInput.metadataClass = metadataClass;
vsInput.metadataStatistics = metadataStatistics;
vertexMain(vsInput, vsOutput);
attributes.positionMC = vsOutput.positionMC;
}
`;var x2=`void customShaderStage(
inout czm_modelMaterial material,
ProcessedAttributes attributes,
FeatureIds featureIds,
Metadata metadata,
MetadataClass metadataClass,
MetadataStatistics metadataStatistics
) {
// FragmentInput and initializeInputStruct() are dynamically generated in JS,
// see CustomShaderPipelineStage.js
FragmentInput fsInput;
initializeInputStruct(fsInput, attributes);
fsInput.featureIds = featureIds;
fsInput.metadata = metadata;
fsInput.metadataClass = metadataClass;
fsInput.metadataStatistics = metadataStatistics;
fragmentMain(fsInput, material);
}
`;var b2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) {
initializeFeatureIds(featureIds, attributes);
initializeFeatureIdAliases(featureIds);
}
`;var T2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes)
{
initializeFeatureIds(featureIds, attributes);
initializeFeatureIdAliases(featureIds);
setFeatureIdVaryings();
}
`;var Fi={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};Fi.process=function(e,t,n){let i=e.shaderBuilder;SHe(i);let o=e.runtimeNode.node.instances;l(o)&&vHe(e,o,n),wHe(e,t,n),i.addVertexLines(T2),i.addFragmentLines(b2)};function SHe(e){e.addStruct(Fi.STRUCT_ID_FEATURE_IDS_VS,Fi.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(Fi.STRUCT_ID_FEATURE_IDS_FS,Fi.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,Fi.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,Fi.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Fi.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,Fi.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(Fi.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,Fi.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(Fi.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,Fi.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function vHe(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof xn.FeatureIdAttribute?DHe(e,s,a):Hre(e,s,a,o,1,n);let c=s.label;l(c)&&Gre(e,a,c,pe.BOTH)}}function wHe(e,t,n){let i=t.featureIds,r=Kt.getAttributeBySemantic(t,pt.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof xn.FeatureIdAttribute?IHe(e,a,c):a instanceof xn.FeatureIdImplicitRange?Hre(e,a,c,r,void 0,n):(PHe(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&Gre(e,c,f,u)}}function DHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Fi.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Fi.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(Fi.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function IHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Fi.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Fi.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function Hre(e,t,n,i,o,r){OHe(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(Fi.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(Fi.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(Fi.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function PHe(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return y(a.texture,o.context.defaultTexture)};let c=a.channels,u=e.shaderBuilder;u.addStructField(Fi.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,p=h,g=a.transform;if(l(g)&&!Z.equals(g,Z.IDENTITY)){let b=`${r}Transform`;u.addUniform("mat3",b,pe.FRAGMENT),s[b]=function(){return g},p=`vec2(${b} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${p}).${c}`,x=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[x])}function Gre(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(Fi.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(Fi.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(Fi.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function OHe(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=RHe(t,n);s=Tt.createVertexBuffer({context:o.context,typedArray:u,usage:ke.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:X.FLOAT,strideInBytes:X.getSizeInBytes(X.FLOAT),offsetInBytes:0};e.attributes.push(c)}function RHe(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var Px=Fi;var C2=`void metadataStage(
out Metadata metadata,
out MetadataClass metadataClass,
out MetadataStatistics metadataStatistics,
ProcessedAttributes attributes
)
{
initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
}
`;var A2=`void metadataStage(
out Metadata metadata,
out MetadataClass metadataClass,
out MetadataStatistics metadataStatistics,
ProcessedAttributes attributes
)
{
initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
setMetadataVaryings();
}
`;var Ci={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Ci.process=function(e,t,n){var h;let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=(h=s==null?void 0:s.tileset.metadataExtension)==null?void 0:h.statistics,c=MHe(r.propertyAttributes,t,a),u=NHe(r.propertyTextures,a),f=c.concat(u);BHe(i,f),UHe(i),i.addVertexLines(A2),i.addFragmentLines(C2);for(let p=0;p<c.length;p++){let g=c[p];zHe(e,g)}for(let p=0;p<u.length;p++){let g=u[p];GHe(e,g)}};function MHe(e,t,n){return l(e)?e.flatMap(i=>LHe(i,t,n)):[]}function LHe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Kt,s=e.class.id,a=n==null?void 0:n.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,p]=c[f],g=i(t,p.attribute),{glslType:m,variableName:x}=o(g);u[f]={metadataVariable:r(h),property:p,type:p.classProperty.type,glslType:m,variableName:x,propertyStatistics:a==null?void 0:a.properties[h],shaderDestination:pe.BOTH}}return u}function NHe(e,t){return l(e)?e.flatMap(n=>FHe(n,t)):[]}function FHe(e,t){let{sanitizeGlslIdentifier:n}=Kt,i=e.class.id,o=t==null?void 0:t.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o==null?void 0:o.properties[c],shaderDestination:pe.FRAGMENT}}return s}function BHe(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==lt.ENUM&&i.add(u)}let o=Ci.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Ci.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],p=u[f].type==="float"?VHe(c):c;e.addStructField(a,p,h)}}}var kHe={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function VHe(e){let t=kHe[e];return l(t)?t:e}function UHe(e){e.addStruct(Ci.STRUCT_ID_METADATA_VS,Ci.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Ci.STRUCT_ID_METADATA_FS,Ci.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Ci.STRUCT_ID_METADATA_CLASS_VS,Ci.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Ci.STRUCT_ID_METADATA_CLASS_FS,Ci.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Ci.STRUCT_ID_METADATA_STATISTICS_VS,Ci.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Ci.STRUCT_ID_METADATA_STATISTICS_FS,Ci.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Ci.FUNCTION_ID_INITIALIZE_METADATA_VS,Ci.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Ci.FUNCTION_ID_INITIALIZE_METADATA_FS,Ci.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Ci.FUNCTION_ID_SET_METADATA_VARYINGS,Ci.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function zHe(e,t){HHe(e,t),Wre(e.shaderBuilder,t),jre(e.shaderBuilder,t)}function HHe(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=Yre({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Ci.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Ci.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function GHe(e,t){WHe(e,t),Wre(e.shaderBuilder,t),jre(e.shaderBuilder,t)}function WHe(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,p=`u_propertyTexture_${u}`;i.hasOwnProperty(p)||(n.addUniform("sampler2D",p,pe.FRAGMENT),i[p]=()=>f),n.addStructField(Ci.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!Z.equals(h,Z.IDENTITY)){let A=`${p}Transform`;n.addUniform("mat3",A,pe.FRAGMENT),i[A]=function(){return h},m=`vec2(${A} * vec3(${g}, 1.0))`}let x=`texture(${p}, ${m}).${c}`,b=s.unpackInShader(x),T=Yre({valueExpression:b,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),C=`metadata.${o} = ${T};`;n.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_FS,[C])}function Wre(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=qre(Ci.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Ci.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Ci.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function jre(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===lt.ENUM)return;let s=Ci.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=qre(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Ci.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Ci.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Ci.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function qre(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function Yre(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var Id=Ci;var jHe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},Ox=Object.freeze(jHe);var Xre=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],AW=1,Gw=8,Rx=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==AW)throw new Error(`Got v${o} data when expected v${AW}.`);let r=Xre[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=Xre.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,Gw,t),this.coords=new this.ArrayType(this.data,Gw+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(Gw+s+a+c),this.ids=new this.IndexArrayType(this.data,Gw,t),this.coords=new this.ArrayType(this.data,Gw+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(AW<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return SW(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,p=c.pop()||0;if(h-p<=a){for(let b=p;b<=h;b++){let T=s[2*b],C=s[2*b+1];T>=t&&T<=i&&C>=n&&C<=o&&u.push(r[b])}continue}let g=p+h>>1,m=s[2*g],x=s[2*g+1];m>=t&&m<=i&&x>=n&&x<=o&&u.push(r[g]),(f===0?t<=m:n<=x)&&(c.push(p),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=x)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,p=a.pop()||0;if(h-p<=s){for(let b=p;b<=h;b++)Kre(r[2*b],r[2*b+1],t,n)<=u&&c.push(o[b]);continue}let g=p+h>>1,m=r[2*g],x=r[2*g+1];Kre(m,x,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=x)&&(a.push(p),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=x)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function SW(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;$re(e,t,s,i,o,r),SW(e,t,n,i,s-1,1-r),SW(e,t,n,s+1,o,1-r)}function $re(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),p=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*p*(u-p)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*p/u+g)),x=Math.min(o,Math.floor(n+(u-f)*p/u+g));$re(e,t,n,m,x,r)}let s=t[2*n+r],a=i,c=o;for(Ww(e,t,i,n),t[2*o+r]>s&&Ww(e,t,i,o);a<c;){for(Ww(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?Ww(e,t,i,c):(c++,Ww(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function Ww(e,t,n,i){EW(e,n,i),EW(t,2*n,2*i),EW(t,2*n+1,2*i+1)}function EW(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Kre(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}var QC={},qHe={KDBush:Rx,addCache:function(e,t){return QC[e]=t,t},removeCache:function(e){delete QC[e]},getCache:function(e){return QC[e]},getCacheOrAdd:function(e){return QC[e]||(QC[e]={}),QC[e]}},jg=qHe;var cs={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:Ct};cs.process=function(e,t,n){let i=e.model.customShader;if(i&&cs.process_original(e,t,n,i),l(e.model._marsOptions)&&l(e.model._marsOptions.customShaders)){let o=jg.getCache(e.model._marsOptions.customShaders);for(let r in o)Object.prototype.hasOwnProperty.call(o,r)&&cs.process_original(e,t,n,o[r])}};cs.process_original=function(e,t,n,i){let{shaderBuilder:o,alphaOptions:r}=e,{lightingModel:s,translucencyMode:a}=i;l(s)&&(e.lightingOptions.lightingModel=s),a===Ox.TRANSLUCENT?r.pass=ve.TRANSLUCENT:a===Ox.OPAQUE&&(r.pass=void 0);let c=e8e(i,t);if(!c.customShaderEnabled)return;if(o8e(o,i,c),c.shouldComputePositionWC&&o.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(i.vertexShaderText)&&o.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(i.fragmentShaderText)){o.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let h=Wg.getDefineName(i.mode);o.addDefine(h,void 0,pe.FRAGMENT)}let u=i.uniforms;for(let h in u)if(u.hasOwnProperty(h)){let p=u[h];o.addUniform(p.type,h)}let f=i.varyings;for(let h in f)if(f.hasOwnProperty(h)){let p=f[h];o.addVarying(p,h)}e.uniformMap=At(e.uniformMap,i.uniformMap)};function YHe(e){let t={};for(let n=0;n<e.length;n++){let i=Kt.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var XHe={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},KHe={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function Zre(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=XHe[t],i=KHe[t];if(l(n))return{attributeField:[n,e],value:i}}function $He(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Qre(t,n,!1),o=Jre(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=Zre(u);if(!l(f))return cs._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function ZHe(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function QHe(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Qre(t,n,!0),o=Jre(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=Zre(f);if(!l(h))return cs._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=ZHe(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var JHe={positionWC:!0,positionEC:!0};function Qre(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function Jre(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||JHe.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function e8e(e,t){let n=YHe(t.attributes),i=$He(e,n),o=QHe(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function t8e(e,t){let n=cs.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,cs.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=cs.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,cs.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,cs.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,Px.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Id.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Id.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Id.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=cs.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,cs.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function n8e(e,t){let n=cs.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,cs.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=cs.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,cs.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,cs.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,Px.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Id.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Id.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Id.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=cs.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,cs.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var i8e=[];function o8e(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=i8e;i.enabled&&(t8e(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,y2),e.addVertexLines(r)),o.enabled&&(n8e(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,x2),e.addFragmentLines(r))}var E2=cs;var jw={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};jw.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(jw.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,jw.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===pt.POSITION,h=c.semantic===pt.TEXCOORD;if(r&&!f&&!h)continue;let p=Kt.getAttributeInfo(c);s8e(i,p),r8e(e,p)}};function r8e(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=ese(u,0),f=ese(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function ese(e,t){return e instanceof oe?e:new oe(e.x,e.y,e.z,t)}function s8e(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=a8e(n,i):o=c8e(n),e.addFunctionLines(jw.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function a8e(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function c8e(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var S2=jw;var v2=`void geometryStage(out ProcessedAttributes attributes)
{
attributes.positionMC = v_positionMC;
attributes.positionEC = v_positionEC;
#if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE)
attributes.positionWC = v_positionWC;
#endif
#ifdef HAS_NORMALS
// renormalize after interpolation
attributes.normalEC = normalize(v_normalEC);
#endif
#ifdef HAS_TANGENTS
attributes.tangentEC = normalize(v_tangentEC);
#endif
#ifdef HAS_BITANGENTS
attributes.bitangentEC = normalize(v_bitangentEC);
#endif
// Everything else is dynamically generated in GeometryPipelineStage
setDynamicVaryings(attributes);
}
`;var w2=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal)
{
vec4 computedPosition;
// Compute positions in different coordinate systems
vec3 positionMC = attributes.positionMC;
v_positionMC = positionMC;
v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz;
#if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING)
vec3 position2D = attributes.position2D;
vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz;
computedPosition = czm_projection * vec4(positionEC, 1.0);
#else
computedPosition = czm_projection * vec4(v_positionEC, 1.0);
#endif
// Sometimes the custom shader and/or style needs this
#if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS)
// Note that this is a 32-bit position which may result in jitter on small
// scales.
v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz;
#endif
#ifdef HAS_NORMALS
v_normalEC = normalize(normal * attributes.normalMC);
#endif
#ifdef HAS_TANGENTS
v_tangentEC = normalize(normal * attributes.tangentMC);
#endif
#ifdef HAS_BITANGENTS
v_bitangentEC = normalize(normal * attributes.bitangentMC);
#endif
// All other varyings need to be dynamically generated in
// GeometryPipelineStage
setDynamicVaryings(attributes);
return computedPosition;
}
`;var qw=`vec2 computeSt(float featureId)
{
float stepX = model_textureStep.x;
float centerX = model_textureStep.y;
#ifdef MULTILINE_BATCH_TEXTURE
float stepY = model_textureStep.z;
float centerY = model_textureStep.w;
float xId = mod(featureId, model_textureDimensions.x);
float yId = floor(featureId / model_textureDimensions.x);
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
#else
return vec2(centerX + (featureId * stepX), 0.5);
#endif
}
void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds)
{
int featureId = featureIds.SELECTED_FEATURE_ID;
if (featureId < model_featuresLength)
{
vec2 featureSt = computeSt(float(featureId));
feature.id = featureId;
feature.st = featureSt;
feature.color = texture(model_batchTexture, featureSt);
}
// Floating point comparisons can be unreliable in GLSL, so we
// increment the feature ID to make sure it's always greater
// then the model_featuresLength - a condition we check for in the
// pick ID, to avoid sampling the pick texture if the feature ID is
// greater than the number of features.
else
{
feature.id = model_featuresLength + 1;
feature.st = vec2(0.0);
feature.color = vec4(1.0);
}
#ifdef HAS_NULL_FEATURE_ID
if (featureId == model_nullFeatureId) {
feature.id = featureId;
feature.st = vec2(0.0);
feature.color = vec4(1.0);
}
#endif
}
`;var Yw={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};Yw.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=l8e(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),u8e(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(qw),i.addFragmentLines(qw)};function tse(e){return e instanceof xn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function nse(e){return e instanceof xn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function l8e(e,t,n){let i,o;return l(t.instances)&&(o=Kt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=y(o.label,o.positionalLabel),{featureIds:o,variableName:i,shaderDestination:nse(o),featureIdDefine:tse(o)}):(o=Kt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=y(o.label,o.positionalLabel),{featureIds:o,variableName:i,shaderDestination:nse(o),featureIdDefine:tse(o)})}function u8e(e){e.addStructField(Yw.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(Yw.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(Yw.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var Mx=Yw;var Hs={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};Hs.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(Mx.STRUCT_ID_SELECTED_FEATURE,Mx.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(Hs.FUNCTION_ID_INITIALIZE_ATTRIBUTES,Hs.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(Hs.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,Hs.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(Hs.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,Hs.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===yr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ne.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=on.getAttributeLocationCount(f.type),p=f.semantic===pt.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):p&&!a?g=0:g=e.attributeIndex++,f8e(e,f,g,h,r,s)}b8e(i,t.attributes),t.primitiveType===Ne.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(w2),i.addFragmentLines(v2)};function f8e(e,t,n,i,o,r){let s=e.shaderBuilder,a=Kt.getAttributeInfo(t),c=o&&!r;i>1?m8e(e,t,n,i):h8e(e,t,n,c),_8e(s,a,c),p8e(s,a),l(t.semantic)&&d8e(s,t),g8e(s,a,o),y8e(s,a,c),x8e(s,a)}function d8e(e,t){let{semantic:n,setIndex:i}=t;switch(n){case pt.NORMAL:e.addDefine("HAS_NORMALS");break;case pt.TANGENT:e.addDefine("HAS_TANGENTS");break;case pt.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case pt.TEXCOORD:case pt.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function h8e(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===pt.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===pt.POSITION,f=u?0:n,h=on.getNumberOfComponents(a),p={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(p),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:X.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function m8e(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=on.getNumberOfComponents(s)/i,f=X.getSizeInBytes(a),h=u*f,p=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,x={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:p,normalize:r};e.attributes.push(x)}}function p8e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function _8e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===pt.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function g8e(e,t,n){let i=Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function y8e(e,t,n){let i=Hs.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function x8e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=Hs.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=Hs.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function b8e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===pt.NORMAL?n=!0:r.semantic===pt.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(Hs.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var D2=Hs;var I2=`#ifdef USE_IBL_LIGHTING
vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material)
{
#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
// Environment maps were provided, use them for IBL
vec3 viewDirection = -normalize(position);
vec3 iblColor = textureIBL(viewDirection, normal, material);
return iblColor;
#endif
return vec3(0.0);
}
#endif
#ifdef USE_CLEARCOAT
vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material)
{
vec3 viewDirection = -normalize(position);
vec3 halfwayDirection = normalize(viewDirection + lightDirection);
vec3 normal = material.clearcoatNormal;
float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0);
// clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5.
vec3 f0 = vec3(0.04);
vec3 f90 = vec3(1.0);
// Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h).
// This is to make it energy conserving with a simple layering function.
float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0);
vec3 F = fresnelSchlick2(f0, f90, NdotV);
// compute specular reflection from direct lighting
float roughness = material.clearcoatRoughness;
float alphaRoughness = roughness * roughness;
float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness);
vec3 directReflection = F * directStrength * NdotL;
vec3 color = lightColorHdr * directReflection;
#ifdef SPECULAR_IBL
// Find the direction in which to sample the environment map
vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal));
vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness);
color += iblColor * material.occlusion;
#endif
float clearcoatFactor = material.clearcoatFactor;
vec3 clearcoatColor = color * clearcoatFactor;
// Dim base layer based on transmission loss through clearcoat
return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor;
}
#endif
#if defined(LIGHTING_PBR) && defined(HAS_NORMALS)
vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position)
{
#ifdef USE_CUSTOM_LIGHT_COLOR
vec3 lightColorHdr = model_lightColorHdr;
#else
vec3 lightColorHdr = czm_lightColorHdr;
#endif
vec3 viewDirection = -normalize(position);
vec3 normal = material.normalEC;
vec3 lightDirection = normalize(czm_lightDirectionEC);
vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material);
vec3 directColor = lightColorHdr * directLighting;
// Accumulate colors from base layer
vec3 color = directColor + material.emissive;
#ifdef USE_IBL_LIGHTING
color += computeIBL(position, normal, lightDirection, lightColorHdr, material);
#endif
#ifdef USE_CLEARCOAT
color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material);
#endif
return color;
}
#endif
/**
* Compute the material color under the current lighting conditions.
* All other material properties are passed through so further stages
* have access to them.
*
* @param {czm_modelMaterial} material The material properties from {@MaterialStageFS}
* @param {ProcessedAttributes} attributes
*/
void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes)
{
#ifdef LIGHTING_PBR
#ifdef HAS_NORMALS
vec3 color = computePbrLighting(material, attributes.positionEC);
#else
vec3 color = material.diffuse * material.occlusion + material.emissive;
#endif
// In HDR mode, the frame buffer is in linear color space. The
// post-processing stages (see PostProcessStageCollection) will handle
// tonemapping. However, if HDR is not enabled, we must tonemap else large
// values may be clamped to 1.0
#ifndef HDR
color = czm_pbrNeutralTonemapping(color);
#endif
#else // unlit
vec3 color = material.diffuse;
#endif
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
// The colors resulting from point cloud styles are adjusted differently.
color = czm_gammaCorrect(color);
#elif !defined(HDR)
// If HDR is not enabled, the frame buffer stores sRGB colors rather than
// linear colors so the linear value must be converted.
color = czm_linearToSrgb(color);
#endif
material.diffuse = color;
}
`;var T8e={UNLIT:0,PBR:1},Gp=Object.freeze(T8e);var ise={name:"LightingPipelineStage"};ise.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===Gp.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(I2)};var P2=ise;var O2=`// If the style color is white, it implies the feature has not been styled.
bool isDefaultStyleColor(vec3 color)
{
return all(greaterThan(color, vec3(1.0 - czm_epsilon3)));
}
vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)
{
vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend);
vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor;
return color;
}
vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)
{
return vec2(textureTransform * vec3(texCoord, 1.0));
}
#ifdef HAS_NORMAL_TEXTURE
vec2 getNormalTexCoords()
{
vec2 texCoord = TEXCOORD_NORMAL;
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM
texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0));
#endif
return texCoord;
}
#endif
#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE)
vec3 computeTangent(in vec3 position, in vec2 normalTexCoords)
{
vec2 tex_dx = dFdx(normalTexCoords);
vec2 tex_dy = dFdy(normalTexCoords);
float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y;
vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position);
return tangent / determinant;
}
#endif
#ifdef USE_ANISOTROPY
struct NormalInfo {
vec3 tangent;
vec3 bitangent;
vec3 normal;
vec3 geometryNormal;
};
NormalInfo getNormalInfo(ProcessedAttributes attributes)
{
vec3 geometryNormal = attributes.normalEC;
#ifdef HAS_NORMAL_TEXTURE
vec2 normalTexCoords = getNormalTexCoords();
#endif
#ifdef HAS_BITANGENTS
vec3 tangent = attributes.tangentEC;
vec3 bitangent = attributes.bitangentEC;
#else // Assume HAS_NORMAL_TEXTURE
vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords);
tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent));
vec3 bitangent = normalize(cross(geometryNormal, tangent));
#endif
#ifdef HAS_NORMAL_TEXTURE
mat3 tbn = mat3(tangent, bitangent, geometryNormal);
vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
normalSample = 2.0 * normalSample - 1.0;
#ifdef HAS_NORMAL_TEXTURE_SCALE
normalSample.xy *= u_normalTextureScale;
#endif
vec3 normal = normalize(tbn * normalSample);
#else
vec3 normal = geometryNormal;
#endif
#ifdef HAS_DOUBLE_SIDED_MATERIAL
if (czm_backFacing()) {
tangent *= -1.0;
bitangent *= -1.0;
normal *= -1.0;
geometryNormal *= -1.0;
}
#endif
NormalInfo normalInfo;
normalInfo.tangent = tangent;
normalInfo.bitangent = bitangent;
normalInfo.normal = normal;
normalInfo.geometryNormal = geometryNormal;
return normalInfo;
}
#endif
#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME)
vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
{
vec2 normalTexCoords = getNormalTexCoords();
// If HAS_BITANGENTS is set, then HAS_TANGENTS is also set
#ifdef HAS_BITANGENTS
vec3 t = attributes.tangentEC;
vec3 b = attributes.bitangentEC;
#else
vec3 t = computeTangent(attributes.positionEC, normalTexCoords);
t = normalize(t - geometryNormal * dot(geometryNormal, t));
vec3 b = normalize(cross(geometryNormal, t));
#endif
mat3 tbn = mat3(t, b, geometryNormal);
vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
normalSample = 2.0 * normalSample - 1.0;
#ifdef HAS_NORMAL_TEXTURE_SCALE
normalSample.xy *= u_normalTextureScale;
#endif
return normalize(tbn * normalSample);
}
#endif
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE
vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
{
vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL;
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM
normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0));
#endif
// If HAS_BITANGENTS is set, then HAS_TANGENTS is also set
#ifdef HAS_BITANGENTS
vec3 t = attributes.tangentEC;
vec3 b = attributes.bitangentEC;
#else
vec3 t = computeTangent(attributes.positionEC, normalTexCoords);
t = normalize(t - geometryNormal * dot(geometryNormal, t));
vec3 b = normalize(cross(geometryNormal, t));
#endif
mat3 tbn = mat3(t, b, geometryNormal);
vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb;
normalSample = 2.0 * normalSample - 1.0;
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE
normalSample.xy *= u_clearcoatNormalTextureScale;
#endif
return normalize(tbn * normalSample);
}
#endif
#ifdef HAS_NORMALS
vec3 computeNormal(ProcessedAttributes attributes)
{
// Geometry normal. This is already normalized
vec3 normal = attributes.normalEC;
#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME)
normal = getNormalFromTexture(attributes, normal);
#endif
#ifdef HAS_DOUBLE_SIDED_MATERIAL
if (czm_backFacing()) {
normal = -normal;
}
#endif
return normal;
}
#endif
#ifdef HAS_BASE_COLOR_TEXTURE
vec4 getBaseColorFromTexture()
{
vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);
#endif
vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));
#ifdef HAS_BASE_COLOR_FACTOR
baseColorWithAlpha *= u_baseColorFactor;
#endif
return baseColorWithAlpha;
}
#endif
#ifdef HAS_EMISSIVE_TEXTURE
vec3 getEmissiveFromTexture()
{
vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;
#ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM
emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);
#endif
vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);
#ifdef HAS_EMISSIVE_FACTOR
emissive *= u_emissiveFactor;
#endif
return emissive;
}
#endif
#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS)
void setSpecularGlossiness(inout czm_modelMaterial material)
{
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE
vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM
specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
#endif
vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));
vec3 specular = specularGlossiness.rgb;
float glossiness = specularGlossiness.a;
#ifdef HAS_LEGACY_SPECULAR_FACTOR
specular *= u_legacySpecularFactor;
#endif
#ifdef HAS_GLOSSINESS_FACTOR
glossiness *= u_glossinessFactor;
#endif
#else
#ifdef HAS_LEGACY_SPECULAR_FACTOR
vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0));
#else
vec3 specular = vec3(1.0);
#endif
#ifdef HAS_GLOSSINESS_FACTOR
float glossiness = clamp(u_glossinessFactor, 0.0, 1.0);
#else
float glossiness = 1.0;
#endif
#endif
#ifdef HAS_DIFFUSE_TEXTURE
vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;
#ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM
diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);
#endif
vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));
#ifdef HAS_DIFFUSE_FACTOR
diffuse *= u_diffuseFactor;
#endif
#elif defined(HAS_DIFFUSE_FACTOR)
vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0));
#else
vec4 diffuse = vec4(1.0);
#endif
material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular));
// the specular glossiness extension's alpha overrides anything set
// by the base material.
material.alpha = diffuse.a;
material.specular = specular;
// glossiness is the opposite of roughness, but easier for artists to use.
material.roughness = 1.0 - glossiness;
}
#elif defined(LIGHTING_PBR)
float setMetallicRoughness(inout czm_modelMaterial material)
{
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE
vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM
metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);
#endif
vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;
float metalness = clamp(metallicRoughness.b, 0.0, 1.0);
float roughness = clamp(metallicRoughness.g, 0.0, 1.0);
#ifdef HAS_METALLIC_FACTOR
metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0);
#endif
#ifdef HAS_ROUGHNESS_FACTOR
roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0);
#endif
#else
#ifdef HAS_METALLIC_FACTOR
float metalness = clamp(u_metallicFactor, 0.0, 1.0);
#else
float metalness = 1.0;
#endif
#ifdef HAS_ROUGHNESS_FACTOR
float roughness = clamp(u_roughnessFactor, 0.0, 1.0);
#else
float roughness = 1.0;
#endif
#endif
// dielectrics use f0 = 0.04, metals use albedo as f0
const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04);
vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness);
material.specular = f0;
// diffuse only applies to dielectrics.
material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness);
// This is perceptual roughness. The square of this value is used for direct lighting
material.roughness = roughness;
return metalness;
}
#ifdef USE_SPECULAR
void setSpecular(inout czm_modelMaterial material, in float metalness)
{
#ifdef HAS_SPECULAR_TEXTURE
vec2 specularTexCoords = TEXCOORD_SPECULAR;
#ifdef HAS_SPECULAR_TEXTURE_TRANSFORM
specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform);
#endif
float specularWeight = texture(u_specularTexture, specularTexCoords).a;
#ifdef HAS_SPECULAR_FACTOR
specularWeight *= u_specularFactor;
#endif
#else
#ifdef HAS_SPECULAR_FACTOR
float specularWeight = u_specularFactor;
#else
float specularWeight = 1.0;
#endif
#endif
#ifdef HAS_SPECULAR_COLOR_TEXTURE
vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;
#ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM
specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);
#endif
vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;
vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);
#ifdef HAS_SPECULAR_COLOR_FACTOR
specularColorFactor *= u_specularColorFactor;
#endif
#else
#ifdef HAS_SPECULAR_COLOR_FACTOR
vec3 specularColorFactor = u_specularColorFactor;
#else
vec3 specularColorFactor = vec3(1.0);
#endif
#endif
material.specularWeight = specularWeight;
vec3 f0 = material.specular;
vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0));
material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness);
}
#endif
#ifdef USE_ANISOTROPY
void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)
{
mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x);
float anisotropyStrength = u_anisotropy.z;
vec2 direction = vec2(1.0, 0.0);
#ifdef HAS_ANISOTROPY_TEXTURE
vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;
#ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM
anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);
#endif
vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;
direction = anisotropySample.rg * 2.0 - vec2(1.0);
anisotropyStrength *= anisotropySample.b;
#endif
direction = rotation * direction;
mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal);
vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0));
vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT);
material.anisotropicT = anisotropicT;
material.anisotropicB = anisotropicB;
material.anisotropyStrength = anisotropyStrength;
}
#endif
#ifdef USE_CLEARCOAT
void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes)
{
#ifdef HAS_CLEARCOAT_TEXTURE
vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;
#ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM
clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);
#endif
float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;
#ifdef HAS_CLEARCOAT_FACTOR
clearcoatFactor *= u_clearcoatFactor;
#endif
#else
#ifdef HAS_CLEARCOAT_FACTOR
float clearcoatFactor = u_clearcoatFactor;
#else
// PERFORMANCE_IDEA: this case should turn the whole extension off
float clearcoatFactor = 0.0;
#endif
#endif
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE
vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM
clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);
#endif
float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
clearcoatRoughness *= u_clearcoatRoughnessFactor;
#endif
#else
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
float clearcoatRoughness = u_clearcoatRoughnessFactor;
#else
float clearcoatRoughness = 0.0;
#endif
#endif
material.clearcoatFactor = clearcoatFactor;
// This is perceptual roughness. The square of this value is used for direct lighting
material.clearcoatRoughness = clearcoatRoughness;
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE
material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC);
#else
material.clearcoatNormal = attributes.normalEC;
#endif
}
#endif
#endif
void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature)
{
#ifdef USE_ANISOTROPY
NormalInfo normalInfo = getNormalInfo(attributes);
material.normalEC = normalInfo.normal;
#elif defined(HAS_NORMALS)
material.normalEC = computeNormal(attributes);
#endif
vec4 baseColorWithAlpha = vec4(1.0);
// Regardless of whether we use PBR, set a base color
#ifdef HAS_BASE_COLOR_TEXTURE
baseColorWithAlpha = getBaseColorFromTexture();
#elif defined(HAS_BASE_COLOR_FACTOR)
baseColorWithAlpha = u_baseColorFactor;
#endif
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
baseColorWithAlpha = v_pointCloudColor;
#elif defined(HAS_COLOR_0)
vec4 color = attributes.color_0;
// .pnts files store colors in the sRGB color space
#ifdef HAS_SRGB_COLOR
color = czm_srgbToLinear(color);
#endif
baseColorWithAlpha *= color;
#endif
#ifdef USE_CPU_STYLING
baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend);
#endif
material.baseColor = baseColorWithAlpha;
material.diffuse = baseColorWithAlpha.rgb;
material.alpha = baseColorWithAlpha.a;
#ifdef HAS_OCCLUSION_TEXTURE
vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;
#ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM
occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);
#endif
material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;
#endif
#ifdef HAS_EMISSIVE_TEXTURE
material.emissive = getEmissiveFromTexture();
#elif defined(HAS_EMISSIVE_FACTOR)
material.emissive = u_emissiveFactor;
#endif
#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS)
setSpecularGlossiness(material);
#elif defined(LIGHTING_PBR)
float metalness = setMetallicRoughness(material);
#ifdef USE_SPECULAR
setSpecular(material, metalness);
#endif
#ifdef USE_ANISOTROPY
setAnisotropy(material, normalInfo);
#endif
#ifdef USE_CLEARCOAT
setClearcoat(material, attributes);
#endif
#endif
}
`;var{Material:C8e,MetallicRoughness:vW,SpecularGlossiness:wW,Specular:ose,Clearcoat:rse}=xn,sse={name:"MaterialPipelineStage",_processTexture:Dl,_processTextureTransform:ase};sse.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;E8e(i,r,s,u,f,h,c),l(i.specularGlossiness)?S8e(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Kt.supportedExtensions.KHR_materials_specular&&v8e(i.specular,r,s,u,c),l(i.anisotropy)&&Kt.supportedExtensions.KHR_materials_anisotropy&&D8e(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Kt.supportedExtensions.KHR_materials_clearcoat&&I8e(i.clearcoat,r,s,u,c),P8e(i.metallicRoughness,r,s,u,c));let p=Kt.getAttributeBySemantic(t,pt.NORMAL),g=e.lightingOptions;i.unlit||!p||a?g.lightingModel=Gp.UNLIT:g.lightingModel=Gp.PBR;let m=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=m;let x=e.alphaOptions;i.alphaMode===Np.BLEND?x.pass=ve.TRANSLUCENT:i.alphaMode===Np.MASK&&(x.alphaCutoff=i.alphaCutoff),s.addFragmentLines(O2),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function ase(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function A8e(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function Dl(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return y(n.texture,r)};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!Z.equals(f,Z.IDENTITY)&&ase(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&A8e(e,t,n,i,o)}function E8e(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,C8e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&Dl(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&Dl(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&Dl(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function S8e(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&Dl(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!oe.equals(s,wW.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Dl(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,wW.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==wW.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function v8e(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&Dl(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==ose.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Dl(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,ose.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var w8e=new d;function D8e(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&Dl(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,w8e)}}function I8e(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==rse.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&Dl(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==rse.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&Dl(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&Dl(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function P8e(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&Dl(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!oe.equals(s,vW.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&Dl(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==vW.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==vW.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var R2=sse;var Hc={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};Hc.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(Hc.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(Hc.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(Hc.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(Hc.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(Hc.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(Hc.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${Hc.METADATA_PICKING_VALUE_TYPE} value = ${Hc.METADATA_PICKING_VALUE_TYPE}(${Hc.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${Hc.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${Hc.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${Hc.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${Hc.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var yf=Hc;var M2=`void morphTargetsStage(inout ProcessedAttributes attributes)
{
vec3 positionMC = attributes.positionMC;
attributes.positionMC = getMorphedPosition(positionMC);
#ifdef HAS_NORMALS
vec3 normalMC = attributes.normalMC;
attributes.normalMC = getMorphedNormal(normalMC);
#endif
#ifdef HAS_TANGENTS
vec3 tangentMC = attributes.tangentMC;
attributes.tangentMC = getMorphedTangent(tangentMC);
#endif
}`;var Pa={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};Pa.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),F8e(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],p=h.semantic;p!==pt.POSITION&&p!==pt.NORMAL&&p!==pt.TANGENT||(R8e(e,h,e.attributeIndex,a),e.attributeIndex++)}}B8e(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(M2);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=At(s,e.uniformMap)};var O8e={attributeString:void 0,functionId:void 0};function R8e(e,t,n,i){let o=e.shaderBuilder;M8e(e,t,n);let r=L8e(t,O8e);N8e(o,r,i)}function M8e(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:on.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function L8e(e,t){switch(e.semantic){case pt.POSITION:t.attributeString="Position",t.functionId=Pa.FUNCTION_ID_GET_MORPHED_POSITION;break;case pt.NORMAL:t.attributeString="Normal",t.functionId=Pa.FUNCTION_ID_GET_MORPHED_NORMAL;break;case pt.TANGENT:t.attributeString="Tangent",t.functionId=Pa.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function N8e(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function F8e(e){e.addFunction(Pa.FUNCTION_ID_GET_MORPHED_POSITION,Pa.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(Pa.FUNCTION_ID_GET_MORPHED_NORMAL,Pa.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(Pa.FUNCTION_ID_GET_MORPHED_TANGENT,Pa.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function B8e(e){e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(Pa.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var L2=Pa;var cse={name:"PickingPipelineStage"};cse.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)k8e(e,t,a,i);else if(l(a))V8e(e,i);else{let c=lse(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function lse(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(yr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function k8e(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Kt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Kt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return y(f.pickTexture,f.defaultTexture)},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function V8e(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let p=lse(e,h),g=t.createPickId(p);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=z.floatToByte(m.red),o[h*4+1]=z.floatToByte(m.green),o[h*4+2]=z.floatToByte(m.blue),o[h*4+3]=z.floatToByte(m.alpha)}r._pickIds=i;let a=Tt.createVertexBuffer({context:t,typedArray:o,usage:ke.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:X.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var N2=cse;var U8e={ADD:0,REPLACE:1},Ko=Object.freeze(U8e);var F2=`float getPointSizeFromAttenuation(vec3 positionEC) {
// Variables are packed into a single vector to minimize gl.uniformXXX() calls
float pointSize = model_pointCloudParameters.x;
float geometricError = model_pointCloudParameters.y;
float depthMultiplier = model_pointCloudParameters.z;
float depth = -positionEC.z;
return min((geometricError / depth) * depthMultiplier, pointSize);
}
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
float tiles3d_tileset_time = model_pointCloudParameters.w;
return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time));
}
#endif
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
float tiles3d_tileset_time = model_pointCloudParameters.w;
return getColorFromStyle(attributes, metadata, tiles3d_tileset_time);
}
#endif
#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE
float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
float tiles3d_tileset_time = model_pointCloudParameters.w;
return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time));
}
#elif defined(HAS_POINT_CLOUD_ATTENUATION)
float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
return getPointSizeFromAttenuation(v_positionEC);
}
#endif
#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING
float pointCloudBackFaceCullingStage() {
#if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL)
// This needs to be computed in eye coordinates so we can't use attributes.normalMC
return step(-v_normalEC.z, 0.0);
#else
return 1.0;
#endif
}
#endif`;var z8e=new oe,fse={name:"PointCloudStylingPipelineStage"};fse.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let x=j8e(a),b=q8e(r,x);Y8e(i,b);let C=X8e(b).indexOf("normalMC")>=0,A=Kt.getAttributeBySemantic(t,pt.NORMAL);if(C&&!A)throw new se("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),b.styleTranslucent&&(e.alphaOptions.pass=ve.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,p,g;yr.is3DTiles(o.type)&&(p=!0,h=o.content,g=h.tile.refine===Ko.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(F2);let m=e.uniformMap;m.model_pointCloudParameters=function(){let x=z8e,b=1;p&&(b=g?5:h.tileset.memoryAdjustedScreenSpaceError),x.x=y(f.maximumAttenuation,b),x.x*=n.pixelRatio;let T=H8e(e,t,f,h);x.y=T*f.geometricErrorScale;let C=n.context,A=n.camera.frustum,E;return n.mode===ne.SCENE2D||A instanceof an?E=Number.POSITIVE_INFINITY:E=C.drawingBufferHeight/n.camera.frustum.sseDenominator,x.z=E,p&&(x.w=h.tileset.timeSinceLoad),x}};var use=new d;function H8e(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Kt.getAttributeBySemantic(t,pt.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,use);a=F.multiplyByPointAsVector(s,a,use);let c=a.x*a.y*a.z;return P.cbrt(c/r)}var G8e={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},W8e={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function j8e(e){let t=He(W8e);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var DW="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function q8e(e,t){let n=G8e,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${DW})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${DW})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${DW})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function Y8e(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function IW(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function X8e(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&IW(t,o),l(n)&&IW(n,o),l(i)&&IW(i,o),o}var B2=fse;var k2=`void primitiveOutlineStage() {
v_outlineCoordinates = a_outlineCoordinates;
}
`;var V2=`void primitiveOutlineStage(inout czm_modelMaterial material) {
if (!model_showOutline) {
return;
}
float outlineX =
texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r;
float outlineY =
texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r;
float outlineZ =
texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r;
float outlineness = max(outlineX, max(outlineY, outlineZ));
material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness);
}
`;var dse={name:"PrimitiveOutlinePipelineStage"};dse.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:on.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=BC.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(k2),i.addFragmentLines(V2)};var U2=dse;var hse={name:"PrimitiveStatisticsPipelineStage",_countGeometry:mse,_count2DPositions:pse,_countMorphTargetAttributes:_se,_countMaterialTextures:gse,_countFeatureIdTextures:yse,_countBinaryMetadata:xse};hse.process=function(e,t,n){let i=e.model,o=i.statistics;mse(o,t),pse(o,e.runtimePrimitive),_se(o,t),gse(o,t.material),yse(o,t.featureIds),xse(o,i)};function mse(e,t){let n=l(t.indices)?t.indices.count:Kt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Ne.POINTS?e.pointsLength+=n:Ne.isTriangles(i)&&(e.trianglesLength+=K8e(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function K8e(e,t){switch(e){case Ne.TRIANGLES:return t/3;case Ne.TRIANGLE_STRIP:case Ne.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function pse(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function _se(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function gse(e,t){let n=$8e(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function $8e(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function yse(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof xn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function xse(e,t){let n=t.structuralMetadata;l(n)&&(Z8e(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function Z8e(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var z2=hse;var Q8e=new F,J8e=new F,bse={name:"SceneMode2DPipelineStage"};bse.process=function(e,t,n){let i=Kt.getAttributeBySemantic(t,pt.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=F.multiplyTransformation(s,a,Q8e),u=nGe(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let x=rGe(i,c,u,n);f.positionBuffer2D=x,r._modelResources.push(x),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let p=F.fromTranslation(u.center,new F),g=n.context,m={u_modelView2D:function(){return F.multiplyTransformation(g.uniformState.view,p,J8e)}};e.uniformMap=At(m,e.uniformMap)};var eGe=new d,tGe=new d;function nGe(e,t,n){let i=F.multiplyByPoint(t,e.positionMin,eGe),o=Wi.computeActualEllipsoidPosition(n,i,i),r=F.multiplyByPoint(t,e.positionMax,tGe),s=Wi.computeActualEllipsoidPosition(n,r,r);return ce.fromCornerPoints(o,s,new ce)}var Tse=new d;function iGe(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,Tse),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function oGe(e,t,n,i){let o;l(e.quantization)?o=iGe(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,Tse);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=F.multiplyByPoint(t,u,u),h=Wi.computeActualEllipsoidPosition(i,f,f),p=d.subtract(h,n,h);o[c]=p.x,o[c+1]=p.y,o[c+2]=p.z}return o}function rGe(e,t,n,i){let o=He(i);o.mode=ne.COLUMBUS_VIEW;let r=n.center,s=oGe(e,t,r,o),a=Tt.createVertexBuffer({context:i.context,typedArray:s,usage:ke.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var H2=bse;var G2=`void skinningStage(inout ProcessedAttributes attributes)
{
mat4 skinningMatrix = getSkinningMatrix();
mat3 skinningMatrixMat3 = mat3(skinningMatrix);
vec4 positionMC = vec4(attributes.positionMC, 1.0);
attributes.positionMC = vec3(skinningMatrix * positionMC);
#ifdef HAS_NORMALS
vec3 normalMC = attributes.normalMC;
attributes.normalMC = skinningMatrixMat3 * normalMC;
#endif
#ifdef HAS_TANGENTS
vec3 tangentMC = attributes.tangentMC;
attributes.tangentMC = skinningMatrixMat3 * tangentMC;
#endif
}`;var Lx={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};Lx.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),aGe(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(G2);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=At(r,e.uniformMap)};function sGe(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===pt.JOINTS||r.semantic===pt.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function aGe(e,t){e.addFunction(Lx.FUNCTION_ID_GET_SKINNING_MATRIX,Lx.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(Lx.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=sGe(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(Lx.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(Lx.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var W2=Lx;var j2=`void verticalExaggerationStage(
inout ProcessedAttributes attributes
) {
// Compute the distance from the camera to the local center of curvature.
vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0);
vec2 vertexAzimuth = normalize(vertexPositionENU.xy);
// Curvature = 1 / radius of curvature.
float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature);
float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight;
// Compute the approximate ellipsoid normal at the vertex position.
// Uses a circular approximation for the Earth curvature along the geodesic.
vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz;
vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC;
vec3 vertexNormal = normalize(centerToVertex);
// Estimate the (sine of the) angle between the camera direction and the vertex normal
float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC);
float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC);
float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance);
bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta;
// Approximate the change in height above the ellipsoid, from camera to vertex position.
float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal);
float smallAngleVersine = 0.5 * sinTheta * sinTheta;
float versine = isSmallAngle ? smallAngleVersine : exactVersine;
float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine;
float vertexHeight = czm_eyeHeight + dHeight;
// Transform the approximate vertex normal to model coordinates.
vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz;
vertexNormalMC = normalize(vertexNormalMC);
// Compute the exaggeration and apply it along the approximate vertex normal.
float stretch = u_verticalExaggerationAndRelativeHeight.x;
float shift = u_verticalExaggerationAndRelativeHeight.y;
float exaggeration = (vertexHeight - shift) * (stretch - 1.0);
attributes.positionMC += exaggeration * vertexNormalMC;
}
`;var Cse={name:"VerticalExaggerationPipelineStage"},cGe=new U;Cse.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(j2),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return U.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,cGe)}};var q2=Cse;var PW={};function lGe(e){let t=Be.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function uGe(e,t){let n=t.length,i=Be.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function fGe(e){let t=e-2,n=2+t*4,i=Be.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function dGe(e,t){let i=t.length-2,o=2+i*4,r=Be.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function hGe(e){let t=e-2,n=2+t*4,i=Be.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function mGe(e,t){let i=t.length-2,o=2+i*4,r=Be.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}PW.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Ne.TRIANGLES)return i?uGe(t,n):lGe(t);if(e===Ne.TRIANGLE_STRIP)return i?dGe(t,n):fGe(t);if(e===Ne.TRIANGLE_FAN)return i?mGe(t,n):hGe(t)};PW.getWireframeIndicesCount=function(e,t){return e===Ne.TRIANGLES?t*2:e===Ne.TRIANGLE_STRIP||e===Ne.TRIANGLE_FAN?2+(t-2)*4:t};var Xw=PW;var Ase={name:"WireframePipelineStage"};Ase.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=pGe(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Ne.LINES,e.count=Xw.getWireframeIndicesCount(a,c)};function pGe(e,t,n){let o=Kt.getAttributeBySemantic(e,pt.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Be.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=Xw.createWireframeIndices(a,o,s),u=Be.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Tt.createIndexBuffer({context:n.context,typedArray:c,usage:ke.STATIC_DRAW,indexDatatype:u})}var Y2=Ase;function Ese(e){e=y(e,y.EMPTY_OBJECT);let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Ese.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader;if(l(o._marsOptions)&&l(o._marsOptions.customShaders)){let M=jg.getCache(o._marsOptions.customShaders);for(let N in M)if(Object.prototype.hasOwnProperty.call(M,N)){r=M[N];break}}let s=o.style,a=e.context.webgl2,u=e.mode!==ne.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,p=l(i.skin),g=l(r),x=!(g&&l(r.fragmentShaderText))||r.mode!==Wg.REPLACE_MATERIAL,b=Kt.hasQuantizedAttributes(n.attributes),T=o.debugWireframe&&Ne.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),C=o.pointCloudShading,A=l(C)&&C.attenuation,E=l(C)&&C.backFaceCulling,v=n.primitiveType===Ne.POINTS&&(l(s)||A||E),D=o._enableShowOutline&&l(n.outlineCoordinates),R=_Ge(o,i,n),O=l(o.classificationType);u&&t.push(H2),t.push(D2),T&&t.push(Y2),O&&t.push(m2),h&&t.push(L2),p&&t.push(W2),v&&t.push(B2),b&&t.push(S2),x&&t.push(R2),t.push(Px),t.push(Id),t.push(yf),R.hasPropertyTable&&(t.push(Mx),t.push(h2),t.push(g2)),f&&t.push(q2),g&&t.push(E2),t.push(P2),o.allowPicking&&t.push(N2),D&&t.push(U2),t.push(d2),t.push(z2)};function _Ge(e,t,n){let i;return l(t.instances)&&(i=Kt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Kt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var X2=Ese;function OW(e){e=y(e,y.EMPTY_OBJECT),this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],gGe(this)}Object.defineProperties(OW.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function gGe(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],p=Sse(f,h,new F);a.push(p)}}function Sse(e,t,n){let i=F.multiplyTransformation(e.transformToRoot,e.transform,n);return n=F.multiplyTransformation(i,t,n),n}OW.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Sse(i,o,e[n])}};var K2=OW;function yGe(){this.pass=void 0,this.alphaCutoff=void 0}var $2=yGe;function RW(e){this.name=e,this.fields=[]}RW.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};RW.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var Z2=RW;function MW(e){this.signature=e,this.body=[]}MW.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};MW.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var Q2=MW;function Gc(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(Gc.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});Gc.prototype.addDefine=function(e,t,n){n=y(n,pe.BOTH);let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};Gc.prototype.addStruct=function(e,t,n){this._structs[e]=new Z2(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};Gc.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};Gc.prototype.addFunction=function(e,t,n){this._functions[e]=new Q2(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};Gc.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};Gc.prototype.addUniform=function(e,t,n){n=y(n,pe.BOTH);let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};Gc.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};Gc.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=bGe(e),i};Gc.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};Gc.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?t.push.apply(t,e):t.push(e)};Gc.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?t.push.apply(t,e):t.push(e)};Gc.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=xGe(this),i=TGe(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(`
`),r=new Ue({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(`
`),a=new Ue({defines:this._fragmentShaderParts.defineLines,sources:[s]});return Jt.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};Gc.prototype.clone=function(){return He(this,!0)};function xGe(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),t.push.apply(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),n.push.apply(n,a);return{vertexLines:t,fragmentLines:n}}function bGe(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function TGe(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),t.push.apply(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),n.push.apply(n,a);return{vertexLines:t,fragmentLines:n}}var JC=Gc;function CGe(e){this.shaderBuilder=new JC,this.model=e,this.uniformMap={},this.alphaOptions=new $2,this.renderStateOptions=Ve.getState(Ve.fromCache({depthTest:{enabled:!0,func:Dc.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1}var J2=CGe;var eB=`void silhouetteStage(inout vec4 color) {
if(model_silhouettePass) {
color = czm_gammaCorrect(model_silhouetteColor);
}
}`;var tB=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) {
#ifdef HAS_NORMALS
if(model_silhouettePass) {
vec3 normal = normalize(czm_normal3D * attributes.normalMC);
normal.x *= czm_projection[0][0];
normal.y *= czm_projection[1][1];
positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z;
}
#endif
}
`;var nB={name:"ModelSilhouettePipelineStage"};nB.silhouettesLength=0;nB.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++nB.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(tB),i.addFragmentLines(eB),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=At(o,e.uniformMap),e.hasSilhouette=!0};var iB=nB;var oB=`void modelSplitterStage()
{
// Don't split when rendering the shadow map, because it is rendered from
// the perspective of a totally different camera.
#ifndef SHADOW_MAP
if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
#endif
}
`;var rB={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};rB.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(oB);let o={};i.addUniform("float",rB.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[rB.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=At(o,e.uniformMap)};var sB=rB;function AGe(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=He(e.uniformMap),this.alphaOptions=He(e.alphaOptions),this.renderStateOptions=He(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0}var aB=AGe;function EGe(e){e=y(e,y.EMPTY_OBJECT),this.lightingModel=y(e.lightingModel,Gp.UNLIT)}var cB=EGe;function SGe(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=He(e.uniformMap),this.alphaOptions=He(e.alphaOptions),this.renderStateOptions=He(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Kt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Kt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=ce.fromCornerPoints(this.positionMin,this.positionMax,new ce),this.lightingOptions=new cB,this.pickId=void 0}var lB=SGe;function NW(e){e=y(e,y.EMPTY_OBJECT);let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==zn.CESIUM_3D_TILE,this._classifies3DTiles=o!==zn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],IGe(this)}function vGe(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:mt.KEEP,zFail:mt.DECREMENT_WRAP,zPass:mt.KEEP},backFunction:e,backOperation:{fail:mt.KEEP,zFail:mt.INCREMENT_WRAP,zPass:mt.KEEP},reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Dc.LESS_OR_EQUAL},depthMask:!1}}var wGe={stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:fn.PRE_MULTIPLIED_ALPHA_BLEND},DGe={stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},backFunction:Hn.NOT_EQUAL,backOperation:{fail:mt.ZERO,zFail:mt.ZERO,zPass:mt.ZERO},reference:0,mask:Ut.CLASSIFICATION_MASK},stencilMask:Ut.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},Dse=[];function IGe(e){let t=e._command,n=Dse;if(e._useDebugWireframe){t.pass=ve.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=Kw(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=ve.TERRAIN_CLASSIFICATION,s=LW(t,r),a=vse(t,r);n.length=0,n.push(s,a),e._commandListTerrain=Kw(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=wse(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=ve.CESIUM_3D_TILE_CLASSIFICATION,s=LW(t,r),a=vse(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=Kw(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=wse(e,n,e._commandList3DTilesPicking))}}function Kw(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let p=t[h],g=Qe.shallowClone(p);g.count=u,g.offset=f,n.push(g)}}return n}function LW(e,t){let n=Qe.shallowClone(e);n.cull=!1,n.pass=t;let i=t===ve.TERRAIN_CLASSIFICATION?Hn.ALWAYS:Hn.EQUAL,o=vGe(i);return n.renderState=Ve.fromCache(o),n}function vse(e,t){let n=Qe.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ve.fromCache(wGe),n}var PGe=[];function wse(e,t,n){let i=Ve.fromCache(DGe),o=t[0],r=t[1],s=Qe.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=Qe.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=PGe;return c.length=0,c.push(s,a),Kw(e,c,n)}Object.defineProperties(NW.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=F.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=ce.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});NW.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){t.push.apply(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&t.push.apply(t,this._commandListTerrain),this._classifies3DTiles&&t.push.apply(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=ve.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=LW(this._command,o),s=Dse;s.length=0,s.push(r),this._commandListIgnoreShow=Kw(this,s,this._commandListIgnoreShow)}t.push.apply(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&t.push.apply(t,this._commandListTerrainPicking),this._classifies3DTiles&&t.push.apply(t,this._commandList3DTilesPicking)),t};var uB=NW;function fB(e){e=y(e,y.EMPTY_OBJECT);let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===ve.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=F.clone(t.modelMatrix),this._boundingVolume=ce.clone(t.boundingVolume),this._modelMatrix2D=new F,this._boundingVolume2D=new ce,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,OGe(this)}function Wp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=y(e.is2D,!1),this.derivedCommand2D=void 0}Wp.clone=function(e){return new Wp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function OGe(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new Wp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new Wp({command:kGe(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new Wp({command:WGe(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new Wp({command:jGe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new Wp({command:VGe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new Wp({command:UGe(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(fB.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=F.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=ce.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,MGe(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,LGe(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,NGe(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,FGe(this))}}});function RGe(e,t){let n=e._modelMatrix;e._modelMatrix2D=F.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=P.sign(n[13])*2*P.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=ce.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function MGe(e){let t=e.shadows,n=yn.castShadows(t),i=yn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function LGe(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=He(r.renderState,!0);s.cull.enabled=t,r.renderState=Ve.fromCache(s)}}}function NGe(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=He(r.renderState,!0);s.cull.face=t,r.renderState=Ve.fromCache(s)}}}function FGe(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}fB.prototype.pushCommands=function(e,t){let n=Ise(this,e);n&&!this._has2DCommands&&(BGe(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(RGe(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==am.ALL_OPAQUE&&tA(t,this._translucentCommand,n),i===am.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||tA(o._backfaceCommands,this._skipLodBackfaceCommand,n),zGe(this,r,n),tA(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){tA(t,this._silhouetteModelCommand,n);return}return tA(t,this._originalCommand,n),t}};fB.prototype.pushSilhouetteCommands=function(e,t){let n=Ise(this,e);return tA(t,this._silhouetteColorCommand,n),t};function tA(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function Ise(e,t){if(t.mode!==ne.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*P.PI;return o<s&&r>s||o<-s&&r>-s}function eA(e,t){if(!l(t))return;let n=Wp.clone(t),i=Qe.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function BGe(e){eA(e,e._originalCommand),eA(e,e._translucentCommand),eA(e,e._skipLodBackfaceCommand),eA(e,e._skipLodStencilCommand),eA(e,e._silhouetteModelCommand),eA(e,e._silhouetteColorCommand)}function kGe(e){let t=Qe.shallowClone(e);t.pass=ve.TRANSLUCENT;let n=He(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=fn.ALPHA_BLEND,t.renderState=Ve.fromCache(n),t}function VGe(e,t){let n=t._silhouetteId%255,i=Qe.shallowClone(e),o=He(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:te.ALWAYS,backFunction:te.ALWAYS,reference:n,mask:-1,frontOperation:{fail:te.KEEP,zFail:te.KEEP,zPass:te.REPLACE},backOperation:{fail:te.KEEP,zFail:te.KEEP,zPass:te.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ve.fromCache(o),i}function UGe(e,t){let n=t._silhouetteId%255,i=Qe.shallowClone(e),o=He(e.renderState,!0);o.cull.enabled=!1,(e.pass===ve.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=ve.TRANSLUCENT,o.depthMask=!1,o.blending=fn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:te.NOTEQUAL,backFunction:te.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:te.KEEP,zFail:te.KEEP,zPass:te.KEEP},backOperation:{fail:te.KEEP,zFail:te.KEEP,zPass:te.KEEP}};let s=He(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ve.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function zGe(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=HGe(o);if(r!==s){let a=GGe(r),c=He(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ve.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function HGe(e){return(e.renderState.stencilTest.reference&Ut.SKIP_LOD_MASK)>>>Ut.SKIP_LOD_BIT_SHIFT}function GGe(e){return Ut.CESIUM_3D_TILE_MASK|e<<Ut.SKIP_LOD_BIT_SHIFT}function WGe(e){let t=Qe.shallowClone(e),n=He(e.renderState,!0);n.cull.enabled=!0,n.cull.face=xi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=He(t.uniformMap),o=new U(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ve.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function jGe(e){let t=Qe.shallowClone(e),n=He(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Ut.SKIP_LOD_MASK,i.reference=Ut.CESIUM_3D_TILE_MASK,i.frontFunction=Hn.GREATER_OR_EQUAL,i.frontOperation.zPass=mt.REPLACE,i.backFunction=Hn.GREATER_OR_EQUAL,i.backOperation.zPass=mt.REPLACE,n.stencilMask=Ut.CESIUM_3D_TILE_MASK|Ut.SKIP_LOD_MASK,t.renderState=Ve.fromCache(n),t}var dB=fB;var hB=`precision highp float;
czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) {
czm_modelVertexOutput vsOutput;
vsOutput.positionMC = positionMC;
vsOutput.pointSize = 1.0;
return vsOutput;
}
void main()
{
// Initialize the attributes struct with all
// attributes except quantized ones.
ProcessedAttributes attributes;
initializeAttributes(attributes);
// Dequantize the quantized ones and add them to the
// attributes struct.
#ifdef USE_DEQUANTIZATION
dequantizationStage(attributes);
#endif
#ifdef HAS_MORPH_TARGETS
morphTargetsStage(attributes);
#endif
#ifdef HAS_SKINNING
skinningStage(attributes);
#endif
#ifdef HAS_PRIMITIVE_OUTLINE
primitiveOutlineStage();
#endif
// Compute the bitangent according to the formula in the glTF spec.
// Normal and tangents can be affected by morphing and skinning, so
// the bitangent should not be computed until their values are finalized.
#ifdef HAS_BITANGENTS
attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC);
#endif
FeatureIds featureIds;
featureIdStage(featureIds, attributes);
#ifdef HAS_SELECTED_FEATURE_ID
SelectedFeature feature;
selectedFeatureIdStage(feature, featureIds);
// Handle any show properties that come from the style.
cpuStylingStage(attributes.positionMC, feature);
#endif
#if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING)
// The scene mode 2D pipeline stage and instancing stage add a different
// model view matrix to accurately project the model to 2D. However, the
// output positions and normals should be transformed by the 3D matrices
// to keep the data the same for the fragment shader.
mat4 modelView = czm_modelView3D;
mat3 normal = czm_normal3D;
#else
// These are used for individual model projection because they will
// automatically change based on the scene mode.
mat4 modelView = czm_modelView;
mat3 normal = czm_normal;
#endif
// Update the position for this instance in place
#ifdef HAS_INSTANCING
// The legacy instance stage is used when rendering i3dm models that
// encode instances transforms in world space, as opposed to glTF models
// that use EXT_mesh_gpu_instancing, where instance transforms are encoded
// in object space.
#ifdef USE_LEGACY_INSTANCING
mat4 instanceModelView;
mat3 instanceModelViewInverseTranspose;
legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose);
modelView = instanceModelView;
normal = instanceModelViewInverseTranspose;
#else
instancingStage(attributes);
#endif
#ifdef USE_PICKING
v_pickColor = a_pickColor;
#endif
#endif
Metadata metadata;
MetadataClass metadataClass;
MetadataStatistics metadataStatistics;
metadataStage(metadata, metadataClass, metadataStatistics, attributes);
#ifdef HAS_VERTICAL_EXAGGERATION
verticalExaggerationStage(attributes);
#endif
#ifdef HAS_CUSTOM_VERTEX_SHADER
czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC);
customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics);
#endif
// Compute the final position in each coordinate system needed.
// This returns the value that will be assigned to gl_Position.
vec4 positionClip = geometryStage(attributes, modelView, normal);
// This must go after the geometry stage as it needs v_positionWC
#ifdef HAS_ATMOSPHERE
atmosphereStage(attributes);
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
modelClippingPolygonsStage(attributes);
#endif
#ifdef HAS_SILHOUETTE
silhouetteStage(attributes, positionClip);
#endif
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
float show = pointCloudShowStylingStage(attributes, metadata);
#else
float show = 1.0;
#endif
#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING
show *= pointCloudBackFaceCullingStage();
#endif
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata);
#endif
#ifdef PRIMITIVE_TYPE_POINTS
#ifdef HAS_CUSTOM_VERTEX_SHADER
gl_PointSize = vsOutput.pointSize;
#elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION)
gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata);
#else
gl_PointSize = 1.0;
#endif
gl_PointSize *= show;
#endif
// Important NOT to compute gl_Position = show * positionClip or we hit:
// https://github.com/CesiumGS/cesium/issues/11270
//
// We will discard points with v_pointCloudShow == 0 in the fragment shader.
gl_Position = positionClip;
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
v_pointCloudShow = show;
#endif
}
`;var mB=`
precision highp float;
czm_modelMaterial defaultModelMaterial()
{
czm_modelMaterial material;
material.diffuse = vec3(0.0);
material.specular = vec3(1.0);
material.roughness = 1.0;
material.occlusion = 1.0;
material.normalEC = vec3(0.0, 0.0, 1.0);
material.emissive = vec3(0.0);
material.alpha = 1.0;
return material;
}
vec4 handleAlpha(vec3 color, float alpha)
{
#ifdef ALPHA_MODE_MASK
if (alpha < u_alphaCutoff) {
discard;
}
#endif
return vec4(color, alpha);
}
SelectedFeature selectedFeature;
void main()
{
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
if (v_pointCloudShow == 0.0)
{
discard;
}
#endif
#ifdef HAS_MODEL_SPLITTER
modelSplitterStage();
#endif
czm_modelMaterial material = defaultModelMaterial();
ProcessedAttributes attributes;
geometryStage(attributes);
FeatureIds featureIds;
featureIdStage(featureIds, attributes);
Metadata metadata;
MetadataClass metadataClass;
MetadataStatistics metadataStatistics;
metadataStage(metadata, metadataClass, metadataStatistics, attributes);
//========================================================================
// When not picking metadata START
#ifndef METADATA_PICKING_ENABLED
#ifdef HAS_SELECTED_FEATURE_ID
selectedFeatureIdStage(selectedFeature, featureIds);
#endif
#ifndef CUSTOM_SHADER_REPLACE_MATERIAL
materialStage(material, attributes, selectedFeature);
#endif
#ifdef HAS_CUSTOM_FRAGMENT_SHADER
customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics);
#endif
lightingStage(material, attributes);
#ifdef HAS_SELECTED_FEATURE_ID
cpuStylingStage(material, selectedFeature);
#endif
#ifdef HAS_MODEL_COLOR
modelColorStage(material);
#endif
#ifdef HAS_PRIMITIVE_OUTLINE
primitiveOutlineStage(material);
#endif
vec4 color = handleAlpha(material.diffuse, material.alpha);
// When not picking metadata END
//========================================================================
#else
//========================================================================
// When picking metadata START
vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0);
metadataPickingStage(metadata, metadataClass, metadataValues);
vec4 color = metadataValues;
#endif
// When picking metadata END
//========================================================================
#ifdef HAS_CLIPPING_PLANES
modelClippingPlanesStage(color);
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
modelClippingPolygonsStage();
#endif
//========================================================================
// When not picking metadata START
#ifndef METADATA_PICKING_ENABLED
#if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS)
silhouetteStage(color);
#endif
#ifdef HAS_ATMOSPHERE
atmosphereStage(color, attributes);
#endif
#endif
// When not picking metadata END
//========================================================================
out_FragColor = color;
}
`;function Pse(){}Pse.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=qGe(e,n,t),o=YGe(e,i,t),r=e.model;return l(r.classificationType)?new uB({primitiveRenderResources:e,command:o}):new dB({primitiveRenderResources:e,command:o})};function qGe(e,t,n){t.addVertexLines(hB),t.addFragmentLines(mB);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function YGe(e,t,n){let i=XGe(e),o=new oi({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ne.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=F.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new F),f=e.runtimePrimitive.boundingSphere2D;else{let T=c?a._computedModelMatrix:a._computedModelMatrix2D;u=F.multiplyTransformation(T,e.runtimeNode.computedTransform,new F),f=ce.transform(e.boundingSphere,u)}let h=He(Ve.fromCache(e.renderStateOptions),!0);h.cull.face=Kt.getCullFace(u,e.primitiveType),h=Ve.fromCache(h);let p=l(r.classificationType),g=p?!1:yn.castShadows(r.shadows),m=p?!1:yn.receiveShadows(r.shadows),x=p?void 0:e.pickId;return new Qe({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:x,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function XGe(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var pB=Pse;function fu(e){e=y(e,y.EMPTY_OBJECT);let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=F.clone(F.IDENTITY),this._computedModelMatrix2D=F.clone(F.IDENTITY),this._axisCorrectionMatrix=Kt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new F),this._runtimeArticulations={},KGe(this)}Object.defineProperties(fu.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function KGe(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;Ose(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let C=0;C<s;C++){let A=r[C],E=new $F({articulation:A,sceneGraph:e}),v=E.name;a[v]=E}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,p=F.IDENTITY;for(let C=0;C<h;C++){let A=n.nodes[C],E=Rse(e,A,p);e._rootNodes.push(E)}let g=t.skins,m=e._runtimeSkins,x=g.length;for(let C=0;C<x;C++){let A=g[C];m.push(new K2({skin:A,sceneGraph:e}))}let b=e._skinnedNodes,T=b.length;for(let C=0;C<T;C++){let A=b[C],E=e._runtimeNodes[A],D=c[A].skin.index;E._runtimeSkin=m[D],E.updateJointMatrices()}e.applyArticulations()}function Ose(e,t){let n=e._components,i=e._model;e._computedModelMatrix=F.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=F.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=F.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var $Ge=new d;function ZGe(e,t){let n=e._computedModelMatrix,i=F.getTranslation(n,$Ge);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=Mt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=Mt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=F.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=ce.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function Rse(e,t,n){let i=[],o=Kt.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],p=F.multiplyTransformation(n,o,new F),g=Rse(e,h,p);i.push(g)}let s=new f2({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new X2({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new i2(f,s);f._nodesByName[u]=h}return c}var QGe=new d,JGe=new d,e5e=new d,t5e=new d;fu.prototype.buildDrawCommands=function(e){let t=this._model,n=new J2(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages,o,r,s;for(o=0;o<i.length;o++)i[o].process(n,t,e);let a=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,QGe),c=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,JGe);for(o=0;o<this._runtimeNodes.length;o++){let u=this._runtimeNodes[o];if(!l(u))continue;u.configurePipeline();let f=u.pipelineStages,h=new aB(n,u);for(r=0;r<f.length;r++)f[r].process(h,u.node,e);let p=u.computedTransform;for(r=0;r<u.runtimePrimitives.length;r++){let g=u.runtimePrimitives[r];g.configurePipeline(e);let m=g.pipelineStages,x=new lB(h,g);for(s=0;s<m.length;s++)m[s].process(x,g.primitive,e);g.boundingSphere=ce.clone(x.boundingSphere,new ce);let b=F.multiplyByPoint(p,x.positionMin,e5e),T=F.multiplyByPoint(p,x.positionMax,t5e);d.minimumByComponent(a,b,a),d.maximumByComponent(c,T,c);let C=pB.buildModelDrawCommand(x,e);g.drawCommand=C}}this._boundingSphere=ce.fromCornerPoints(a,c,new ce),this._boundingSphere=ce.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=ce.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=ce.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};fu.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push(Ix),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push(YF),n.isClippingEnabled()&&t.push(JF),n.isClippingPolygonsEnabled()&&t.push(n2),n.hasSilhouette(e)&&t.push(iB),l(n.splitDirection)&&n.splitDirection!==Gr.NONE&&t.push(sB),yr.is3DTiles(n.type)&&t.push(HF),i&&t.push(jF))};fu.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ne.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};fu.prototype.updateModelMatrix=function(e,t){Ose(this,e),t.mode!==ne.SCENE3D&&ZGe(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};fu.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function Mse(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);Mse(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function _B(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];Mse(e,c,t,n,i)}}var n5e={backFaceCulling:void 0};fu.prototype.updateBackFaceCulling=function(e){let t=n5e;t.backFaceCulling=e,_B(this,!1,i5e,t)};function i5e(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var o5e={shadowMode:void 0};fu.prototype.updateShadows=function(e){let t=o5e;t.shadowMode=e,_B(this,!1,r5e,t)};function r5e(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var s5e={debugShowBoundingVolume:void 0};fu.prototype.updateShowBoundingVolume=function(e){let t=s5e;t.debugShowBoundingVolume=e,_B(this,!1,a5e,t)};function a5e(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var Lse=[],c5e={frameState:void 0,hasSilhouette:void 0};fu.prototype.pushDrawCommands=function(e){let t=Lse;t.length=0;let n=c5e;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,_B(this,!0,l5e,n),e.commandList.push.apply(e.commandList,t)};function l5e(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=Lse,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}fu.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};fu.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var gB=fu;function qg(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new wt}Object.defineProperties(qg.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});qg.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};qg.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};qg.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};qg.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};qg.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};qg.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var yB=qg;var kse=Hr(g1(),1);var Nse={},Nx=Uint32Array.BYTES_PER_ELEMENT;Nse.parse=function(e,t){t=y(t,0);let n=new Uint8Array(e),i=new DataView(e);t+=Nx;let o=i.getUint32(t,!0);if(o!==1)throw new se(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=Nx,t+=Nx;let r=i.getUint32(t,!0);if(r===0)throw new se("Feature table must have a byte length greater than zero");t+=Nx;let s=i.getUint32(t,!0);t+=Nx;let a=i.getUint32(t,!0);t+=Nx;let c=i.getUint32(t,!0);t+=Nx;let u=cr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,p;a>0&&(h=cr(n,t,a),t+=a,c>0&&(p=new Uint8Array(e,t,c),t+=c));let g=new rm(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new se("Feature table global property: POINTS_LENGTH must be defined");let x=g.getGlobalProperty("RTC_CENTER",X.FLOAT,3);l(x)&&(x=d.unpack(x));let b=u5e(g,h);if(b.rtcCenter=x,b.pointsLength=m,!b.hasPositions){let T=f5e(g);b.positions=T,b.hasPositions=b.hasPositions||l(T)}if(!b.hasPositions)throw new se("Either POSITION or POSITION_QUANTIZED must be defined.");if(!b.hasNormals){let T=h5e(g);b.normals=T,b.hasNormals=b.hasNormals||l(T)}if(!b.hasColors){let T=d5e(g);b.colors=T,b.hasColors=b.hasColors||l(T),b.hasConstantColor=l(b.constantColor),b.isTranslucent=l(T)&&T.isTranslucent}if(!b.hasBatchIds){let T=m5e(g);b.batchIds=T,b.hasBatchIds=b.hasBatchIds||l(T)}if(b.hasBatchIds){let T=g.getGlobalProperty("BATCH_LENGTH");if(!l(T))throw new se("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");b.batchLength=T}return l(p)&&(p=new Uint8Array(p),b.batchTableJson=h,b.batchTableBinary=p),b};function u5e(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,p;if(l(s)){o=s.properties;let m=s.byteOffset,x=s.byteLength;if(!l(o)||!l(m)||!l(x))throw new se("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+x),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),p=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:At(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:p,hasNormals:f,hasBatchIds:h}}function f5e(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",X.FLOAT,3),{name:pt.POSITION,semantic:pt.POSITION,typedArray:n,isQuantized:!1,componentDatatype:X.FLOAT,type:on.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",X.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",X.FLOAT,3);if(!l(i))throw new se("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",X.FLOAT,3);if(!l(r))throw new se("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:pt.POSITION,semantic:pt.POSITION,typedArray:n,isQuantized:!0,componentDatatype:X.FLOAT,type:on.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:X.UNSIGNED_SHORT,quantizedType:on.VEC3}}}function d5e(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",X.UNSIGNED_BYTE,4),{name:pt.COLOR,semantic:pt.COLOR,setIndex:0,typedArray:n,componentDatatype:X.UNSIGNED_BYTE,type:on.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",X.UNSIGNED_BYTE,3),{name:"COLOR",semantic:pt.COLOR,setIndex:0,typedArray:n,componentDatatype:X.UNSIGNED_BYTE,type:on.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",X.UNSIGNED_SHORT,1),{name:"COLOR",semantic:pt.COLOR,setIndex:0,typedArray:n,componentDatatype:X.FLOAT,type:on.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",X.UNSIGNED_BYTE,4),o=i[3],r=z.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:pt.COLOR,semantic:pt.COLOR,setIndex:0,constantColor:r,componentDatatype:X.FLOAT,type:on.VEC4,isQuantized:!1,isTranslucent:s}}}function h5e(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",X.FLOAT,3),{name:pt.NORMAL,semantic:pt.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:X.FLOAT,type:on.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",X.UNSIGNED_BYTE,2),{name:pt.NORMAL,semantic:pt.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:on.VEC2,quantizedComponentDatatype:X.UNSIGNED_BYTE,componentDatatype:X.FLOAT,type:on.VEC3}}function m5e(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",X.UNSIGNED_SHORT,1);return{name:pt.FEATURE_ID,semantic:pt.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:X.fromTypedArray(n),type:on.SCALAR}}}var nA=Nse;var p5e=xn.Components,_5e=xn.Scene,g5e=xn.Node,y5e=xn.Primitive,x5e=xn.Attribute,Fse=xn.Quantization,b5e=xn.FeatureIdAttribute,T5e=xn.Material,C5e=xn.MetallicRoughness;function Yg(e){e=y(e,y.EMPTY_OBJECT);let t=e.arrayBuffer,n=y(e.byteOffset,0);this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=y(e.loadAttributesFor2D,!1),this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=xt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=F.IDENTITY}l(Object.create)&&(Yg.prototype=Object.create(Ji.prototype),Yg.prototype.constructor=Yg);Object.defineProperties(Yg.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});Yg.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=nA.parse(this._arrayBuffer,this._byteOffset),this._state=xt.PROCESSING,this._promise=Promise.resolve(this)};Yg.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===xt.READY)return!0;if(this._state===xt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=A5e(this,e.context)}return!1};function A5e(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=Tg.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&E5e(e,i,r),N5e(e,t),e._state=xt.READY,e}).catch(function(r){e.unload(),e._state=xt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function E5e(e,t,n){e._state=xt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:pt.POSITION,typedArray:n.POSITION.array,componentDatatype:X.FLOAT,type:on.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?X.UNSIGNED_BYTE:X.UNSIGNED_SHORT,o.quantizedType=on.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:pt.NORMAL,typedArray:n.NORMAL.array,componentDatatype:X.FLOAT,type:on.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=X.UNSIGNED_BYTE,o.quantizedType=on.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:pt.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:X.UNSIGNED_BYTE,type:on.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:pt.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:X.UNSIGNED_BYTE,type:on.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:pt.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:X.fromTypedArray(a),type:on.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:S5e(u.componentsPerAttribute),componentType:v5e(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function S5e(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function v5e(e){switch(e){case te.BYTE:return"BYTE";case te.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case te.SHORT:return"SHORT";case te.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case te.INT:return"INT";case te.UNSIGNED_INT:return"UNSIGNED_INT";case te.DOUBLE:return"DOUBLE";case te.FLOAT:return"FLOAT"}}function $w(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new Fse,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new Fse;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new x5e;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=y(t.normalized,!1),r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Bn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=z.pack(t.constantColor,a)}else{let a=Tt.createVertexBuffer({typedArray:i,context:n,usage:ke.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===pt.POSITION&&s&&(r.typedArray=i),r}var Bse,xB;function w5e(e){if(!l(xB)){Bse=new kse.default(0),xB=new Array(e);for(let t=0;t<e;++t)xB[t]=Bse.random()}return xB}var D5e=new d,I5e=new d,P5e=new d;function O5e(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=w5e(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,D5e),u=d.fromElements(a,a,a,I5e),f,h,p;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),p=d.unpack(t,h*3,P5e),d.minimumByComponent(c,p,c),d.maximumByComponent(u,p,u);e.min=d.clone(c),e.max=d.clone(u)}var R5e={name:pt.COLOR,semantic:pt.COLOR,setIndex:0,constantColor:z.DARKGRAY,componentDatatype:X.FLOAT,type:on.VEC4,isQuantized:!1,isTranslucent:!1};function M5e(e,t,n){let i=[],o,r=t.positions;return l(r)&&(O5e(r),o=$w(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=$w(e,t.normals,n),i.push(o)),l(t.colors)?(o=$w(e,t.colors,n),i.push(o)):(o=$w(e,R5e,n),i.push(o)),l(t.batchIds)&&(o=$w(e,t.batchIds,n),i.push(o)),i}function L5e(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);if(l(o)||e.hasDracoBatchTable){let s=y(n,i);return Vg({count:s,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t})}return new la({schema:{},propertyTables:[]})}function N5e(e,t){let n=e._parsedContent,i=new C5e;i.metallicFactor=0,i.roughnessFactor=.9;let o=new T5e;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=Np.BLEND);let s=!l(n.normals);o.unlit=s;let a=new y5e;if(a.attributes=M5e(e,n,t),a.primitiveType=Ne.POINTS,a.material=o,l(n.batchIds)){let g=new b5e;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new g5e;c.index=0,c.primitives=[a];let u=new _5e;u.nodes=[c],u.upAxis=Vo.Z,u.forwardAxis=Vo.X;let f=new p5e;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=L5e(n,h),h.length>0&&F5e(e,a,h,t),l(n.rtcCenter)&&(f.transform=F.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let p=n.positions;l(p)&&p.isQuantized&&(f.transform=F.multiplyByTranslation(f.transform,p.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function F5e(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Tt.createVertexBuffer({typedArray:a.typedArray,context:i,usage:ke.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}Yg.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var bB=Yg;var B5e=new d,k5e=new d,V5e=new d,U5e=new F,z5e=new F,H5e=new F,G5e=new fe,W5e=new ce;function Zw(e,t,n,i,o,r,s){if(!e._ready||n.mode===ne.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],p=h.node,g=F.clone(h.computedTransform,U5e),m=F.clone(c.computedModelMatrix,z5e),x=p.instances;l(x)&&x.transformInWorldSpace&&(m=F.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=F.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let b=F.multiplyTransformation(m,g,H5e);n.mode!==ne.SCENE3D&&(b=Mt.basisTo2D(n.mapProjection,b,b));let T=[];if(l(x)){let A=x.attributes[0].count,E=x.attributes[0].componentDatatype,v=12,D=h.transformsTypedArray;if(!l(D)){let R=h.instancingTransformsBuffer;l(R)&&n.context.webgl2&&(D=X.createTypedArray(E,A*v),R.getBufferData(D))}if(l(D))for(let R=0;R<A;R++){let O=R*v,M=new F(D[O],D[O+1],D[O+2],D[O+3],D[O+4],D[O+5],D[O+6],D[O+7],D[O+8],D[O+9],D[O+10],D[O+11],0,0,0,1);x.transformInWorldSpace?(F.multiplyTransformation(M,g,M),F.multiplyTransformation(m,M,M)):F.multiplyTransformation(M,b,M),T.push(M)}}T.length===0&&T.push(b);let C=h.runtimePrimitives.length;for(let A=0;A<C;A++){let E=h.runtimePrimitives[A],v=E.primitive;if(l(E.boundingSphere)&&!l(x)){let q=ce.transform(E.boundingSphere,b,W5e),J=ti.raySphere(t,q);if(!l(J))continue}let D=Kt.getAttributeBySemantic(v,pt.POSITION),R=D.byteOffset,O=D.byteStride,M=D.count;if(!l(v.indices))continue;let N=v.indices.typedArray;if(!l(N)){let q=v.indices.buffer,J=v.indices.count,j=v.indices.indexDatatype;l(q)&&n.context.webgl2&&(j===Be.UNSIGNED_BYTE?N=new Uint8Array(J):j===Be.UNSIGNED_SHORT?N=new Uint16Array(J):j===Be.UNSIGNED_INT&&(N=new Uint32Array(J)),q.getBufferData(N))}let _=D.typedArray,S=D.componentDatatype,w=D.type,I=D.quantization;l(I)&&(S=D.quantization.componentDatatype,w=D.quantization.type);let L=on.getNumberOfComponents(w),B=X.getSizeInBytes(S),H=!l(_)&&l(O)&&O!==L*B,V=L,G=0;H&&(V=O/B,G=R/B);let k=M*V;if(!l(_)){let q=D.buffer;l(q)&&n.context.webgl2&&(_=X.createTypedArray(S,k),q.getBufferData(_,H?0:R,0,k)),I&&D.normalized&&(_=Bn.dequantize(_,S,w,M))}if(!l(N)||!l(_))return;r=y(r,ee.default),i=y(i,1),o=y(o,0);let W=N.length;for(let q=0;q<W;q+=3){let J=N[q],j=N[q+1],K=N[q+2];for(let Q of T){let he=FW(_,J,G,V,I,Q,i,o,r,B5e),ye=FW(_,j,G,V,I,Q,i,o,r,k5e),re=FW(_,K,G,V,I,Q,i,o,r,V5e),_e=ti.rayTriangleParametric(t,he,ye,re,y(e.backFaceCulling,!0));l(_e)&&_e<a&&_e>=0&&(a=_e)}}}}if(a!==Number.MAX_VALUE){if(s=pn.getPoint(t,a,s),n.mode!==ne.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,p=f.unproject(s,G5e);h.cartographicToCartesian(p,s)}return s}}function FW(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=Bn.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=F.multiplyByPoint(r,u,u),s!==1&&Rr.getPosition(u,c,s,a,u),u}function ao(e){e=y(e,y.EMPTY_OBJECT),this._loader=e.loader,this._resource=e.resource,this.type=y(e.type,yr.GLTF),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=F.clone(this.modelMatrix),this._scale=y(e.scale,1),this._minimumPixelSize=y(e.minimumPixelSize,0),this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=Z.clone(Z.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new VF(this),this._clampAnimations=y(e.clampAnimations,!0),this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=z.clone(e.color),this._colorBlendMode=y(e.colorBlendMode,Vc.HIGHLIGHT),this._colorBlendAmount=y(e.colorBlendAmount,.5);let t=y(e.silhouetteColor,z.RED);this._silhouetteColor=z.clone(t),this._silhouetteSize=y(e.silhouetteSize,0),this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=y(e.cull,!0),this._opaquePass=y(e.opaquePass,ve.OPAQUE),this._allowPicking=y(e.allowPicking,!0),this._show=y(e.show,!0),this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=y(e.featureIdLabel,"featureId_0");typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=y(e.instanceFeatureIdLabel,"instanceFeatureId_0");typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new ce,this._initialRadius=void 0,this._heightReference=y(e.heightReference,qe.NONE),this._heightDirty=this._heightReference!==qe.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=y(e.enableVerticalExaggeration,!0),this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new Bp(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Es.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=F.clone(F.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?tm.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new mC,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new Lg(e.environmentMapOptions);Lg.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=y(e.backFaceCulling,!0),this._backFaceCullingDirty=!1,this._shadows=y(e.shadows,yn.ENABLED),this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this._enableDebugWireframe=y(e.enableDebugWireframe,!1),this._enableShowOutline=y(e.enableShowOutline,!0),this._debugWireframe=y(e.debugWireframe,!1),this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===yr.GLTF&&Ct("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new vt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=y(e.showCreditsOnScreen,!1),this._showCreditsOnScreenDirty=!0,this._splitDirection=y(e.splitDirection,Gr.NONE),this._enableShowOutline=y(e.enableShowOutline,!0),this.showOutline=y(e.showOutline,!0),this.outlineColor=y(e.outlineColor,z.BLACK),this._classificationType=e.classificationType,this._statistics=new yB,this._sceneMode=void 0,this._projectTo2D=y(e.projectTo2D,!1),this._enablePick=y(e.enablePick,!1),this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=y(e.ignoreCommands,!1),this._errorEvent=new me,this._readyEvent=new me,this._texturesReadyEvent=new me,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject,this._marsOptions=y(e.marsOptions,{})}function BW(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function j5e(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new zF({model:e,propertyTable:s});n.push(a)}return n}function q5e(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Kt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Kt.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function UW(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(ao.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return y(this._loader.incrementallyLoadTextures,!1)}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Lt.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){UW(e,this._color)&&this.resetDrawCommands(),this._color=z.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!z.equals(e,this._silhouetteColor)){let t=UW(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=z.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return zse(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===yr.GLTF&&Ct("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Es.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(tm.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(Lg.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});ao.prototype.getNode=function(e){return this._nodesByName[e]};ao.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};ao.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};ao.prototype.getExtension=function(e){return this._loader.components.extensions[e]};ao.prototype.makeStyleDirty=function(){this._styleDirty=!0};ao.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var Y5e=new F,X5e=new Z,K5e=new F;ao.prototype.update=function(e){let t=!1;try{t=$5e(this,e)}catch(n){if(!this._loader.incrementallyLoadTextures&&n.name==="TextureError")BW(this,n);else{let i=Kt.getError("model",this._resource,n);BW(this,i)}}if(J5e(this,e),Z5e(this,e),Q5e(this,e),e6e(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let n=this._loader.components;if(!l(n)){if(this._loader.isUnloaded())return;let r=Kt.getError("model",this._resource,new se("Failed to load model."));BW(r),this._rejectLoad=this._rejectLoad&&this._rejectLoad(r)}let i=n.structuralMetadata;l(i)&&i.propertyTableCount>0&&j5e(this,i);let o=new gB({model:this,modelComponents:n});this._sceneGraph=o,this._gltfCredits=o.components.asset.credits}if(!(!this._resourcesLoaded||e.mode===ne.MORPHING)){if(t6e(this),n6e(this),i6e(this,e),o6e(this),r6e(this,e),s6e(this,e),a6e(this,e),c6e(this,e),l6e(this,e),u6e(this,e),f6e(this,e),this._defaultTexture=e.context.defaultTexture,d6e(this,e),h6e(this,e),m6e(this),p6e(this,e),x6e(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),g6e(this),b6e(this,e),T6e(this),C6e(this,e)}};function $5e(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function Z5e(e,t){l(e._customShader)&&e._customShader.update(t)}function Q5e(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function J5e(e,t){if(l(e._marsOptions)&&l(e._marsOptions.customShaders)){let n=jg.getCache(e._marsOptions.customShaders);for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&n[i].update(t)}}function e6e(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function t6e(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=q5e(t,e),e._styleDirty=!0,e.resetDrawCommands())}function n6e(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function i6e(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&Use(e)}function Use(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=am.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function o6e(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function r6e(e,t){e._silhouetteDirty&&(Hse(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function s6e(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function a6e(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function c6e(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function l6e(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function u6e(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function f6e(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function d6e(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function h6e(e,t){F.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=F.clone(e.modelMatrix,e._modelMatrix))}var Xg=new d,kW=new fe;function m6e(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===qe.NONE){e._clampedModelMatrix=void 0;return}let n=y(t.ellipsoid,ee.default),i=e.modelMatrix;Xg.x=i[12],Xg.y=i[13],Xg.z=i[14];let o=n.cartesianToCartographic(Xg);if(!l(o)){e._clampedModelMatrix=void 0;return}l(e._clampedModelMatrix)||(e._clampedModelMatrix=F.clone(i,new F)),e._removeUpdateHeightCallback=t.updateHeight(o,Vse(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=Vse(e,n,o);fe.clone(o,kW),kW.height=r,s(kW)}e._heightDirty=!1,e._updateModelMatrix=!0}function p6e(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;zse(e,n),_6e(e,n,t)}function zse(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=ce.transform(e._boundingSphere,t,e._boundingSphere)}function _6e(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);F.getTranslation(t,Xg),e._sceneMode!==ne.SCENE3D&&Wi.computeActualEllipsoidPosition(n,Xg,Xg);let s=e._boundingSphere.radius,a=A6e(Xg,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function g6e(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var y6e=new Z(1,0,0,0,0,1,0,-1,0);function x6e(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=y(e.referenceMatrix,n),o=t.context,r=X5e,s=Y5e;if(s=F.multiply(o.uniformState.view3D,i,s),r=F.getRotation(s,r),r=Z.transpose(r,r),e._iblReferenceFrameMatrix=Z.multiply(y6e,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=K5e;a=F.multiply(o.uniformState.view3D,i,a),a=F.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=F.inverseTranspose(a,e._clippingPlanesMatrix)}}function b6e(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function T6e(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=vt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=vt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=vt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function C6e(e,t){let n=S6e(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(v6e(e,t),e._sceneGraph.pushDrawCommands(t))}var VW=new ce;function A6e(e,t,n){return VW.center=e,VW.radius=t,n.camera.getPixelSize(VW,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var TB=new d;function Vse(e,t,n){return function(i){RT(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,TB);let o=e._clampedModelMatrix;F.clone(e.modelMatrix,o),o[12]=TB.x,o[13]=TB.y,o[14]=TB.z,e._heightDirty=!0}}var E6e=new d;function S6e(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ne.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=F.getTranslation(e.modelMatrix,E6e);Wi.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function v6e(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}ao.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};ao.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Hse(e){return e.context.stencilBuffer}ao.prototype.hasSilhouette=function(e){return Hse(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};ao.prototype.hasSkipLevelOfDetail=function(e){if(!yr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};ao.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};ao.prototype.pick=function(e,t,n,i,o){return Zw(this,e,t,n,i,o)};ao.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};ao.prototype.isDestroyed=function(){return!1};ao.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};ao.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};ao.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};ao.fromGltfAsync=async function(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.url,e.gltf),n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=y(e.basePath,""),o=Ee.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=Ee.createIfNeeded(t);let r=new om(n),a=l(e.content)?yr.TILE_GLTF:yr.GLTF,c=n.gltfResource,u=Qw(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Kt.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new ao(u),p=h._resource.credits;if(l(p)){let g=p.length;for(let m=0;m<g;m++)h._resourceCredits.push(vt.clone(p[m]))}return h};ao.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new SF(t);try{await n.load();let i=Qw(n,yr.TILE_B3DM,e);return new ao(i)}catch(i){throw n.destroy(),i}};ao.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new bB(t);try{await n.load();let i=Qw(n,yr.TILE_PNTS,e);return new ao(i)}catch(i){throw n.destroy(),i}};ao.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new RF(t);try{await n.load();let i=Qw(n,yr.TILE_I3DM,e);return new ao(i)}catch(i){throw n.destroy(),i}};ao.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new wF(t),i=Qw(n,yr.TILE_GEOJSON,e);return new ao(i)};var w6e=new z;ao.prototype.applyColorAndShow=function(e){let t=z.clone(this._color,w6e),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):z.clone(z.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,UW(t,this._color)&&this.resetDrawCommands()};ao.prototype.applyStyle=function(e){let t=this.type===yr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),Use(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function Qw(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject,marsOptions:n.marsOptions}}var cm=ao;function kr(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(kr.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});kr.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};kr.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};kr.prototype.getExtension=function(e){return this._model.getExtension(e)};kr.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};kr.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};kr.prototype.applyDebugSettings=function(e,t){t=e?t:z.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};kr.prototype.applyStyle=function(e){this._model.style=e};kr.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:lu.REPEAT}),this._ready=!0)};kr.prototype.isDestroyed=function(){return!1};kr.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};kr.fromGltf=async function(e,t,n,i){let o=new kr(e,t,n),s=Jw(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await cm.fromGltfAsync(s);return o._model=c,o};kr.fromB3dm=async function(e,t,n,i,o){let r=new kr(e,t,n),a=Jw(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await cm.fromB3dm(a);return r._model=u,r};kr.fromI3dm=async function(e,t,n,i,o){let r=new kr(e,t,n),a=Jw(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await cm.fromI3dm(a);return r._model=c,r};kr.fromPnts=async function(e,t,n,i,o){let r=new kr(e,t,n),a=Jw(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await cm.fromPnts(a);return r._model=c,r};kr.fromGeoJson=async function(e,t,n,i){let o=new kr(e,t,n),s=Jw(e,t,o,{geoJson:i,resource:n}),a=await cm.fromGeoJson(s);return o._model=a,o};kr.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,ee.WGS84,n)};function Jw(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:ve.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor,marsOptions:e._marsOptions};return At(i,o)}var xf=kr;function bf(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(bf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});bf.fromJson=function(e,t,n,i){let o=new bf(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};bf.prototype.hasProperty=function(e,t){return!1};bf.prototype.getFeature=function(e){};bf.prototype.applyDebugSettings=function(e,t){};bf.prototype.applyStyle=function(e){};bf.prototype.update=function(e,t){};bf.prototype.pick=function(e,t,n){};bf.prototype.isDestroyed=function(){return!1};bf.prototype.destroy=function(){return ue(this)};var CB=bf;function Gs(e,t,n,i){let o=Gs._verifyAttributes(t);n=y(n,0);let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let p=o[h];if(p.vertexBuffer){r.push(p);continue}c=p.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(p)}function f(h,p){return X.getSizeInBytes(p.componentDatatype)-X.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=Gs._vertexSizeInBytes(a),p=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:p,needsCommit:!1,arrayBuffer:void 0,arrayViews:Gs._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=y(i,!1),this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}Gs._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:y(o.index,i),enabled:y(o.enabled,!0),componentsPerAttribute:o.componentsPerAttribute,componentDatatype:y(o.componentDatatype,X.FLOAT),normalize:y(o.normalize,!1),vertexBuffer:o.vertexBuffer,usage:y(o.usage,ke.STATIC_DRAW)};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};Gs._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*X.getSizeInBytes(a.componentDatatype)}let i=n>0?X.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};Gs._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/X.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*X.getSizeInBytes(a)}return n};Gs.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];Gs._resize(o,this._size),Gs._appendWriters(this.writers,o)}zW(this)};Gs._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=X.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var D6e=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];Gs._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=D6e[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};Gs.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=I6e(this,i)||t;if(t||!l(this.va)){zW(this);let s=this.va=[],a=P.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);Gs._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new oi({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function I6e(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Tt.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}Gs._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};Gs.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)P6e(n[i],e,t)};function P6e(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}Gs.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function zW(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}Gs.prototype.isDestroyed=function(){return!1};Gs.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return zW(this),ue(this)};var Kg=Gs;var AB=`uniform sampler2D u_atlas;
#ifdef VECTOR_TILE
uniform vec4 u_highlightColor;
#endif
in vec2 v_textureCoordinates;
in vec4 v_pickColor;
in vec4 v_color;
in float v_splitDirection;
#ifdef SDF
in vec4 v_outlineColor;
in float v_outlineWidth;
#endif
#ifdef FRAGMENT_DEPTH_CHECK
in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates
in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs)
in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
in mat2 v_rotationMatrix;
const float SHIFT_LEFT12 = 4096.0;
const float SHIFT_LEFT1 = 2.0;
const float SHIFT_RIGHT12 = 1.0 / 4096.0;
const float SHIFT_RIGHT1 = 1.0 / 2.0;
float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize)
{
vec2 lookupVector = imageSize * (depthLookupST - adjustedST);
lookupVector = v_rotationMatrix * lookupVector;
vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal
vec2 translation = v_originTextureCoordinateAndTranslate.zw;
if (applyTranslate)
{
// this is only needed for labels where the horizontal origin is not LEFT
// it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT
translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0));
}
vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw;
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st));
if (logDepthOrDepth == 0.0)
{
return 0.0; // not on the globe
}
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
return eyeCoordinate.z / eyeCoordinate.w;
}
#endif
#ifdef SDF
// Get the distance from the edge of a glyph at a given position sampling an SDF texture.
float getDistance(vec2 position)
{
return texture(u_atlas, position).r;
}
// Samples the sdf texture at the given position and produces a color based on the fill color and the outline.
vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing)
{
float distance = getDistance(position);
if (outlineWidth > 0.0)
{
// Don't get the outline edge exceed the SDF_EDGE
float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE);
float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance);
vec4 sdfColor = mix(outlineColor, v_color, outlineFactor);
float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance);
return vec4(sdfColor.rgb, sdfColor.a * alpha);
}
else
{
float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance);
return vec4(v_color.rgb, v_color.a * alpha);
}
}
#endif
void main()
{
if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
vec4 color = texture(u_atlas, v_textureCoordinates);
#ifdef SDF
float outlineWidth = v_outlineWidth;
vec4 outlineColor = v_outlineColor;
// Get the current distance
float distance = getDistance(v_textureCoordinates);
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
float smoothing = fwidth(distance);
// Get an offset that is approximately half the distance to the neighbor pixels
// 0.354 is approximately half of 1/sqrt(2)
vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates));
// Sample the center point
vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing);
// Sample the 4 neighbors
vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing);
vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing);
vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing);
vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing);
// Equally weight the center sample and the 4 neighboring samples
color = (center + color1 + color2 + color3 + color4)/5.0;
#else
// If no derivatives available (IE 10?), just do a single sample
float smoothing = 1.0/32.0;
color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing);
#endif
color = czm_gammaCorrect(color);
#else
color = czm_gammaCorrect(color);
color *= czm_gammaCorrect(v_color);
#endif
// Fully transparent parts of the billboard are not pickable.
#if !defined(OPAQUE) && !defined(TRANSLUCENT)
if (color.a < 0.005) // matches 0/255 and 1/255
{
discard;
}
#else
// The billboard is rendered twice. The opaque pass discards translucent fragments
// and the translucent pass discards opaque fragments.
#ifdef OPAQUE
if (color.a < 0.995) // matches < 254/255
{
discard;
}
#else
if (color.a >= 0.995) // matches 254/255 and 255/255
{
discard;
}
#endif
#endif
#ifdef VECTOR_TILE
color *= u_highlightColor;
#endif
out_FragColor = color;
#ifdef LOG_DEPTH
czm_writeLogDepth();
#endif
#ifdef FRAGMENT_DEPTH_CHECK
float temp = v_compressed.y;
temp = temp * SHIFT_RIGHT1;
float temp2 = (temp - floor(temp)) * SHIFT_LEFT1;
bool enableDepthTest = temp2 != 0.0;
bool applyTranslate = floor(temp) != 0.0;
if (enableDepthTest) {
temp = v_compressed.z;
temp = temp * SHIFT_RIGHT12;
vec2 dimensions;
dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12;
dimensions.x = floor(temp);
temp = v_compressed.w;
temp = temp * SHIFT_RIGHT12;
vec2 imageSize;
imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12;
imageSize.x = floor(temp);
vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy;
adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y);
float epsilonEyeDepth = v_compressed.x + czm_epsilon1;
float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize);
// negative values go into the screen
if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth)
{
float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner
if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth)
{
float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner
if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth)
{
discard;
}
}
}
}
#endif
}
`;var EB=`#ifdef INSTANCED
in vec2 direction;
#endif
in vec4 positionHighAndScale;
in vec4 positionLowAndRotation;
in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset)
in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width
in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free
in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range)
in vec4 scaleByDistance; // near, nearScale, far, farScale
in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale
in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions
in vec2 sdf; // sdf outline color (rgb) and width (w)
in float splitDirection; // splitDirection
#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)
in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates
#endif
#ifdef VECTOR_TILE
in float a_batchId;
#endif
out vec2 v_textureCoordinates;
#ifdef FRAGMENT_DEPTH_CHECK
out vec4 v_textureCoordinateBounds;
out vec4 v_originTextureCoordinateAndTranslate;
out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
out mat2 v_rotationMatrix;
#endif
out vec4 v_pickColor;
out vec4 v_color;
out float v_splitDirection;
#ifdef SDF
out vec4 v_outlineColor;
out float v_outlineWidth;
#endif
const float UPPER_BOUND = 32768.0;
const float SHIFT_LEFT16 = 65536.0;
const float SHIFT_LEFT12 = 4096.0;
const float SHIFT_LEFT8 = 256.0;
const float SHIFT_LEFT7 = 128.0;
const float SHIFT_LEFT5 = 32.0;
const float SHIFT_LEFT3 = 8.0;
const float SHIFT_LEFT2 = 4.0;
const float SHIFT_LEFT1 = 2.0;
const float SHIFT_RIGHT12 = 1.0 / 4096.0;
const float SHIFT_RIGHT8 = 1.0 / 256.0;
const float SHIFT_RIGHT7 = 1.0 / 128.0;
const float SHIFT_RIGHT5 = 1.0 / 32.0;
const float SHIFT_RIGHT3 = 1.0 / 8.0;
const float SHIFT_RIGHT2 = 1.0 / 4.0;
const float SHIFT_RIGHT1 = 1.0 / 2.0;
vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp)
{
// Note the halfSize cannot be computed in JavaScript because it is sent via
// compressed vertex attributes that coerce it to an integer.
vec2 halfSize = imageSize * scale * 0.5;
halfSize *= ((direction * 2.0) - 1.0);
vec2 originTranslate = origin * abs(halfSize);
#if defined(ROTATION) || defined(ALIGNED_AXIS)
if (validAlignedAxis || rotation != 0.0)
{
float angle = rotation;
if (validAlignedAxis)
{
vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0);
angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) /
(projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y));
}
float cosTheta = cos(angle);
float sinTheta = sin(angle);
rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta);
halfSize = rotationMatrix * halfSize;
}
else
{
rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0);
}
#endif
mpp = czm_metersPerPixel(positionEC);
positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp);
positionEC.xy += (translate + pixelOffset) * mpp;
return positionEC;
}
#ifdef VERTEX_DEPTH_CHECK
float getGlobeDepth(vec4 positionEC)
{
vec4 posWC = czm_eyeToWindowCoordinates(positionEC);
float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw));
if (globeDepth == 0.0)
{
return 0.0; // not on the globe
}
vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth);
return eyeCoordinate.z / eyeCoordinate.w;
}
#endif
void main()
{
// Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition
// unpack attributes
vec3 positionHigh = positionHighAndScale.xyz;
vec3 positionLow = positionLowAndRotation.xyz;
float scale = positionHighAndScale.w;
#if defined(ROTATION) || defined(ALIGNED_AXIS)
float rotation = positionLowAndRotation.w;
#else
float rotation = 0.0;
#endif
float compressed = compressedAttribute0.x;
vec2 pixelOffset;
pixelOffset.x = floor(compressed * SHIFT_RIGHT7);
compressed -= pixelOffset.x * SHIFT_LEFT7;
pixelOffset.x -= UPPER_BOUND;
vec2 origin;
origin.x = floor(compressed * SHIFT_RIGHT5);
compressed -= origin.x * SHIFT_LEFT5;
origin.y = floor(compressed * SHIFT_RIGHT3);
compressed -= origin.y * SHIFT_LEFT3;
#ifdef FRAGMENT_DEPTH_CHECK
vec2 depthOrigin = origin.xy;
#endif
origin -= vec2(1.0);
float show = floor(compressed * SHIFT_RIGHT2);
compressed -= show * SHIFT_LEFT2;
#ifdef INSTANCED
vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w);
vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w);
vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange;
#else
vec2 direction;
direction.x = floor(compressed * SHIFT_RIGHT1);
direction.y = compressed - direction.x * SHIFT_LEFT1;
vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w);
#endif
float temp = compressedAttribute0.y * SHIFT_RIGHT8;
pixelOffset.y = -(floor(temp) - UPPER_BOUND);
vec2 translate;
translate.y = (temp - floor(temp)) * SHIFT_LEFT16;
temp = compressedAttribute0.z * SHIFT_RIGHT8;
translate.x = floor(temp) - UPPER_BOUND;
translate.y += (temp - floor(temp)) * SHIFT_LEFT8;
translate.y -= UPPER_BOUND;
temp = compressedAttribute1.x * SHIFT_RIGHT8;
float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2);
vec2 imageSize = vec2(floor(temp), temp2);
#ifdef FRAGMENT_DEPTH_CHECK
float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));
float applyTranslate = 0.0;
if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false
{
applyTranslate = 1.0;
labelHorizontalOrigin -= 2.0;
depthOrigin.x = labelHorizontalOrigin + 1.0;
}
depthOrigin = vec2(1.0) - (depthOrigin * 0.5);
#endif
#ifdef EYE_DISTANCE_TRANSLUCENCY
vec4 translucencyByDistance;
translucencyByDistance.x = compressedAttribute1.z;
translucencyByDistance.z = compressedAttribute1.w;
translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
temp = compressedAttribute1.y * SHIFT_RIGHT8;
translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
#endif
#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)
temp = compressedAttribute3.w;
temp = temp * SHIFT_RIGHT12;
vec2 dimensions;
dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12;
dimensions.x = floor(temp);
#endif
#ifdef ALIGNED_AXIS
vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8));
temp = compressedAttribute2.z * SHIFT_RIGHT5;
bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0;
#else
vec3 alignedAxis = vec3(0.0);
bool validAlignedAxis = false;
#endif
vec4 pickColor;
vec4 color;
temp = compressedAttribute2.y;
temp = temp * SHIFT_RIGHT8;
pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
pickColor.r = floor(temp);
temp = compressedAttribute2.x;
temp = temp * SHIFT_RIGHT8;
color.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
color.g = (temp - floor(temp)) * SHIFT_LEFT8;
color.r = floor(temp);
temp = compressedAttribute2.z * SHIFT_RIGHT8;
bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0;
temp = floor(temp) * SHIFT_RIGHT8;
pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
pickColor /= 255.0;
color.a = floor(temp);
color /= 255.0;
///////////////////////////////////////////////////////////////////////////
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
vec4 positionEC = czm_modelViewRelativeToEye * p;
#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK)
float eyeDepth = positionEC.z;
#endif
positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz);
positionEC.xyz *= show;
///////////////////////////////////////////////////////////////////////////
#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE)
float lengthSq;
if (czm_sceneMode == czm_sceneMode2D)
{
// 2D camera distance is a special case
// treat all billboards as flattened to the z=0.0 plane
lengthSq = czm_eyeHeight2D.y;
}
else
{
lengthSq = dot(positionEC.xyz, positionEC.xyz);
}
#endif
#ifdef EYE_DISTANCE_SCALING
float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq);
scale *= distanceScale;
translate *= distanceScale;
// push vertex behind near plane for clipping
if (scale == 0.0)
{
positionEC.xyz = vec3(0.0);
}
#endif
float translucency = 1.0;
#ifdef EYE_DISTANCE_TRANSLUCENCY
translucency = czm_nearFarScalar(translucencyByDistance, lengthSq);
// push vertex behind near plane for clipping
if (translucency == 0.0)
{
positionEC.xyz = vec3(0.0);
}
#endif
#ifdef EYE_DISTANCE_PIXEL_OFFSET
float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq);
pixelOffset *= pixelOffsetScale;
#endif
#ifdef DISTANCE_DISPLAY_CONDITION
float nearSq = compressedAttribute3.x;
float farSq = compressedAttribute3.y;
if (lengthSq < nearSq || lengthSq > farSq)
{
positionEC.xyz = vec3(0.0);
}
#endif
mat2 rotationMatrix;
float mpp;
#ifdef DISABLE_DEPTH_DISTANCE
float disableDepthTestDistance = compressedAttribute3.z;
#endif
#ifdef VERTEX_DEPTH_CHECK
if (lengthSq < disableDepthTestDistance) {
float depthsilon = 10.0;
vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy;
vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
float globeDepth1 = getGlobeDepth(pEC1);
if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1)
{
vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
float globeDepth2 = getGlobeDepth(pEC2);
if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2)
{
vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
float globeDepth3 = getGlobeDepth(pEC3);
if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3)
{
positionEC.xyz = vec3(0.0);
}
}
}
}
#endif
positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
gl_Position = czm_projection * positionEC;
v_textureCoordinates = textureCoordinates;
#ifdef LOG_DEPTH
czm_vertexLogDepth();
#endif
#ifdef DISABLE_DEPTH_DISTANCE
if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)
{
disableDepthTestDistance = czm_minimumDisableDepthTestDistance;
}
if (disableDepthTestDistance != 0.0)
{
// Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w.
float zclip = gl_Position.z / gl_Position.w;
bool clipped = (zclip < -1.0 || zclip > 1.0);
if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance)))
{
// Position z on the near plane.
gl_Position.z = -gl_Position.w;
#ifdef LOG_DEPTH
v_depthFromNearPlusOne = 1.0;
#endif
}
}
#endif
#ifdef FRAGMENT_DEPTH_CHECK
if (sizeInMeters) {
translate /= mpp;
dimensions /= mpp;
imageSize /= mpp;
}
#if defined(ROTATION) || defined(ALIGNED_AXIS)
v_rotationMatrix = rotationMatrix;
#else
v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0);
#endif
float enableDepthCheck = 0.0;
if (lengthSq < disableDepthTestDistance)
{
enableDepthCheck = 1.0;
}
float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12));
float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12));
float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12));
float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12));
v_compressed.x = eyeDepth;
v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck;
v_compressed.z = dw * SHIFT_LEFT12 + dh;
v_compressed.w = iw * SHIFT_LEFT12 + ih;
v_originTextureCoordinateAndTranslate.xy = depthOrigin;
v_originTextureCoordinateAndTranslate.zw = translate;
v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate;
#endif
#ifdef SDF
vec4 outlineColor;
float outlineWidth;
temp = sdf.x;
temp = temp * SHIFT_RIGHT8;
outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
outlineColor.r = floor(temp);
temp = sdf.y;
temp = temp * SHIFT_RIGHT8;
float temp3 = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8;
outlineColor.a = floor(temp);
outlineColor /= 255.0;
v_outlineWidth = outlineWidth / 255.0;
v_outlineColor = outlineColor;
v_outlineColor.a *= translucency;
#endif
v_pickColor = pickColor;
v_color = color;
v_color.a *= translucency;
v_splitDirection = splitDirection;
}
`;var O6e=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),ls=O6e;function jp(e){this._billboardCollection=e,this._id=void 0,this._loadState=ls.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(jp.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===ls.LOADED}},hasImage:{get:function(){return this._loadState!==ls.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});jp.prototype.unload=async function(){this._loadState!==ls.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=ls.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};jp.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===ls.LOADING||t.loadState===ls.LOADED){jp.clone(o,this);return}l(o)||(o=new jp(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=ls.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=ls.ERROR,o._loadError=c,this._id!==e)return;this._loadState=ls.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=ls.FAILED,o._index=-1,this._id!==e)return;this._loadState=ls.FAILED,this._index=-1;return}o._index=r,o._loadState=ls.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=ls.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};jp.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=ls.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=ls.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=ls.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=ls.LOADED,this.dirty=!0};jp.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};jp.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var $g=jp;function hi(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Vt.clone(n)),l(i)&&(i=Vt.clone(i)),l(o)&&(o=Vt.clone(o)),l(r)&&(r=Lt.clone(r)),this._show=y(e.show,!0),this._position=d.clone(y(e.position,d.ZERO)),this._actualPosition=d.clone(this._position),this._pixelOffset=U.clone(y(e.pixelOffset,U.ZERO)),this._translate=new U(0,0),this._eyeOffset=d.clone(y(e.eyeOffset,d.ZERO)),this._heightReference=y(e.heightReference,qe.NONE),this._verticalOrigin=y(e.verticalOrigin,Fn.CENTER),this._horizontalOrigin=y(e.horizontalOrigin,yi.CENTER),this._scale=y(e.scale,1),this._color=z.clone(y(e.color,z.WHITE)),this._rotation=y(e.rotation,0),this._alignedAxis=d.clone(y(e.alignedAxis,d.ZERO)),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=y(e.sizeInMeters,!1),this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=y(e.collection,t),this._pickId=void 0,this._pickPrimitive=y(e._pickPrimitive,this),this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new $g(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Yn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ne.SCENE3D,this._clusterShow=!0,this._outlineColor=z.clone(y(e.outlineColor,z.BLACK)),this._outlineWidth=y(e.outlineWidth,0),this._updateClamping(),this._splitDirection=y(e.splitDirection,Gr.NONE)}var Gse=hi.SHOW_INDEX=0,vB=hi.POSITION_INDEX=1,Xse=hi.PIXEL_OFFSET_INDEX=2,R6e=hi.EYE_OFFSET_INDEX=3,M6e=hi.HORIZONTAL_ORIGIN_INDEX=4,L6e=hi.VERTICAL_ORIGIN_INDEX=5,N6e=hi.SCALE_INDEX=6,Wse=hi.IMAGE_INDEX_INDEX=7,jse=hi.COLOR_INDEX=8,F6e=hi.ROTATION_INDEX=9,B6e=hi.ALIGNED_AXIS_INDEX=10,k6e=hi.SCALE_BY_DISTANCE_INDEX=11,V6e=hi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,U6e=hi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,z6e=hi.DISTANCE_DISPLAY_CONDITION=14,H6e=hi.DISABLE_DEPTH_DISTANCE=15;hi.TEXTURE_COORDINATE_BOUNDS=16;var qse=hi.SDF_INDEX=17,G6e=hi.SPLIT_DIRECTION_INDEX=18;hi.NUMBER_OF_PROPERTIES=19;function $o(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(hi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,$o(this,Gse))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),$o(this,vB))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),$o(this,vB))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;U.equals(t,e)||(U.clone(e,t),$o(this,Xse))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Vt.equals(t,e)||(this._scaleByDistance=Vt.clone(e,t),$o(this,k6e))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Vt.equals(t,e)||(this._translucencyByDistance=Vt.clone(e,t),$o(this,V6e))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;Vt.equals(t,e)||(this._pixelOffsetScaleByDistance=Vt.clone(e,t),$o(this,U6e))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),$o(this,R6e))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,$o(this,M6e))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,$o(this,L6e))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,$o(this,N6e))}},color:{get:function(){return this._color},set:function(e){let t=this._color;z.equals(t,e)||(z.clone(e,t),$o(this,jse))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,$o(this,F6e))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),$o(this,B6e))}},width:{get:function(){return y(this._width,this._imageTexture.width)},set:function(e){this._width!==e&&(this._width=e,$o(this,Wse))}},height:{get:function(){return y(this._height,this._imageTexture.height)},set:function(e){this._height!==e&&(this._height=e,$o(this,Wse))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,$o(this,jse))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Lt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Lt.clone(e,this._distanceDisplayCondition),$o(this,z6e))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,$o(this,H6e))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof Ee?t=e._url:l(e.src)?t=e.src:t=Yn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),$o(this,vB)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,$o(this,Gse))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;z.equals(t,e)||(z.clone(e,t),$o(this,qse))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,$o(this,qse))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,$o(this,G6e))}}});hi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};hi.prototype._updateClamping=function(){hi._updateClamping(this._billboardCollection,this)};var wB=new fe;hi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=y(n.ellipsoid,ee.default),o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===qe.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===qe.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);RT(t._heightReference)&&(t._mode===ne.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),fe.clone(s,wB);let c=n.getHeight(s,t._heightReference);l(c)&&(wB.height=c),a(wB)};hi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};hi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};hi.prototype.setImageTexture=function(e){$g.clone(e,this._imageTexture)};hi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};hi.prototype._setTranslate=function(e){let t=this._translate;U.equals(t,e)||(U.clone(e,t),$o(this,Xse))};hi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};hi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),$o(this,vB)};var Yse=new oe;hi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ne.SCENE3D?t:(F.multiplyByPoint(i,t,Yse),Wi.computeActualEllipsoidPosition(n,Yse))};var Kse=new d;hi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=F.multiplyByPoint(e,t,Kse),a=Wi.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return U.add(a,i,a),a};var SB=new U(0,0);hi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new U),U.clone(this._pixelOffset,SB),U.add(SB,this._translate,SB);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ne.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,wB);o=a.cartographicToCartesian(c,Kse),i=F.IDENTITY}return hi._computeScreenSpacePosition(i,o,this._eyeOffset,SB,e,t)};hi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===yi.RIGHT?s-=i:e.horizontalOrigin===yi.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===Fn.BOTTOM||e.verticalOrigin===Fn.BASELINE?a-=o:e.verticalOrigin===Fn.CENTER&&(a-=o*.5),l(n)||(n=new je),n.x=s,n.y=a,n.width=i,n.height=o,n};hi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&z.equals(this._color,e._color)&&U.equals(this._pixelOffset,e._pixelOffset)&&U.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&Vt.equals(this._scaleByDistance,e._scaleByDistance)&&Vt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Vt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Lt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};hi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var ho=hi;var W6e={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Po=Object.freeze(W6e);var j6e={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},ua=Object.freeze(j6e);function eD({x:e,y:t,width:n,height:i}){this.rectangle=new je(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function HW({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new eD({x:n,y:n,width:e-2*n,height:t-2*n})}HW.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};HW.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new eD({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new eD({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new eD({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new eD({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var tD=HW;var $se=16;function Il(e){var i;e=y(e,y.EMPTY_OBJECT);let t=y(e.borderWidthInPixels,1),n=(i=e.initialSize)!=null?i:new U($se,$se);this._pixelFormat=y(e.pixelFormat,nt.RGBA),this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Yn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(Il.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});Il.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new je),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};Il.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Rt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new Wr({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,p=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],x=h[g];if(!l(m)||!l(x)||l(p.get(g)))continue;let{x:b,y:T,width:C,height:A}=m;a.copyTexSubImage2D(c,0,b,T,x.x,x.y,C,A)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};Il.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((C,A)=>new Zse({index:A,image:C})).filter((C,A)=>l(C.image)&&!l(c.get(A))),f=0,h=0,p=0;for(let C=t;C<o.length;++C){let{width:A,height:E}=o[C].image;f=Math.max(f,A),h=Math.max(h,E),p+=A*E,u.push(o[C])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=P.nextPowerOfTwo(s),a=P.nextPowerOfTwo(a));let g=p,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:C},{image:A})=>A.height*A.width-C.height*C.width);let x=new Array(this._nextIndex);for(let C of this._subRegions.keys())l(c.get(C))&&(x[C]=i[C]);let b,T=!1;for(;!T;){b=new tD({height:a,width:s,borderPadding:n});let C;for(C=0;C<u.length;++C){let{index:A,image:E}=u[C];if(!l(E))continue;let v=b.pack(A,E);if(!l(v)){s>a?a*=2:s*=2;break}x[A]=v.rectangle}T=C===u.length}this._texturePacker=b,this._texture=this._copyFromTexture(e,s,a,x),r.destroy(),this._rectangles=x,this._guid=Yn()};Il.prototype.getImageIndex=function(e){return this._indexById.get(e)};Il.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function Zse({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}Il.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new Zse({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};Il.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};Il.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Rt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new tD({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function q6e(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof Ee)&&(e=Ee.createIfNeeded(e).fetchImage()),e}Il.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await q6e(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};Il.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new se(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};Il.prototype.isDestroyed=function(){return!1};Il.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var iA=Il;var Y6e=ho.SHOW_INDEX,nD=ho.POSITION_INDEX,Qse=ho.PIXEL_OFFSET_INDEX,Jse=ho.EYE_OFFSET_INDEX,X6e=ho.HORIZONTAL_ORIGIN_INDEX,K6e=ho.VERTICAL_ORIGIN_INDEX,$6e=ho.SCALE_INDEX,Fx=ho.IMAGE_INDEX_INDEX,eae=ho.COLOR_INDEX,Z6e=ho.ROTATION_INDEX,Q6e=ho.ALIGNED_AXIS_INDEX,tae=ho.SCALE_BY_DISTANCE_INDEX,nae=ho.TRANSLUCENCY_BY_DISTANCE_INDEX,iae=ho.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,oae=ho.DISTANCE_DISPLAY_CONDITION,J6e=ho.DISABLE_DEPTH_DISTANCE,e9e=ho.TEXTURE_COORDINATE_BOUNDS,rae=ho.SDF_INDEX,sae=ho.SPLIT_DIRECTION_INDEX,KW=ho.NUMBER_OF_PROPERTIES,co,t9e={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},n9e={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function Cf(e){e=y(e,y.EMPTY_OBJECT),this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new iA),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(KW),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new ce,this._baseVolumeWC=new ce,this._baseVolume2D=new ce,this._boundingVolume=new ce,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=F.clone(F.IDENTITY),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.debugShowTextureAtlas=y(e.debugShowTextureAtlas,!1),this.blendOption=y(e.blendOption,Po.OPAQUE_AND_TRANSLUCENT),this._blendOption=void 0,this._mode=ne.SCENE3D,this._buffersUsage=[ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW],this._highlightColor=z.clone(z.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(Cf.prototype,{length:{get:function(){return $W(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function aae(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Cf.prototype.add=function(e){let t=new ho(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};Cf.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Cf.prototype.removeAll=function(){aae(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function $W(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}Cf.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};Cf.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};Cf.prototype.get=function(e){return $W(this),this._billboards[e]};var GW;function i9e(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Tt.createIndexBuffer({context:e,typedArray:o,usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function o9e(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Tt.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function r9e(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Tt.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:ke.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}Cf.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<KW;++i){let o=n[i]===0?ke.STATIC_DRAW:ke.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function s9e(e,t,n,i,o,r){let s=[{index:co.positionHighAndScale,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[nD]},{index:co.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[nD]},{index:co.compressedAttribute0,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Qse]},{index:co.compressedAttribute1,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[nae]},{index:co.compressedAttribute2,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[eae]},{index:co.eyeOffset,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Jse]},{index:co.scaleByDistance,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[tae]},{index:co.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[iae]},{index:co.compressedAttribute3,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[oae]},{index:co.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[e9e]},{index:co.splitDirection,componentsPerAttribute:1,componentDatatype:X.FLOAT,usage:n[sae]}];i&&s.push({index:co.direction,componentsPerAttribute:2,componentDatatype:X.FLOAT,vertexBuffer:r9e(e)}),l(o)&&s.push({index:co.a_batchId,componentsPerAttribute:1,componentDatatype:X.FLOAT,bufferUsage:ke.STATIC_DRAW}),r&&s.push({index:co.sdf,componentsPerAttribute:2,componentDatatype:X.FLOAT,usage:n[rae]});let a=i?t:4*t;return new Kg(e,s,a,i)}var WW=new Wn;function cae(e,t,n,i){let o,r=n[co.positionHighAndScale],s=n[co.positionLowAndRotation],a=i._getActualPosition();e._mode===ne.SCENE3D&&(ce.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),Wn.fromCartesian(a,WW);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=WW.high,h=WW.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var Pl=new U,Tf=32768,oA=65536,jW=4096,lm=256,a9e=128,c9e=32,l9e=8,lae=4,u9e=1/256,uae=0,fae=2,dae=3,hae=1,ZW=new je;function mae(e,t,n,i){let o,r=n[co.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let p=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===Fn.BASELINE&&(g=Fn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&p===yi.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===Fn.CENTER;let x=0,b=0,T=0,C=0;if(i.ready){let L=i.computeTextureCoordinates(ZW);x=L.x,b=L.y,T=L.width,C=L.height}let A=x+T,E=b+C,v=Math.floor(P.clamp(a,-Tf,Tf)+Tf)*a9e;v+=(p+1)*c9e,v+=(g+1)*l9e,v+=(m?1:0)*lae;let D=Math.floor(P.clamp(c,-Tf,Tf)+Tf)*lm,R=Math.floor(P.clamp(f,-Tf,Tf)+Tf)*lm,O=(P.clamp(h,-Tf,Tf)+Tf)*u9e,M=Math.floor(O),N=Math.floor((O-M)*lm);D+=M,R+=N,Pl.x=x,Pl.y=b;let _=Bn.compressTextureCoordinates(Pl);Pl.x=A;let S=Bn.compressTextureCoordinates(Pl);Pl.y=E;let w=Bn.compressTextureCoordinates(Pl);Pl.x=x;let I=Bn.compressTextureCoordinates(Pl);e._instanced?(o=i._index,r(o,v,D,R,_)):(o=i._index*4,r(o+0,v+uae,D,R,_),r(o+1,v+fae,D,R,S),r(o+2,v+dae,D,R,w),r(o+3,v+hae,D,R,I))}function pae(e,t,n,i){var x;let o,r=n[co.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let p=(x=i.width)!=null?x:0;e._maxSize=Math.max(e._maxSize,p);let g=P.clamp(p,0,oA),m=0;Math.abs(d.magnitudeSquared(s)-1)<P.EPSILON6&&(m=Bn.octEncodeFloat(s)),c=P.clamp(c,0,1),c=c===1?255:c*255|0,g=g*lm+c,f=P.clamp(f,0,1),f=f===1?255:f*255|0,m=m*lm+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function YW(e,t,n,i){var A;let o,r=n[co.compressedAttribute2],s=i.color,a=l(e._batchTable)?z.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<P.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=(A=i.height)!=null?A:0;e._maxSize=Math.max(e._maxSize,f);let h=y(i._labelHorizontalOrigin,-2);h+=2;let p=f*lae+h,g=z.floatToByte(s.red),m=z.floatToByte(s.green),x=z.floatToByte(s.blue),b=g*oA+m*lm+x;g=z.floatToByte(a.red),m=z.floatToByte(a.green),x=z.floatToByte(a.blue);let T=g*oA+m*lm+x,C=z.floatToByte(s.alpha)*oA+z.floatToByte(a.alpha)*lm;C+=c*2+u,e._instanced?(o=i._index,r(o,b,T,C,p)):(o=i._index*4,r(o+0,b,T,C,p),r(o+1,b,T,C,p),r(o+2,b,T,C,p),r(o+3,b,T,C,p))}function XW(e,t,n,i){let o,r=n[co.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==qe.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if(Pl.x=0,Pl.y=0,i.ready){let u=i.computeTextureCoordinates(ZW);Pl.x=u.width,Pl.y=u.height}let c=Bn.compressTextureCoordinates(Pl);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function _ae(e,t,n,i){let o,r=n[co.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function gae(e,t,n,i){let o,r=n[co.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function yae(e,t,n,i){var b,T;let o,r=n[co.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=Qu(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,p;l(i._labelDimensions)?(p=i._labelDimensions.x,h=i._labelDimensions.y):(p=(b=i.width)!=null?b:0,h=(T=i.height)!=null?T:0);let g=Math.floor(P.clamp(p,0,jW)),m=Math.floor(P.clamp(h,0,jW)),x=g*jW+m;e._instanced?(o=i._index,r(o,s,a,u,x)):(o=i._index*4,r(o+0,s,a,u,x),r(o+1,s,a,u,x),r(o+2,s,a,u,x),r(o+3,s,a,u,x))}function xae(e,t,n,i){if(Qu(i.heightReference)){let p=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,x=l(p.globe)&&p.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&x}let o,r=n[co.textureCoordinateBoundsOrLabelTranslate];if(kt.maximumVertexTextureImageUnits>0){let p=0,g=0;l(i._labelTranslate)&&(p=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,p,g,0,0)):(o=i._index*4,r(o+0,p,g,0,0),r(o+1,p,g,0,0),r(o+2,p,g,0,0),r(o+3,p,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let p=i.computeTextureCoordinates(ZW);s=p.x,a=p.y,c=p.width,u=p.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function f9e(e,t,n,i){if(!l(e._batchTable))return;let o=n[co.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function bae(e,t,n,i){if(!e._sdf)return;let o,r=n[co.sdf],s=i.outlineColor,a=i.outlineWidth,c=z.floatToByte(s.red),u=z.floatToByte(s.green),f=z.floatToByte(s.blue),h=c*oA+u*lm+f,p=a/ua.RADIUS,g=z.floatToByte(s.alpha)*oA+z.floatToByte(p)*lm;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+uae,g),r(o+1,h+fae,g),r(o+2,h+dae,g),r(o+3,h+hae,g))}function Tae(e,t,n,i){let o=n[co.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function d9e(e,t,n,i){cae(e,t,n,i),mae(e,t,n,i),pae(e,t,n,i),YW(e,t,n,i),XW(e,t,n,i),_ae(e,t,n,i),gae(e,t,n,i),yae(e,t,n,i),xae(e,t,n,i),f9e(e,t,n,i),bae(e,t,n,i),Tae(e,t,n,i)}function qW(e,t,n,i,o,r){let s;i.mode===ne.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ho._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):ce.expand(s,h,s))}r&&ce.fromPoints(a,s)}function h9e(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ne.SCENE3D&&!F.equals(r,e.modelMatrix)?(e._mode=n,F.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ne.SCENE3D||n===ne.SCENE2D||n===ne.COLUMBUS_VIEW)&&qW(e,i,i.length,t,r,!0)):n===ne.MORPHING?qW(e,i,i.length,t,r,!0):(n===ne.SCENE2D||n===ne.COLUMBUS_VIEW)&&qW(e,o,e._billboardsToUpdateIndex,t,r,!1)}function m9e(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function p9e(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture;
in vec2 v_textureCoordinates;
void main()
{
out_FragColor = texture(billboard_texture, v_textureCoordinates);
}
`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=ve.OVERLAY,i}var _9e=[];Cf.prototype.update=function(e){if($W(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,co=this._instanced?n9e:t9e,GW=this._instanced?o9e:i9e;let n=this._billboards,i=n.length,o=!0;for(let O=0;O<i;++O){let M=n[O];l(M.loadError)&&(console.error(`Error loading image for billboard: ${M.loadError}`),M.image=void 0),M.textureDirty&&this._updateBillboard(M,Fx),M.show&&(o=o&&M.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;h9e(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,p=e.passes,g=p.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let O=0;O<KW;++O)c[O]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=s9e(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let O=0;O<i;++O){let M=this._billboards[O];M._dirty=!1,M.textureDirty=!1,d9e(this,e,h,M)}this._vaf.commit(GW(t))}this._billboardsToUpdateIndex=0}else if(a>0){let O=_9e;O.length=0,(c[nD]||c[Z6e]||c[$6e])&&O.push(cae),(c[Fx]||c[Qse]||c[X6e]||c[K6e]||c[Y6e])&&(O.push(mae),this._instanced&&O.push(XW)),(c[Fx]||c[Q6e]||c[nae])&&(O.push(pae),O.push(YW)),(c[Fx]||c[eae])&&O.push(YW),(c[Fx]||c[Jse])&&O.push(XW),c[tae]&&O.push(_ae),c[iae]&&O.push(gae),(c[oae]||c[J6e]||c[Fx]||c[nD])&&O.push(yae),(c[Fx]||c[nD])&&O.push(xae),c[rae]&&O.push(bae),c[sae]&&O.push(Tae);let M=O.length;if(h=this._vaf.writers,a/i>.1){for(let N=0;N<a;++N){let _=s[N];_._dirty=!1,_.textureDirty=!1;for(let S=0;S<M;++S)O[S](this,e,h,_)}this._vaf.commit(GW(t))}else{for(let N=0;N<a;++N){let _=s[N];_._dirty=!1,_.textureDirty=!1;for(let S=0;S<M;++S)O[S](this,e,h,_);this._instanced?this._vaf.subCommit(_._index,1):this._vaf.subCommit(_._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ce.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,x=F.IDENTITY;e.mode===ne.SCENE3D?(x=this.modelMatrix,m=ce.clone(this._baseVolumeWC,this._boundingVolume)):m=ce.clone(this._baseVolume2D,this._boundingVolume),m9e(this,e,m);let b=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,b){this._blendOption===Po.OPAQUE||this._blendOption===Po.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ve.fromCache({depthTest:{enabled:!0,func:te.LESS},depthMask:!0}):this._rsOpaque=void 0;let O=this._blendOption===Po.TRANSLUCENT;this._blendOption===Po.TRANSLUCENT||this._blendOption===Po.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ve.fromCache({depthTest:{enabled:!0,func:O?te.LEQUAL:te.LESS},depthMask:O,blending:fn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let T,C,A,E,v,D=kt.maximumVertexTextureImageUnits>0;if(b||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){T=EB,C=AB,v=[],l(this._batchTable)&&(v.push("VECTOR_TILE"),T=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(T),C=this._batchTable.getFragmentShaderCallback(!1,void 0)(C)),A=new Ue({defines:v,sources:[T]}),this._instanced&&A.defines.push("INSTANCED"),this._shaderRotation&&A.defines.push("ROTATION"),this._shaderAlignedAxis&&A.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&A.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&A.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&A.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&A.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&A.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(D?A.defines.push("VERTEX_DEPTH_CHECK"):A.defines.push("FRAGMENT_DEPTH_CHECK"));let O=1-ua.CUTOFF;this._sdf&&A.defines.push("SDF");let M=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Po.OPAQUE_AND_TRANSLUCENT&&(E=new Ue({defines:["OPAQUE",M],sources:[C]}),this._shaderClampToGround&&(D?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(E.defines.push("SDF"),E.defines.push(`SDF_EDGE ${O}`)),this._sp=Jt.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:A,fragmentShaderSource:E,attributeLocations:co}),E=new Ue({defines:["TRANSLUCENT",M],sources:[C]}),this._shaderClampToGround&&(D?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(E.defines.push("SDF"),E.defines.push(`SDF_EDGE ${O}`)),this._spTranslucent=Jt.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:A,fragmentShaderSource:E,attributeLocations:co})),this._blendOption===Po.OPAQUE&&(E=new Ue({defines:[M],sources:[C]}),this._shaderClampToGround&&(D?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(E.defines.push("SDF"),E.defines.push(`SDF_EDGE ${O}`)),this._sp=Jt.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:A,fragmentShaderSource:E,attributeLocations:co})),this._blendOption===Po.TRANSLUCENT&&(E=new Ue({defines:[M],sources:[C]}),this._shaderClampToGround&&(D?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(E.defines.push("SDF"),E.defines.push(`SDF_EDGE ${O}`)),this._spTranslucent=Jt.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:A,fragmentShaderSource:E,attributeLocations:co})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let R=e.commandList;if(p.render||p.pick){let O=this._colorCommands,M=this._blendOption===Po.OPAQUE,N=this._blendOption===Po.OPAQUE_AND_TRANSLUCENT,_=this._vaf.va,S=_.length,w=this._uniforms,I;l(this._batchTable)?(w=this._batchTable.getUniformMapCallback()(w),I=this._batchTable.getPickId()):I="v_pickColor",O.length=S;let L=N?S*2:S;for(let B=0;B<L;++B){let H=O[B];l(H)||(H=O[B]=new Qe);let V=M||N&&B%2===0;H.pass=V||!N?ve.OPAQUE:ve.TRANSLUCENT,H.owner=this;let G=N?Math.floor(B/2):B;H.boundingVolume=m,H.modelMatrix=x,H.count=_[G].indicesCount,H.shaderProgram=V?this._sp:this._spTranslucent,H.uniformMap=w,H.vertexArray=_[G].va,H.renderState=V?this._rsOpaque:this._rsTranslucent,H.debugShowBoundingVolume=this.debugShowBoundingVolume,H.pickId=I,this._instanced&&(H.count=6,H.instanceCount=i),R.push(H)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=p9e(this,e.context)),R.push(this.debugCommand))}this._allBillboardsReady=o};Cf.prototype.isDestroyed=function(){return!1};Cf.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),aae(this._billboards),ue(this)};var Af=Cf;function g9e(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var rA=g9e;function fa(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),sA(this)}var y9e=new fe;Object.defineProperties(fa.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=z.clone(e,this._color),sA(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,sA(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=z.clone(e,this._pointOutlineColor),sA(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,sA(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=y(this._heightOffset,0),n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,y9e);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=z.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&sA(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});fa.defaultColor=z.WHITE;fa.defaultPointOutlineColor=z.BLACK;fa.defaultPointOutlineWidth=0;fa.defaultPointSize=8;function sA(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=y(e._color,fa.defaultColor),i=y(e._pointOutlineColor,fa.defaultPointOutlineColor),o=y(e._pointOutlineWidth,fa.defaultPointOutlineWidth),r=y(e._pointSize,fa.defaultPointSize),s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(z.equals(n,s)&&z.equals(i,a)&&o===c&&r===u)return;e._billboardColor=z.clone(n,e._billboardColor),e._billboardOutlineColor=z.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),p=i.toCssColorString(),g=JSON.stringify([h,r,p,o]);t.setImage(g,rA(f,h,p,o,r))}fa.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};fa.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};fa.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};fa.prototype.getPropertyInherited=function(e){return sa.getPropertyInherited(this._content,this._batchId,e)};fa.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};fa.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};fa.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};fa.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Zg=fa;function x9e(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,p=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,p)),o&&(g.fillStyle="black",g.fillText(t,u/2,p));let m=g.getImageData(0,0,f,h).data,x=m.length,b=f*4,T,C,A,E;for(T=0;T<x;++T)if(m[T]!==255){A=T/b|0;break}for(T=x-1;T>=0;--T)if(m[T]!==255){E=T/b|0;break}let v=-1;for(T=0;T<f&&v===-1;++T)for(C=0;C<h;++C){let D=T*4+C*b;if(m[D]!==255||m[D+1]!==255||m[D+2]!==255||m[D+3]!==255){v=T;break}}return{width:r.width,height:E-A,ascent:p-A,descent:E-p,minx:v-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var Bx;function b9e(e,t){if(e==="")return;t=y(t,y.EMPTY_OBJECT);let n=y(t.font,"10px sans-serif"),i=y(t.stroke,!1),o=y(t.fill,!0),r=y(t.strokeWidth,1),s=y(t.backgroundColor,z.TRANSPARENT),a=y(t.padding,0),c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(Bx)||(l(f.imageSmoothingEnabled)?Bx="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?Bx="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?Bx="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(Bx="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[Bx]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=x9e(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let p=-h.minx,g=Math.ceil(h.width)+p+c,m=h.height+c,x=m-h.ascent+a,b=m-x+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[Bx]=!1,s!==z.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let T=y(t.strokeColor,z.BLACK);f.strokeStyle=T.toCssColorString(),f.strokeText(e,p+a,b)}if(o){let T=y(t.fillColor,z.WHITE);f.fillStyle=T.toCssColorString(),f.fillText(e,p+a,b)}return u}var aA=b9e;var Mae=Hr(Sae(),1);var C9e={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},Zo=Object.freeze(C9e);var vae={},wae=0,A9e=256,E9e=new z(.165,.165,.165,.8),S9e=new U(7,5),us=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function kx(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function oD(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function rD(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function Iae(e){let t=vae[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(rD(n,"line-height"));isNaN(i)&&(i=void 0),t={family:rD(n,"font-family"),size:rD(n,"font-size").replace("px",""),style:rD(n,"font-style"),weight:rD(n,"font-weight"),lineHeight:i},document.body.removeChild(n),wae<A9e&&(vae[e._font]=t,wae++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Pd(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Vt.clone(n)),l(i)&&(i=Vt.clone(i)),l(o)&&(o=Vt.clone(o)),l(r)&&(r=Lt.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=y(e.show,!0),this._font=y(e.font,"30px sans-serif"),this._fillColor=z.clone(y(e.fillColor,z.WHITE)),this._outlineColor=z.clone(y(e.outlineColor,z.BLACK)),this._outlineWidth=y(e.outlineWidth,1),this._showBackground=y(e.showBackground,!1),this._backgroundColor=z.clone(y(e.backgroundColor,E9e)),this._backgroundPadding=U.clone(y(e.backgroundPadding,S9e)),this._style=y(e.style,Zo.FILL),this._verticalOrigin=y(e.verticalOrigin,Fn.BASELINE),this._horizontalOrigin=y(e.horizontalOrigin,yi.LEFT),this._pixelOffset=U.clone(y(e.pixelOffset,U.ZERO)),this._eyeOffset=d.clone(y(e.eyeOffset,d.ZERO)),this._position=d.clone(y(e.position,d.ZERO)),this._scale=y(e.scale,1),this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=y(e.heightReference,qe.NONE),this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=y(e.text,""),this._relativeSize=1,Iae(this),this._updateClamping()}Object.defineProperties(Pd.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),oD(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Pd.filterUnsupportedCharacters(e);this._renderedText=Pd.enableRightToLeftDetection?O9e(t):t,kx(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,kx(this),Iae(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;z.equals(t,e)||(z.clone(e,t),kx(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;z.equals(t,e)||(z.clone(e,t),kx(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,kx(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,kx(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!z.equals(t,e)){z.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;U.equals(t,e)||(U.clone(e,t),oD(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,kx(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!U.equals(t,e)){U.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!Vt.equals(t,e)){this._translucencyByDistance=Vt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!Vt.equals(t,e)){this._pixelOffsetScaleByDistance=Vt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!Vt.equals(t,e)){this._scaleByDistance=Vt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,oD(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),oD(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),oD(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Lt.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Lt.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Pd.prototype._updateClamping=function(){ho._updateClamping(this._labelCollection,this)};Pd.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new U);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return ho._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Pd.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===Fn.BOTTOM||e.verticalOrigin===Fn.BASELINE?o-=s:e.verticalOrigin===Fn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,p=h.length;for(let g=0;g<p;++g){let m=h[g],x=m.billboard;if(!l(x))continue;let b=t.x+x._translate.x,T=t.y-x._translate.y,C=m.dimensions.width*a,A=m.dimensions.height*a;e.verticalOrigin===Fn.BOTTOM||e.verticalOrigin===Fn.BASELINE?T-=A:e.verticalOrigin===Fn.CENTER&&(T-=A*.5),e._verticalOrigin===Fn.TOP?T+=ua.PADDING*a:(e._verticalOrigin===Fn.BOTTOM||e._verticalOrigin===Fn.BASELINE)&&(T-=ua.PADDING*a),i=Math.min(i,b),o=Math.min(o,T),u=Math.max(u,b+C),f=Math.max(f,T+A)}r=u-i,s=f-o}return l(n)||(n=new je),n.x=i,n.y=o,n.width=r,n.height=s,n};Pd.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Pd.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&z.equals(this._fillColor,e._fillColor)&&z.equals(this._outlineColor,e._outlineColor)&&z.equals(this._backgroundColor,e._backgroundColor)&&U.equals(this._backgroundPadding,e._backgroundPadding)&&U.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&Vt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Vt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Vt.equals(this._scaleByDistance,e._scaleByDistance)&&Lt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Pd.prototype.isDestroyed=function(){return!1};Pd.enableRightToLeftDetection=!1;function v9e(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=us.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=us.RTL:n.test(f)?a=us.LTR:i.test(f)?a=us.BRACKETS:a=us.WEAK,u===0&&(s=a),s===a&&a!==us.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function w9e(e){return e.split("").reverse().join("")}function sD(e,t,n){return e.slice(0,t)+n+e.slice(t)}function D9e(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var I9e="\u05D0-\u05EA",P9e="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",Dae=new RegExp(`[${I9e}${P9e}]`);function O9e(e){let t=e.split(`
`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=Dae.test(o.charAt(0)),s=v9e(o,Dae),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===us.BRACKETS?D9e(f.Word):w9e(f.Word);r?f.Type===us.RTL?(c=h+c,a=0):f.Type===us.LTR?(c=sD(c,a,f.Word),a+=f.Word.length):(f.Type===us.WEAK||f.Type===us.BRACKETS)&&(f.Type===us.WEAK&&s[u-1].Type===us.BRACKETS?c=h+c:s[u-1].Type===us.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===us.RTL?(c=h+c,a=0):(c=sD(c,a,f.Word),a+=f.Word.length):c=sD(c,0,h)):f.Type===us.RTL?c=sD(c,a,h):f.Type===us.LTR?(c+=f.Word,a=c.length):(f.Type===us.WEAK||f.Type===us.BRACKETS)&&(u>0&&s[u-1].Type===us.RTL?s.length>u+1?s[u+1].Type===us.RTL?c=sD(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=`
`)}return n}var Vx=Pd;var Lae=Hr(Pae(),1);function M9e(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var L9e=1.2,Oae="ID_WHITE_PIXEL",QW=new U(4,4),N9e=new je(1,1,1,1);function F9e(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=QW.x,o.height=QW.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(Oae,o),n.addImageSubRegion(Oae,N9e)}let i=e.add({collection:t});return i.setImageTexture(n),i}var qp={};function B9e(e,t,n,i,o,r){return qp.font=t,qp.fillColor=n,qp.strokeColor=i,qp.strokeWidth=o,qp.padding=ua.PADDING,qp.fill=r===Zo.FILL||r===Zo.FILL_AND_OUTLINE,qp.stroke=r===Zo.OUTLINE||r===Zo.FILL_AND_OUTLINE,qp.backgroundColor=z.BLACK,aA(e,qp)}function JW(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var k9e=new Lae.default,V9e=/\s/;function U9e(e,t){let n=t._renderedText,i=k9e.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/ua.FONT_SIZE,o<s)for(let g=o;g<s;++g)JW(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(`
`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=F9e(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=yi.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,p=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],x=t._verticalOrigin,b=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+x]),T=p[b],C=h.get(b);if(!l(C)||!l(T)){C=new $g(f),h.set(b,C);let D=`${t._fontStyle} ${t._fontWeight} ${ua.FONT_SIZE}px ${t._fontFamily}`,R=B9e(m,D,z.WHITE,z.WHITE,0,Zo.FILL);if(T=R.dimensions,p[b]=T,R.width>0&&R.height>0&&!V9e.test(m)){let O=(0,Mae.default)(R,{cutoff:ua.CUTOFF,radius:ua.RADIUS}),M=R.getContext("2d"),N=R.width,_=R.height,S=M.getImageData(0,0,N,_);for(let w=0;w<N;w++)for(let I=0;I<_;I++){let L=I*N+w,B=O[L]*255,H=L*4;S.data[H+0]=B,S.data[H+1]=B,S.data[H+2]=B,S.data[H+3]=B}M.putImageData(S,0,0),C.loadImage(b,R)}}let A=r[g];if(l(A)||(A=new M9e,A.dimensions=T,A.billboardTexture=C,r[g]=A),A.billboardTexture.id!==b&&(A.billboardTexture=C,A.dimensions=T),!C.hasImage){JW(e,A);continue}let E=A.billboard,v=e._spareBillboards;l(E)||(v.length>0?E=v.pop():(E=f.add({collection:e}),E._labelDimensions=new U,E._labelTranslate=new U),A.billboard=E),E.setImageTexture(C),E.show=t._show,E.position=t._position,E.eyeOffset=t._eyeOffset,E.pixelOffset=t._pixelOffset,E.horizontalOrigin=yi.LEFT,E.verticalOrigin=t._verticalOrigin,E.heightReference=t._heightReference,E.scale=t.totalScale,E.pickPrimitive=t,E.id=t._id,E.translucencyByDistance=t._translucencyByDistance,E.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,E.scaleByDistance=t._scaleByDistance,E.distanceDisplayCondition=t._distanceDisplayCondition,E.disableDepthTestDistance=t._disableDepthTestDistance,E._batchIndex=t._batchIndex,E.outlineColor=t.outlineColor,t.style===Zo.FILL_AND_OUTLINE?(E.color=t._fillColor,E.outlineWidth=t.outlineWidth):t.style===Zo.FILL?(E.color=t._fillColor,E.outlineWidth=0):t.style===Zo.OUTLINE&&(E.color=z.TRANSPARENT,E.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function Rae(e,t,n){return t===yi.CENTER?-e/2:t===yi.RIGHT?-(e+n.x):n.x}var lr=new U,z9e=new U;function H9e(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=U.clone(l(f)?e._backgroundPadding:U.ZERO,z9e);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let M=0;M<u;++M){if(n.charAt(M)===`
`){r.push(i),++c,i=0;continue}let _=t[M].dimensions;l(_)&&(a=Math.max(a,_.height-_.descent),s=Math.max(s,_.descent),i+=_.width-_.minx,M<u-1&&(i+=t[M+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let p=a+s,g=e.totalScale,m=e._horizontalOrigin,x=e._verticalOrigin,b=0,T=r[b],C=Rae(T,m,h),A=(l(e._lineHeight)?e._lineHeight:L9e*e._fontSize)/e._relativeSize,E=A*(c-1),v=o,D=p+E;l(f)&&(v+=h.x*2,D+=h.y*2,f._labelHorizontalOrigin=m),lr.x=C*g,lr.y=0;let R=!0,O=0;for(let M=0;M<u;++M){if(n.charAt(M)===`
`){++b,O+=A,T=r[b],C=Rae(T,m,h),lr.x=C*g,R=!0;continue}let N=t[M],_=N.dimensions;if(l(_)&&(x===Fn.TOP?(lr.y=_.height-a-h.y,lr.y+=ua.PADDING):x===Fn.CENTER?lr.y=(E+_.height-a)/2:x===Fn.BASELINE?(lr.y=E,lr.y-=ua.PADDING):(lr.y=E+s+h.y,lr.y-=ua.PADDING),lr.y=(lr.y-_.descent-O)*g,R&&(lr.x-=ua.PADDING*g,R=!1),l(N.billboard)&&(N.billboard._setTranslate(lr),N.billboard._labelDimensions.x=v,N.billboard._labelDimensions.y=D,N.billboard._labelHorizontalOrigin=m),M<u-1)){let S=t[M+1];lr.x+=(_.width-_.minx+S.dimensions.minx)*g}}if(l(f)&&n.split(`
`).join("").length>0&&(m===yi.CENTER?C=-o/2-h.x:m===yi.RIGHT?C=-(o+h.x*2):C=0,lr.x=C*g,x===Fn.TOP?lr.y=p-a-s:x===Fn.CENTER?lr.y=(p-a)/2-s:x===Fn.BASELINE?lr.y=-h.y-s:lr.y=0,lr.y=lr.y*g,f.width=v,f.height=D,f._setTranslate(lr),f._labelTranslate=U.clone(lr,f._labelTranslate)),Qu(e.heightReference))for(let M=0;M<u;++M){let _=t[M].billboard;l(_)&&(_._labelTranslate=U.clone(lr,_._labelTranslate))}}function Nae(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)JW(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function um(e){e=y(e,y.EMPTY_OBJECT),this._scene=e.scene,this._batchTable=e.batchTable;let t=new Af({scene:this._scene,textureAtlas:new iA({initialSize:QW})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new $g(t),this._glyphBillboardCollection=new Af({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=z.clone(z.WHITE),this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.blendOption=y(e.blendOption,Po.OPAQUE_AND_TRANSLUCENT)}Object.defineProperties(um.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});um.prototype.add=function(e){let t=new Vx(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};um.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),Nae(this,e),!0}return!1};um.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)Nae(this,e[t]);e.length=0};um.prototype.contains=function(e){return l(e)&&e._labelCollection===this};um.prototype.get=function(e){return this._labels[e]};um.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(U9e(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(H9e(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Po.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};um.prototype.isDestroyed=function(){return!1};um.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var Yp=um;var IB=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec3 position2DHigh;
in vec3 position2DLow;
in vec3 prevPosition3DHigh;
in vec3 prevPosition3DLow;
in vec3 prevPosition2DHigh;
in vec3 prevPosition2DLow;
in vec3 nextPosition3DHigh;
in vec3 nextPosition3DLow;
in vec3 nextPosition2DHigh;
in vec3 nextPosition2DLow;
in vec4 texCoordExpandAndBatchIndex;
out vec2 v_st;
out float v_width;
out vec4 v_pickColor;
out float v_polylineAngle;
void main()
{
float texCoord = texCoordExpandAndBatchIndex.x;
float expandDir = texCoordExpandAndBatchIndex.y;
bool usePrev = texCoordExpandAndBatchIndex.z < 0.0;
float batchTableIndex = texCoordExpandAndBatchIndex.w;
vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex);
float width = widthAndShow.x + 0.5;
float show = widthAndShow.y;
if (width < 1.0)
{
show = 0.0;
}
vec4 pickColor = batchTable_getPickColor(batchTableIndex);
vec4 p, prev, next;
if (czm_morphTime == 1.0)
{
p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz);
prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz);
next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz);
}
else if (czm_morphTime == 0.0)
{
p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy);
prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy);
next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy);
}
else
{
p = czm_columbusViewMorph(
czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),
czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz),
czm_morphTime);
prev = czm_columbusViewMorph(
czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy),
czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz),
czm_morphTime);
next = czm_columbusViewMorph(
czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy),
czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz),
czm_morphTime);
}
#ifdef DISTANCE_DISPLAY_CONDITION
vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex);
vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex);
vec3 centerLow = centerLowAndRadius.xyz;
float radius = centerLowAndRadius.w;
vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex);
float lengthSq;
if (czm_sceneMode == czm_sceneMode2D)
{
lengthSq = czm_eyeHeight2D.y;
}
else
{
vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz);
lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius);
}
float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x;
float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y;
if (lengthSq < nearSq || lengthSq > farSq)
{
show = 0.0;
}
#endif
float polylineAngle;
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle);
gl_Position = czm_viewportOrthographic * positionWC * show;
v_st.s = texCoord;
v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w);
v_width = width;
v_pickColor = pickColor;
v_polylineAngle = polylineAngle;
}
`;var Wc={};Wc.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};Wc.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var G9e=new fe;Wc.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,G9e).height}return i};var W9e=new F,j9e=new d,Fae=new d,q9e=new sn(d.UNIT_X,0),Bae=new d,Y9e=new sn(d.UNIT_X,0),X9e=new d,K9e=new d,tj=[];function Vae(e,t,n){let i=tj;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var OB=new fe,PB=new fe,Qg=new d,nj=new d,$9e=new d,ej=new tg,aD=new $a;function Z9e(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,nj),u=i.scaleToGeodeticSurface(t,$9e),f=Wc.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,OB),p=i.cartesianToCartographic(u,PB),g=Vae(f,o,r);ej.setEndPoints(h,p);let m=ej.surfaceDistance/f,x=a;h.height=o;let b=i.cartographicToCartesian(h,Qg);d.pack(b,s,x),x+=3;for(let T=1;T<f;T++){let C=ej.interpolateUsingSurfaceDistance(T*m,PB);C.height=g[T],b=i.cartographicToCartesian(C,Qg),d.pack(b,s,x),x+=3}return x}function Q9e(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,OB),u=i.cartesianToCartographic(t,PB),f=Wc.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=Vae(f,o,r);aD.ellipsoid.equals(i)||(aD=new $a(void 0,void 0,i)),aD.setEndPoints(c,u);let p=aD.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,Qg);d.pack(m,s,g),g+=3;for(let x=1;x<f;x++){let b=aD.interpolateUsingSurfaceDistance(x*p,PB);b.height=h[x],m=i.cartographicToCartesian(b,Qg),d.pack(m,s,g),g+=3}return g}Wc.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=y(t,F.IDENTITY);let o=F.inverseTransformation(t,W9e),r=F.multiplyByPoint(o,d.ZERO,j9e),s=d.normalize(F.multiplyByPointAsVector(o,d.UNIT_Y,Fae),Fae),a=sn.fromPointNormal(r,s,q9e),c=d.normalize(F.multiplyByPointAsVector(o,d.UNIT_X,Bae),Bae),u=sn.fromPointNormal(r,c,Y9e),f=1;n.push(d.clone(e[0]));let h=n[0],p=e.length;for(let g=1;g<p;++g){let m=e[g];if(sn.getPointDistance(u,h)<0||sn.getPointDistance(u,m)<0){let x=ti.lineSegmentPlane(h,m,a,X9e);if(l(x)){let b=d.multiplyByScalar(s,5e-9,K9e);sn.getPointDistance(a,h)<0&&d.negate(b,b),n.push(d.add(x,b,new d)),i.push(f+1),d.negate(b,b),n.push(d.add(x,b,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};Wc.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=y(e.ellipsoid,ee.default),o=y(e.height,0),r=Array.isArray(o);if(n<1)return[];if(n===1){let x=i.scaleToGeodeticSurface(t[0],nj);if(o=r?o[0]:o,o!==0){let b=i.geodeticSurfaceNormal(x,Qg);d.multiplyByScalar(b,o,b),d.add(x,b,x)}return[x.x,x.y,x.z]}let s=e.minDistance;if(!l(s)){let x=y(e.granularity,P.RADIANS_PER_DEGREE);s=P.chordLength(x,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=Wc.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let x=t[c],b=t[c+1],T=r?o[c]:o,C=r?o[c+1]:o;h=Z9e(x,b,s,i,T,C,f,h)}tj.length=0;let p=t[n-1],g=i.cartesianToCartographic(p,OB);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,Qg);return d.pack(m,f,u-3),f};var kae=new fe,J9e=new fe;Wc.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=y(e.ellipsoid,ee.default),o=y(e.height,0),r=Array.isArray(o);if(n<1)return[];if(n===1){let T=i.scaleToGeodeticSurface(t[0],nj);if(o=r?o[0]:o,o!==0){let C=i.geodeticSurfaceNormal(T,Qg);d.multiplyByScalar(C,o,C),d.add(T,C,T)}return[T.x,T.y,T.z]}let s=y(e.granularity,P.RADIANS_PER_DEGREE),a=0,c,u=i.cartesianToCartographic(t[0],kae),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],J9e),a+=Wc.numberOfPointsRhumbLine(u,f,s),u=fe.clone(f,kae);let h=(a+1)*3,p=new Array(h),g=0;for(c=0;c<n-1;c++){let T=t[c],C=t[c+1],A=r?o[c]:o,E=r?o[c+1]:o;g=Q9e(T,C,s,i,A,E,p,g)}tj.length=0;let m=t[n-1],x=i.cartesianToCartographic(m,OB);x.height=r?o[n-1]:o;let b=i.cartographicToCartesian(x,Qg);return d.pack(b,p,h-3),p};Wc.generateCartesianArc=function(e){let t=Wc.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};Wc.generateCartesianRhumbArc=function(e){let t=Wc.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Bi=Wc;function du(e,t){e=y(e,y.EMPTY_OBJECT),this._show=y(e.show,!0),this._width=y(e.width,1),this._loop=y(e.loop,!1),this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=Zi.fromType(Zi.ColorType,{color:new z(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=To(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=F.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Bi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(zae),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=ce.fromPoints(this._actualPositions),this._boundingVolumeWC=ce.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new ce}var Uae=du.POSITION_INDEX=0,eWe=du.SHOW_INDEX=1,tWe=du.WIDTH_INDEX=2,nWe=du.MATERIAL_INDEX=3,cD=du.POSITION_SIZE_INDEX=4,iWe=du.DISTANCE_DISPLAY_CONDITION=5,zae=du.NUMBER_OF_PROPERTIES=6;function Xp(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(du.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,Xp(this,eWe))}},positions:{get:function(){return this._positions},set:function(e){let t=To(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&Xp(this,cD),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=ce.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=ce.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),Xp(this,Uae),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,Xp(this,nWe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,Xp(this,tWe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,Xp(this,cD)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Lt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Lt.clone(e,this._distanceDisplayCondition),Xp(this,iWe))}}});du.prototype.update=function(){let e=F.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Uae]>0||this._propertiesChanged[cD]>0;if((!F.equals(e,this._modelMatrix)||i)&&(this._segments=Bi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=ce.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=F.clone(e,this._modelMatrix),this._segments.positions.length!==t)Xp(this,cD);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){Xp(this,cD);break}}};du.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};du.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<zae-1;++t)e[t]=0};du.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var Od=du;var oWe=Od.SHOW_INDEX,rWe=Od.WIDTH_INDEX,oj=Od.POSITION_INDEX,sWe=Od.MATERIAL_INDEX,Hae=Od.POSITION_SIZE_INDEX,aWe=Od.DISTANCE_DISPLAY_CONDITION,Kae=Od.NUMBER_OF_PROPERTIES,Ol={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function Rd(e){e=y(e,y.EMPTY_OBJECT),this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=F.clone(F.IDENTITY),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Kae),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:ke.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=z.clone(z.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(Rd.prototype,{length:{get:function(){return rj(this),this._polylines.length}}});Rd.prototype.add=function(e){let t=new Od(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};Rd.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};Rd.prototype.removeAll=function(){sj(this),ece(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};Rd.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};Rd.prototype.get=function(e){return rj(this),this._polylines[e]};function cWe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:X.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:X.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:X.FLOAT,componentsPerAttribute:2}];e._batchTable=new qT(t,n,e._polylines.length)}var $ae=new Wn,Zae=new oe,Qae=new U;Rd.prototype.update=function(e){if(rj(this),this._polylines.length===0||!this.show)return;mWe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(kt.maximumVertexTextureImageUnits===0)throw new se("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");cWe(this,t),this._createBatchTable=!1}if(this._createVertexArray||uWe(this))jae(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ne.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Hae]||o[sWe])jae(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let p=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===p){o[oj]&&p.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[oWe]||o[rWe])&&this._batchTable.setBatchedAttribute(i._index,0,new U(i._width,i._show)),this._batchTable.attributes.length>2){if(o[oj]||o[Hae]){let m=e.mode===ne.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,x=Wn.fromCartesian(m.center,$ae),b=oe.fromElements(x.low.x,x.low.y,x.low.z,m.radius,Zae);this._batchTable.setBatchedAttribute(i._index,2,x.high),this._batchTable.setBatchedAttribute(i._index,3,b)}if(o[aWe]){let m=Qae;m.x=0,m.y=Number.MAX_VALUE;let x=i.distanceDisplayCondition;l(x)&&(m.x=x.near,m.y=x.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Kae;++c)o[c]=0;let r=F.IDENTITY;e.mode===ne.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ve.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ve.fromCache({blending:fn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;lWe(this,e,c,r)}};var lD=new ce,Gae=new ce;function lWe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,p=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let x=u[m],b=x.buckets,T=b.length;for(let C=0;C<T;++C){let A=b[C],E=A.offset,v=A.bucket.shaderProgram,D=A.bucket.polylines,R=D.length,O,M,N=0,_,S;for(let w=0;w<R;++w){let I=D[w],L=dWe(I._material);if(L!==O){if(l(O)&&N>0){let G=M.isTranslucent();a>=s?(_=new Qe({owner:e}),n.push(_)):_=n[a],++a,S=At(p(M._uniforms),e._uniformMap),_.boundingVolume=ce.clone(lD,_.boundingVolume),_.modelMatrix=i,_.shaderProgram=v,_.vertexArray=x.va,_.renderState=G?e._translucentRS:e._opaqueRS,_.pass=G?ve.TRANSLUCENT:ve.OPAQUE,_.debugShowBoundingVolume=f,_.pickId="v_pickColor",_.uniformMap=S,_.count=N,_.offset=E,E+=N,N=0,c=!0,r.push(_)}M=I._material,M.update(o),O=L}let B=I._locatorBuckets,H=B.length;for(let G=0;G<H;++G){let k=B[G];k.locator===A&&(N+=k.count)}let V;t.mode===ne.SCENE3D?V=I._boundingVolumeWC:t.mode===ne.COLUMBUS_VIEW?V=I._boundingVolume2D:t.mode===ne.SCENE2D?l(I._boundingVolume2D)&&(V=ce.clone(I._boundingVolume2D,Gae),V.center.x=0):l(I._boundingVolumeWC)&&l(I._boundingVolume2D)&&(V=ce.union(I._boundingVolumeWC,I._boundingVolume2D,Gae)),c?(c=!1,ce.clone(V,lD)):ce.union(V,lD,lD)}l(O)&&N>0&&(a>=s?(_=new Qe({owner:e}),n.push(_)):_=n[a],++a,S=At(p(M._uniforms),e._uniformMap),_.boundingVolume=ce.clone(lD,_.boundingVolume),_.modelMatrix=i,_.shaderProgram=v,_.vertexArray=x.va,_.renderState=M.isTranslucent()?e._translucentRS:e._opaqueRS,_.pass=M.isTranslucent()?ve.TRANSLUCENT:ve.OPAQUE,_.debugShowBoundingVolume=f,_.pickId="v_pickColor",_.uniformMap=S,_.count=N,_.offset=E,c=!0,r.push(_)),O=void 0}}n.length=a}Rd.prototype.isDestroyed=function(){return!1};Rd.prototype.destroy=function(){return Jae(this),sj(this),ece(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function uWe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[oj]?(i.bufferUsage!==ke.STREAM_DRAW&&(t=!0,i.bufferUsage=ke.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==ke.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=ke.STATIC_DRAW):i.frameCount--),t}var Wae=[0,0,0];function jae(e,t,n){e._createVertexArray=!1,sj(e),Jae(e),hWe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,p,g;for(p in h)h.hasOwnProperty(p)&&(g=h[p],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,x=new Float32Array(6*f*3),b=new Float32Array(f*4),T,C=0,A=0,E=0;for(p in h)if(h.hasOwnProperty(p)){g=h[p],g.write(x,b,C,A,E,r,t,n),m===ne.MORPHING&&(l(T)||(T=new Float32Array(6*f*3)),g.writeForMorph(T,C));let S=g.lengthOfPositions;C+=6*S*3,A+=S*4,E+=S*4,c=g.updateIndices(i,a,u,c)}let v=e._positionBufferUsage.bufferUsage,D=ke.STATIC_DRAW;e._positionBuffer=Tt.createVertexBuffer({context:t,typedArray:x,usage:v});let R;l(T)&&(R=Tt.createVertexBuffer({context:t,typedArray:T,usage:v})),e._texCoordExpandAndBatchIndexBuffer=Tt.createVertexBuffer({context:t,typedArray:b,usage:D});let O=3*Float32Array.BYTES_PER_ELEMENT,M=4*Float32Array.BYTES_PER_ELEMENT,N=0,_=i.length;for(let S=0;S<_;++S)if(o=i[S],o.length>0){let w=new Uint16Array(o),I=Tt.createIndexBuffer({context:t,typedArray:w,usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT});N+=a[S];let L=6*(S*(O*P.SIXTY_FOUR_KILOBYTES)-N*O),B=O+L,H=O+B,V=O+H,G=O+V,k=O+G,W=S*(M*P.SIXTY_FOUR_KILOBYTES)-N*M,q=[{index:Ol.position3DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:L,strideInBytes:6*O},{index:Ol.position3DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:B,strideInBytes:6*O},{index:Ol.position2DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:L,strideInBytes:6*O},{index:Ol.position2DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:B,strideInBytes:6*O},{index:Ol.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:H,strideInBytes:6*O},{index:Ol.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:V,strideInBytes:6*O},{index:Ol.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:H,strideInBytes:6*O},{index:Ol.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:V,strideInBytes:6*O},{index:Ol.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:G,strideInBytes:6*O},{index:Ol.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:k,strideInBytes:6*O},{index:Ol.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:G,strideInBytes:6*O},{index:Ol.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:X.FLOAT,offsetInBytes:k,strideInBytes:6*O},{index:Ol.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:X.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:W}],J,j,K,Q;m===ne.SCENE3D?(j=e._positionBuffer,J="vertexBuffer",K=Wae,Q="value"):m===ne.SCENE2D||m===ne.COLUMBUS_VIEW?(j=Wae,J="value",K=e._positionBuffer,Q="vertexBuffer"):(j=R,J="vertexBuffer",K=e._positionBuffer,Q="vertexBuffer"),q[0][J]=j,q[1][J]=j,q[2][Q]=K,q[3][Q]=K,q[4][J]=j,q[5][J]=j,q[6][Q]=K,q[7][Q]=K,q[8][J]=j,q[9][J]=j,q[10][Q]=K,q[11][Q]=K;let he=new oi({context:t,attributes:q,indexBuffer:I});e._vertexArrays.push({va:he,buckets:u[S]})}}}function fWe(e,t){return t instanceof Rt?t.id:t}var RB=[];function dWe(e){let t=Zi._uniformList[e.type],n=t.length;RB.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];RB[i]=r,RB[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(RB,fWe)}`}function hWe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new fm(c,t,n)),u.addPolyline(a)}}}function mWe(e,t){let n=t.mode;(e._mode!==n||!F.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=F.clone(e.modelMatrix),e._createVertexArray=!0)}function rj(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function sj(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Jae(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}Rd.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function ece(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function ij(e,t,n){this.count=e,this.offset=t,this.bucket=n}function fm(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}fm.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};fm.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),Ht.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new Ue({defines:i,sources:[`in vec4 v_pickColor;
`,this.material.shaderSource,QT]}),r=t.getVertexShaderCallback()(IB),s=new Ue({defines:i,sources:[rf,r]});this.shaderProgram=Jt.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:Ol})};function tce(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(sn.ORIGIN_ZX_PLANE)===jt.INTERSECTING}fm.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ne.SCENE3D||!tce(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var vs=new d,Ef=new d,Sf=new d,MB=new d,pWe=new oe,_We=new U;fm.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*P.PI,f=this.polylines,h=f.length;for(let p=0;p<h;++p){let g=f[p],m=g.width,x=g.show&&m>0,b=g._index,T=this.getSegments(g,a),C=T.positions,A=T.lengths,E=C.length,v=g.getPickId(s).color,D=0,R=0,O;for(let H=0;H<E;++H){H===0?g._loop?O=C[E-2]:(O=MB,d.subtract(C[0],C[1],O),d.add(C[0],O,O)):O=C[H-1],d.clone(O,Ef),d.clone(C[H],vs),H===E-1?g._loop?O=C[1]:(O=MB,d.subtract(C[E-1],C[E-2],O),d.add(C[E-1],O,O)):O=C[H+1],d.clone(O,Sf);let V=A[D];H===R+V&&(R+=V,++D);let G=H-R===0,k=H===R+A[D]-1;c===ne.SCENE2D&&(Ef.z=0,vs.z=0,Sf.z=0),(c===ne.SCENE2D||c===ne.MORPHING)&&(G||k)&&u-Math.abs(vs.x)<1&&((vs.x<0&&Ef.x>0||vs.x>0&&Ef.x<0)&&d.clone(vs,Ef),(vs.x<0&&Sf.x>0||vs.x>0&&Sf.x<0)&&d.clone(vs,Sf));let W=G?2:0,q=k?2:4;for(let J=W;J<q;++J){Wn.writeElements(vs,e,n),Wn.writeElements(Ef,e,n+6),Wn.writeElements(Sf,e,n+12);let j=J-2<0?-1:1;t[o]=H/(E-1),t[o+1]=2*(J%2)-1,t[o+2]=j,t[o+3]=b,n+=6*3,o+=4}}let M=pWe;M.x=z.floatToByte(v.red),M.y=z.floatToByte(v.green),M.z=z.floatToByte(v.blue),M.w=z.floatToByte(v.alpha);let N=_We;N.x=m,N.y=x?1:0;let _=c===ne.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,S=Wn.fromCartesian(_.center,$ae),w=S.high,I=oe.fromElements(S.low.x,S.low.y,S.low.z,_.radius,Zae),L=Qae;L.x=0,L.y=Number.MAX_VALUE;let B=g.distanceDisplayCondition;l(B)&&(L.x=B.near,L.y=B.far),r.setBatchedAttribute(b,0,N),r.setBatchedAttribute(b,1,M),r.attributes.length>2&&(r.setBatchedAttribute(b,2,w),r.setBatchedAttribute(b,3,I),r.setBatchedAttribute(b,4,L))}};var gWe=new d,yWe=new d,xWe=new d,qae=new d;fm.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let p=0;p<u;++p){let g;p===0?s._loop?g=a[u-2]:(g=qae,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[p-1],g=F.multiplyByPoint(n,g,yWe);let m=F.multiplyByPoint(n,a[p],gWe),x;p===u-1?s._loop?x=a[1]:(x=qae,d.subtract(a[u-1],a[u-2],x),d.add(a[u-1],x,x)):x=a[p+1],x=F.multiplyByPoint(n,x,xWe);let b=c[f];p===h+b&&(h+=b,++f);let T=p-h===0,C=p===h+c[f]-1,A=T?2:0,E=C?2:4;for(let v=A;v<E;++v)Wn.writeElements(m,e,t),Wn.writeElements(g,e,t+6),Wn.writeElements(x,e,t+12),t+=6*3}}};var bWe=new Array(1);fm.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new ij(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let p=u[h];p._locatorBuckets=[];let g;if(this.mode===ne.SCENE3D){g=bWe;let x=p._actualPositions.length;if(x>0)g[0]=x;else continue}else g=p._segments.lengths;let m=g.length;if(m>0){let x=0;for(let b=0;b<m;++b){let T=g[b]-1;for(let C=0;C<T;++C)c+4>P.SIXTY_FOUR_KILOBYTES&&(p._locatorBuckets.push({locator:r,count:x}),x=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new ij(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),x+=6,s+=6,i+=6,c+=4}p._locatorBuckets.push({locator:r,count:x}),c+4>P.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new ij(0,0,this),n[++o]=[r])}p._clean()}return r.count=s,i};fm.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var cA={positions:void 0,lengths:void 0},Yae=new Array(1),TWe=new d,CWe=new fe;fm.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ne.SCENE3D)return Yae[0]=n.length,cA.positions=n,cA.lengths=Yae,cA;tce(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=TWe;for(let u=0;u<s;++u)a=n[u],c=F.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,CWe)));if(o.length>0){e._boundingVolume2D=ce.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return cA.positions=o,cA.lengths=e._segments.lengths,cA};var Xae;fm.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*P.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Xae,c=6*s*3;!l(a)||a.length<c?a=Xae=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,p=0,g=0,m=0,x;s=f.length;for(let b=0;b<s;++b){b===0?t._loop?x=f[s-2]:(x=MB,d.subtract(f[0],f[1],x),d.add(f[0],x,x)):x=f[b-1],d.clone(x,Ef),d.clone(f[b],vs),b===s-1?t._loop?x=f[1]:(x=MB,d.subtract(f[s-1],f[s-2],x),d.add(f[s-1],x,x)):x=f[b+1],d.clone(x,Sf);let T=h[g];b===m+T&&(m+=T,++g);let C=b-m===0,A=b===m+h[g]-1;o===ne.SCENE2D&&(Ef.z=0,vs.z=0,Sf.z=0),(o===ne.SCENE2D||o===ne.MORPHING)&&(C||A)&&r-Math.abs(vs.x)<1&&((vs.x<0&&Ef.x>0||vs.x>0&&Ef.x<0)&&d.clone(vs,Ef),(vs.x<0&&Sf.x>0||vs.x>0&&Sf.x<0)&&d.clone(vs,Sf));let E=C?2:0,v=A?2:4;for(let D=E;D<v;++D)Wn.writeElements(vs,a,p),Wn.writeElements(Ef,a,p+6),Wn.writeElements(Sf,a,p+12),p+=6*3}n.copyFromArrayView(a,6*3*Float32Array.BYTES_PER_ELEMENT*e)}};var dm=Rd;function Jg(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._billboardCollection=new Af({batchTable:e.batchTable}),this._labelCollection=new Yp({batchTable:e.batchTable}),this._polylineCollection=new dm,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Jg.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function AWe(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+ee.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,ee.pack(t,s,a),s}var EWe=new bi("createVectorTilePoints",5),SWe=new d;function vWe(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=AWe(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=EWe.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,p=n.length/3;for(let g=0;g<p;++g){let m=h[g],x=d.unpack(n,g*3,SWe),b=c.add();b.position=x,b._batchIndex=m;let T=u.add();T.text=" ",T.position=x,T._batchIndex=m;let C=f.add();C.positions=[d.clone(x),d.clone(x)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}Jg.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new Zg(e,c,u,f,h)}};Jg.prototype.applyDebugSettings=function(e,t){e?(z.clone(t,this._billboardCollection._highlightColor),z.clone(t,this._labelCollection._highlightColor),z.clone(t,this._polylineCollection._highlightColor)):(z.clone(z.WHITE,this._billboardCollection._highlightColor),z.clone(z.WHITE,this._labelCollection._highlightColor),z.clone(z.WHITE,this._polylineCollection._highlightColor))};function wWe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=Zg.defaultPointSize,s.color=Zg.defaultColor,s.pointOutlineColor=Zg.defaultPointOutlineColor,s.pointOutlineWidth=Zg.defaultPointOutlineWidth,s.labelColor=z.WHITE,s.labelOutlineColor=z.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=Zo.FILL,s.labelText=void 0,s.backgroundColor=new z(.165,.165,.165,.8),s.backgroundPadding=new U(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=z.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=yi.CENTER,s.verticalOrigin=Fn.CENTER,s.labelHorizontalOrigin=yi.RIGHT,s.labelVerticalOrigin=Fn.BASELINE}}var DWe=new z,IWe=new z,PWe=new z,OWe=new z,RWe=new z,MWe=new z,uD=new Vt,fD=new Vt,aj=new Lt;Jg.prototype.applyStyle=function(e,t){if(!l(e)){wWe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,DWe)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,IWe)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,PWe)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,OWe)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,RWe)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(uD.near=a.x,uD.nearValue=a.y,uD.far=a.z,uD.farValue=a.w,s.scaleByDistance=uD):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(fD.near=a.x,fD.nearValue=a.y,fD.far=a.z,fD.farValue=a.w,s.translucencyByDistance=fD):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(aj.near=a.x,aj.far=a.y,s.distanceDisplayCondition=aj):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,MWe)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};Jg.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=vWe(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};Jg.prototype.isDestroyed=function(){return!1};Jg.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var LB=Jg;function Kp(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=y(e.ellipsoid,ee.WGS84),this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=y(e.center,d.ZERO),this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=zn.BOTH}Object.defineProperties(Kp.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function LWe(e){let t=new Float64Array(3+d.packedLength+ee.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,ae.pack(e._rectangle,t,n),t}function NWe(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Dn.unpack(t,n),n+=Dn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=z.unpack(t,n);n+=z.packedLength;let u=t[n++],f=t[n++],h=t[n++],p=new Array(h);for(let g=0;g<h;++g)p[g]=t[n++];s[a]=new Dp({color:c,offset:u,count:f,batchIds:p})}}var FWe=new bi("createVectorTilePolygons",5),BWe=new z;function kWe(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let x=0;x<m;++x){let b=g.getColor(x,BWe);s[x]=b.toRgba()}a=e._packedBuffer=LWe(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let p=FWe.scheduleTask(u,c);if(l(p))return p.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),x=m[0];NWe(e,m),e._indices=Be.getSizeInBytes(x)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),VWe(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function VWe(e){l(e._primitive)||(e._primitive=new gC({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}Kp.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};Kp.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};Kp.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};Kp.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};Kp.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=kWe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};Kp.prototype.isDestroyed=function(){return!1};Kp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var NB=Kp;var FB=`in vec4 currentPosition;
in vec4 previousPosition;
in vec4 nextPosition;
in vec2 expandAndWidth;
in float a_batchId;
uniform mat4 u_modifiedModelView;
void main()
{
float expandDir = expandAndWidth.x;
float width = abs(expandAndWidth.y) + 0.5;
bool usePrev = expandAndWidth.y < 0.0;
vec4 p = u_modifiedModelView * currentPosition;
vec4 prev = u_modifiedModelView * previousPosition;
vec4 next = u_modifiedModelView * nextPosition;
float angle;
vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle);
gl_Position = czm_viewportOrthographic * positionWC;
}
`;function Md(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=y(e.ellipsoid,ee.WGS84),this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=z.clone(z.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Md.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function UWe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+ee.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,ee.pack(o,a,c),c+=ee.packedLength,d.pack(r,a,c),a}var zWe=new bi("createVectorTilePolylines",5),lA={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function HWe(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=UWe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=zWe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Be.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),GWe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function GWe(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Tt.createVertexBuffer({context:t,typedArray:i,usage:ke.STATIC_DRAW}),f=Tt.createVertexBuffer({context:t,typedArray:n,usage:ke.STATIC_DRAW}),h=Tt.createVertexBuffer({context:t,typedArray:o,usage:ke.STATIC_DRAW}),p=Tt.createVertexBuffer({context:t,typedArray:r,usage:ke.STATIC_DRAW}),g=Tt.createVertexBuffer({context:t,typedArray:s,usage:ke.STATIC_DRAW}),m=Tt.createIndexBuffer({context:t,typedArray:a,usage:ke.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Be.UNSIGNED_SHORT:Be.UNSIGNED_INT}),x=[{index:lA.previousPosition,vertexBuffer:u,componentDatatype:X.FLOAT,componentsPerAttribute:3},{index:lA.currentPosition,vertexBuffer:f,componentDatatype:X.FLOAT,componentsPerAttribute:3},{index:lA.nextPosition,vertexBuffer:h,componentDatatype:X.FLOAT,componentsPerAttribute:3},{index:lA.expandAndWidth,vertexBuffer:p,componentDatatype:X.FLOAT,componentsPerAttribute:2},{index:lA.a_batchId,vertexBuffer:g,componentDatatype:X.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new oi({context:t,attributes:x,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var dD=new F,nce=new d;function WWe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return F.clone(n,dD),F.multiplyByPoint(dD,e._center,nce),F.setTranslation(dD,nce,dD),dD},u_highlightColor:function(){return e._highlightColor}})}function jWe(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ve.fromCache({blending:fn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var qWe=`uniform vec4 u_highlightColor;
void main()
{
out_FragColor = u_highlightColor;
}
`;function YWe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(FB),o=n.getFragmentShaderCallback(!1,void 0,!1)(qWe),r=new Ue({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[rf,i]}),s=new Ue({defines:["VECTOR_TILE"],sources:[o]});e._sp=Jt.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:lA})}function XWe(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new Qe({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:ve.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}Md.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],p=o[r+1]-h;for(s=0;s<p;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};Md.prototype.getPositions=function(e){return Md.getPolylinePositions(this,e)};Md.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new sa(e,r)}};Md.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function KWe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=z.WHITE}}var $We=new z,ZWe=z.WHITE,QWe=!0;Md.prototype.applyStyle=function(e,t){if(!l(e)){KWe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,$We):ZWe,s.show=l(e.show)?e.show.evaluate(s):QWe}};Md.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=HWe(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}WWe(this,t),YWe(this,t),jWe(this);let n=e.passes;(n.render||n.pick)&&XWe(this,e)};Md.prototype.isDestroyed=function(){return!1};Md.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var uA=Md;var BB=`in vec3 startEllipsoidNormal;
in vec3 endEllipsoidNormal;
in vec4 startPositionAndHeight;
in vec4 endPositionAndHeight;
in vec4 startFaceNormalAndVertexCorner;
in vec4 endFaceNormalAndHalfWidth;
in float a_batchId;
uniform mat4 u_modifiedModelView;
uniform vec2 u_minimumMaximumVectorHeights;
out vec4 v_startPlaneEC;
out vec4 v_endPlaneEC;
out vec4 v_rightPlaneEC;
out float v_halfWidth;
out vec3 v_volumeUpEC;
void main()
{
// vertex corner IDs
// 3-----------7
// /| left /|
// / | 1 / |
// 2-----------6 5 end
// | / | /
// start |/ right |/
// 0-----------4
//
float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end
float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top
vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz;
vec3 right = normalize(cross(forward, startEllipsoidNormal));
vec4 position = vec4(startPositionAndHeight.xyz, 1.0);
position.xyz += forward * isEnd;
v_volumeUpEC = czm_normal * normalize(cross(right, forward));
// Push for volume height
float offset;
vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd);
// offset height to create volume
offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd);
offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset;
position.xyz += offset * ellipsoidNormal;
// move from RTC to EC
position = u_modifiedModelView * position;
right = czm_normal * right;
// Push for width in a direction that is in the start or end plane and in a plane with right
// N = normalEC ("right-facing" direction for push)
// R = right
// p = angle between N and R
// w = distance to push along R if R == N
// d = distance to push along N
//
// N R
// { p| } * cos(p) = dot(N, R) = w / d
// d | |w * d = w / dot(N, R)
// { | }
// o---------- polyline segment ---->
//
vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd);
scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd));
vec3 miterPushNormal = czm_normal * normalize(scratchNormal);
offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC
offset = offset / dot(miterPushNormal, right);
position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0)));
gl_Position = czm_depthClamp(czm_projection * position);
position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0);
vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz;
v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz));
v_rightPlaneEC = vec4(right, -dot(right, position.xyz));
position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0);
vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz;
v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz));
v_halfWidth = endFaceNormalAndHalfWidth.w;
}
`;var kB=`in vec4 v_startPlaneEC;
in vec4 v_endPlaneEC;
in vec4 v_rightPlaneEC;
in float v_halfWidth;
in vec3 v_volumeUpEC;
uniform vec4 u_highlightColor;
void main()
{
float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)));
// Discard for sky
if (logDepthOrDepth == 0.0) {
#ifdef DEBUG_SHOW_VOLUME
out_FragColor = vec4(0.0, 0.0, 1.0, 0.5);
return;
#else // DEBUG_SHOW_VOLUME
discard;
#endif // DEBUG_SHOW_VOLUME
}
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
eyeCoordinate /= eyeCoordinate.w;
float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate);
// Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction
halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC));
// Check distance of the eye coordinate against the right-facing plane
float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz);
// Check eye coordinate against the mitering planes
float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz);
float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz);
if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) {
#ifdef DEBUG_SHOW_VOLUME
out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5);
return;
#else // DEBUG_SHOW_VOLUME
discard;
#endif // DEBUG_SHOW_VOLUME
}
out_FragColor = u_highlightColor;
czm_writeDepthClamp();
}
`;function $p(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=y(e.ellipsoid,ee.WGS84),this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new U(di._defaultMinTerrainHeight,di._defaultMaxTerrainHeight),this._boundingVolume=Dn.fromRectangle(e.rectangle,di._defaultMinTerrainHeight,di._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=z.clone(z.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties($p.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function JWe(e,t,n){let i=di.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Dn.fromRectangle(c,o,r,n,a)}function eje(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+ee.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,ee.pack(o,a,c),c+=ee.packedLength,d.pack(r,a,c),a}var tje=new bi("createVectorTileClampedPolylines"),ey={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function nje(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=eje(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=tje.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Be.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),ije(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function ije(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Tt.createVertexBuffer({context:t,typedArray:n,usage:ke.STATIC_DRAW}),p=Tt.createVertexBuffer({context:t,typedArray:i,usage:ke.STATIC_DRAW}),g=Tt.createVertexBuffer({context:t,typedArray:o,usage:ke.STATIC_DRAW}),m=Tt.createVertexBuffer({context:t,typedArray:r,usage:ke.STATIC_DRAW}),x=Tt.createVertexBuffer({context:t,typedArray:s,usage:ke.STATIC_DRAW}),b=Tt.createVertexBuffer({context:t,typedArray:a,usage:ke.STATIC_DRAW}),T=Tt.createVertexBuffer({context:t,typedArray:c,usage:ke.STATIC_DRAW}),C=Tt.createIndexBuffer({context:t,typedArray:u,usage:ke.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Be.UNSIGNED_SHORT:Be.UNSIGNED_INT}),A=[{index:ey.startEllipsoidNormal,vertexBuffer:h,componentDatatype:X.FLOAT,componentsPerAttribute:3},{index:ey.endEllipsoidNormal,vertexBuffer:p,componentDatatype:X.FLOAT,componentsPerAttribute:3},{index:ey.startPositionAndHeight,vertexBuffer:g,componentDatatype:X.FLOAT,componentsPerAttribute:4},{index:ey.endPositionAndHeight,vertexBuffer:m,componentDatatype:X.FLOAT,componentsPerAttribute:4},{index:ey.startFaceNormalAndVertexCorner,vertexBuffer:x,componentDatatype:X.FLOAT,componentsPerAttribute:4},{index:ey.endFaceNormalAndHalfWidth,vertexBuffer:b,componentDatatype:X.FLOAT,componentsPerAttribute:4},{index:ey.a_batchId,vertexBuffer:T,componentDatatype:X.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new oi({context:t,attributes:A,indexBuffer:C}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var hD=new F,ice=new d;function oje(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return F.clone(n,hD),F.multiplyByPoint(hD,e._center,ice),F.setTranslation(hD,ice,hD),hD},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function oce(e){return Ve.fromCache({cull:{enabled:!0,face:xi.FRONT},blending:fn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Hn.EQUAL,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},backFunction:Hn.EQUAL,backOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK}})}function rje(e){l(e._rs)||(e._rs=oce(!1),e._rs3DTiles=oce(!0))}function sje(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(BB),o=n.getFragmentShaderCallback(!1,void 0,!0)(kB),r=new Ue({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[rf,i]}),s=new Ue({defines:["VECTOR_TILE"],sources:[o]});e._sp=Jt.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:ey})}function aje(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new Qe({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:ve.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=Qe.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=ve.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===zn.TERRAIN||i===zn.BOTH)&&t.commandList.push(n),(i===zn.CESIUM_3D_TILE||i===zn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}$p.prototype.getPositions=function(e){return uA.getPolylinePositions(this,e)};$p.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new sa(e,r)}};$p.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function cje(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=z.WHITE}}var lje=new z,uje=z.WHITE,fje=!0;$p.prototype.applyStyle=function(e,t){if(!l(e)){cje(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,lje):uje,s.show=l(e.show)?e.show.evaluate(s):fje}};function dje(e){return di.initialize().then(function(){JWe(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}$p.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=dje(this).then(nje(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}oje(this,t),sje(this,t),rje(this);let n=e.passes;(n.render||n.pick)&&aje(this,e)};$p.prototype.isDestroyed=function(){return!1};$p.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var VB=$p;var cj=32767,hje=new fe,mje=new d;function pje(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Bn.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],p=a[f],g=c[f],m=P.lerp(t.west,t.east,h/cj),x=P.lerp(t.south,t.north,p/cj),b=P.lerp(n,i,g/cj),T=fe.fromRadians(m,x,b,hje),C=o.cartographicToCartesian(T,mje);d.pack(C,u,f*3)}return u}var UB=pje;function Nd(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,bje(this,i,o)}Object.defineProperties(Nd.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function _je(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function gje(e,t){let n,i,o,r,s=y(e.POLYGONS_LENGTH,0),a=y(e.POLYLINES_LENGTH,0),c=y(e.POINTS_LENGTH,0);if(s>0&&l(e.POLYGON_BATCH_IDS)){let p=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,p,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let p=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,p,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let p=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,p,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new se("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let p=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=p++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=p++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=p++}return{polygons:n,polylines:i,points:o}}var Ld=Uint32Array.BYTES_PER_ELEMENT;function yje(e){return new uA(e)}function xje(e){return new VB(e)}function bje(e,t,n){n=y(n,0);let i=new Uint8Array(t),o=new DataView(t);n+=Ld;let r=o.getUint32(n,!0);if(r!==1)throw new se(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=Ld;let s=o.getUint32(n,!0);if(n+=Ld,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=Ld,a===0)throw new se("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=Ld;let u=o.getUint32(n,!0);n+=Ld;let f=o.getUint32(n,!0);n+=Ld;let h=o.getUint32(n,!0);n+=Ld;let p=o.getUint32(n,!0);n+=Ld;let g=o.getUint32(n,!0);n+=Ld;let m=o.getUint32(n,!0);n+=Ld;let x=cr(i,n,a);n+=a;let b=new Uint8Array(t,n,c);n+=c;let T,C;u>0&&(T=cr(i,n,u),n+=u,f>0&&(C=new Uint8Array(t,n,f),C=new Uint8Array(C),n+=f));let A=y(x.POLYGONS_LENGTH,0),E=y(x.POLYLINES_LENGTH,0),v=y(x.POINTS_LENGTH,0),D=A+E+v,R=new dg(e,D,T,C,_je(e));if(e._batchTable=R,D===0)return;let O=new rm(x,b),M=O.getGlobalProperty("REGION");if(!l(M))throw new se("Feature table global property: REGION must be defined");let N=ae.unpack(M),_=M[4],S=M[5],w=e._tile.computedTransform,I=O.getGlobalProperty("RTC_CENTER",X.FLOAT,3);l(I)?(I=d.unpack(I),F.multiplyByPoint(w,I,I)):(I=ae.center(N),I.height=P.lerp(_,S,.5),I=ee.WGS84.cartographicToCartesian(I));let L=gje(x,b);if(n+=(4-n%4)%4,A>0){O.featuresLength=A;let B=y(O.getPropertyArray("POLYGON_COUNTS",X.UNSIGNED_INT,1),O.getPropertyArray("POLYGON_COUNT",X.UNSIGNED_INT,1));if(!l(B))throw new se("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let H=y(O.getPropertyArray("POLYGON_INDEX_COUNTS",X.UNSIGNED_INT,1),O.getPropertyArray("POLYGON_INDEX_COUNT",X.UNSIGNED_INT,1));if(!l(H))throw new se("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let V=B.reduce(function(j,K){return j+K*2},0),G=H.reduce(function(j,K){return j+K},0),k=new Uint32Array(t,n,G);n+=h;let W=new Uint16Array(t,n,V);n+=p;let q,J;l(x.POLYGON_MINIMUM_HEIGHTS)&&l(x.POLYGON_MAXIMUM_HEIGHTS)&&(q=O.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",X.FLOAT,1),J=O.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",X.FLOAT,1)),e._polygons=new NB({positions:W,counts:B,indexCounts:H,indices:k,minimumHeight:_,maximumHeight:S,polygonMinimumHeights:q,polygonMaximumHeights:J,center:I,rectangle:N,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:R,batchIds:L.polygons,modelMatrix:w})}if(E>0){O.featuresLength=E;let B=y(O.getPropertyArray("POLYLINE_COUNTS",X.UNSIGNED_INT,1),O.getPropertyArray("POLYLINE_COUNT",X.UNSIGNED_INT,1));if(!l(B))throw new se("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let H=O.getPropertyArray("POLYLINE_WIDTHS",X.UNSIGNED_SHORT,1);if(!l(H)){H=new Uint16Array(E);for(let J=0;J<E;++J)H[J]=2}let V=B.reduce(function(J,j){return J+j*3},0),G=new Uint16Array(t,n,V);n+=g;let k=e._tileset,W=k.examineVectorLinesFunction;if(l(W)){let J=UB(new Uint16Array(G),N,_,S,ee.WGS84);Tje(J,B,L.polylines,R,e.url,W)}let q=yje;l(k.classificationType)&&(q=xje),e._polylines=q({positions:G,widths:H,counts:B,batchIds:L.polylines,minimumHeight:_,maximumHeight:S,center:I,rectangle:N,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:R,classificationType:k.classificationType,keepDecodedPositions:k.vectorKeepDecodedPositions})}if(v>0){let B=new Uint16Array(t,n,v*3);n+=m,e._points=new LB({positions:B,batchIds:L.points,minimumHeight:_,maximumHeight:S,rectangle:N,batchTable:R})}}function lj(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}Nd.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Nd.prototype.getFeature=function(e){return l(this._features)||lj(this),this._features[e]};Nd.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};Nd.prototype.applyStyle=function(e){l(this._features)||lj(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};Nd.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||lj(this),this._batchTable.update(e,t),this._ready=!0)};Nd.prototype.pick=function(e,t,n){};Nd.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};Nd.prototype.isDestroyed=function(){return!1};Nd.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function Tje(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var zB=Nd;var rce={b3dm:function(e,t,n,i,o){return xf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return xf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return xf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return aN.fromTileType(e,t,n,i,o,rce)},externalTileset:function(e,t,n,i){return CB.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new mN(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new zB(e,t,n,i,o)},subt:function(e,t,n,i,o){return Ew.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return Ew.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new se("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a);return xf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){return xf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return xf.fromGeoJson(e,t,n,i)}},fA=rce;var Cje={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},Qo=Object.freeze(Cje);var Fd={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};Fd.isBinaryFormat=function(e){switch(e){case Fd.BATCHED_3D_MODEL:case Fd.INSTANCED_3D_MODEL:case Fd.COMPOSITE:case Fd.POINT_CLOUD:case Fd.VECTOR:case Fd.GEOMETRY:case Fd.IMPLICIT_SUBTREE:case Fd.VOXEL_BINARY:case Fd.GLTF_BINARY:return!0;default:return!1}};var Ws=Object.freeze(Fd);var Aje={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},Bd=Object.freeze(Aje);var js={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},Zp=new Array(js.NUMBER_OF_PASSES);Zp[js.RENDER]=Object.freeze({pass:js.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});Zp[js.PICK]=Object.freeze({pass:js.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});Zp[js.SHADOW]=Object.freeze({pass:js.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});Zp[js.PRELOAD]=Object.freeze({pass:js.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});Zp[js.PRELOAD_FLIGHT]=Object.freeze({pass:js.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});Zp[js.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:js.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});Zp[js.MOST_DETAILED_PRELOAD]=Object.freeze({pass:js.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});Zp[js.MOST_DETAILED_PICK]=Object.freeze({pass:js.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});js.getPassOptions=function(e){return Zp[e]};var zo=Object.freeze(js);function hm(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(hm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});hm.prototype.hasProperty=function(e,t){return!1};hm.prototype.getFeature=function(e){};hm.prototype.applyDebugSettings=function(e,t){};hm.prototype.applyStyle=function(e){};hm.prototype.update=function(e,t){};hm.prototype.pick=function(e,t,n){};hm.prototype.isDestroyed=function(){return!1};hm.prototype.destroy=function(){return ue(this)};var mD=hm;function Qp(e){e=y(e,y.EMPTY_OBJECT);let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Qp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Qp.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};Qp.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};Qp.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};Qp.prototype.getProperty=function(e){return Vn.getProperty(e,this._properties,this._class)};Qp.prototype.setProperty=function(e,t){return Vn.setProperty(e,t,this._properties,this._class)};Qp.prototype.getPropertyBySemantic=function(e){return Vn.getPropertyBySemantic(e,this._properties,this._class)};Qp.prototype.setPropertyBySemantic=function(e,t){return Vn.setPropertyBySemantic(e,t,this._properties,this._class)};var HB=Qp;function uj(e,t){let n=ci(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){uj._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=y(e.schema.classes,y.EMPTY_OBJECT);if(l(n.class)){let o=i[n.class];return new HB({content:n,class:o})}}uj._oneTimeWarning=Ct;var dA=uj;function Eje(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=ci(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var hA=Eje;function Jp(e){e=y(e,y.EMPTY_OBJECT);let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Jp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Jp.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};Jp.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};Jp.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};Jp.prototype.getProperty=function(e){return Vn.getProperty(e,this._properties,this._class)};Jp.prototype.setProperty=function(e,t){return Vn.setProperty(e,t,this._properties,this._class)};Jp.prototype.getPropertyBySemantic=function(e){return Vn.getPropertyBySemantic(e,this._properties,this._class)};Jp.prototype.setPropertyBySemantic=function(e,t){return Vn.setPropertyBySemantic(e,t,this._properties,this._class)};var GB=Jp;function fj(e,t){let n=ci(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){fj._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=y(e.schema.classes,y.EMPTY_OBJECT);if(l(n.class)){let o=i[n.class];return new GB({tile:n,class:o})}}fj._oneTimeWarning=Ct;var WB=fj;function Sje(e){let t=new Uint8Array(e),n=Kh(t);if(n==="glTF"&&(n="glb"),Ws.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=vje(t);if(l(i.root))return{contentType:Ws.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:Ws.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:Ws.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:Ws.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:Ws.VOXEL_JSON,jsonPayload:i};throw new se("Invalid tile content.")}function vje(e){let t;try{t=cr(e)}catch{throw new se("Invalid tile content.")}return t}var ty=Sje;function vf(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Ec.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(vf.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function dj(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function sce(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}vf.prototype.requestInnerContents=function(){if(!wje(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;dj(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=Dje(this,n,t,this._tile._contentState);return Ije(this)};function wje(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Ec.serverHasOpenSlots(n,t[n]))return!1;return Ec.heapHasOpenSlots(e.length)}function Dje(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new rr({throttle:!0,throttleByServer:!0,type:Ts.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===ei.CANCELLED){sce(e,i);return}return dj(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===ei.CANCELLED){sce(e,i);return}dj(e,-1),ace(e,t,f)}})}async function Ije(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>Pje(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function Pje(e,t,n){if(l(t))try{let i=ty(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===Ws.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===Ws.GEOMETRY||i.contentType===Ws.VECTOR;let a,c=fA[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,p=s.implicitCoordinates;a.metadata=h.getContentMetadataView(p,n)}else s.hasImplicitContent||(a.metadata=dA(o,u));let f=hA(o,u);return l(f)&&(a.group=new pC({metadata:f})),a}catch(i){ace(e,n,i)}}function ace(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}vf.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};vf.prototype.hasProperty=function(e,t){return!1};vf.prototype.getFeature=function(e){};vf.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};vf.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};vf.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};vf.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};vf.prototype.isDestroyed=function(){return!1};vf.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var jB=vf;var cce=Math.cos,lce=Math.sin,Oje=Math.sqrt,hj={};hj.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=cce(f),p=lce(f),g=a.z*p,m=c.longitude+i*e.granYSin+o*e.granXCos,x=h*cce(m),b=h*lce(m),T=a.x*x,C=a.y*b,A=Oje(T*x+C*b+g*p);if(r.x=T/A,r.y=C/A,r.z=g/A,n){let E=e.stNwCorner;l(E)?(f=E.latitude-e.stGranYCos*i+o*e.stGranXSin,m=E.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var Rje=new Mi,wf=new d,Mje=new fe,qB=new d,pD=new Ri;function uce(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,p=n*f;pD._ellipsoid=ee.default,wf=pD.project(e,wf),wf=d.subtract(wf,qB,wf);let g=Mi.fromRotation(t,Rje);wf=Mi.multiplyByVector(g,wf,wf),wf=d.add(wf,qB,wf),e=pD.unproject(wf,e),r-=1,s-=1;let m=e.latitude,x=m+r*p,b=m-c*s,T=m-c*s+r*p,C=Math.max(m,x,b,T),A=Math.min(m,x,b,T),E=e.longitude,v=E+r*u,D=E+s*h,R=E+s*h+r*u,O=Math.max(E,v,D,R),M=Math.min(E,v,D,R);return{north:C,south:A,east:O,west:M,granYCos:c,granYSin:h,granXCos:u,granXSin:p,nwCorner:e}}hj.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,p=!1;u===P.PI_OVER_TWO&&(h=!0),f===-P.PI_OVER_TWO&&(p=!0);let g,m=u-f;c>a?g=P.TWO_PI-c+a:g=a-c;let x=Math.ceil(g/t)+1,b=Math.ceil(m/t)+1,T=g/(x-1),C=m/(b-1),A=ae.northwest(e,r),E=ae.center(e,Mje);(n!==0||i!==0)&&(E.longitude<A.longitude&&(E.longitude+=P.TWO_PI),pD._ellipsoid=ee.default,qB=pD.project(E,qB));let v=C,D=T,R=0,O=0,M=ae.clone(e,o),N={granYCos:v,granYSin:R,granXCos:D,granXSin:O,nwCorner:A,boundingRectangle:M,width:x,height:b,northCap:h,southCap:p};if(n!==0){let _=uce(A,n,T,C,E,x,b);u=_.north,f=_.south,a=_.east,c=_.west,N.granYCos=_.granYCos,N.granYSin=_.granYSin,N.granXCos=_.granXCos,N.granXSin=_.granXSin,M.north=u,M.south=f,M.east=a,M.west=c}if(i!==0){n=n-i;let _=ae.northwest(M,s),S=uce(_,n,T,C,E,x,b);N.stGranYCos=S.granYCos,N.stGranXCos=S.granXCos,N.stGranYSin=S.granYSin,N.stGranXSin=S.granXSin,N.stNwCorner=_,N.stWest=S.west,N.stSouth=S.south}return N};var qs=hj;var Lje=new ce,Nje=new ce,Fje=new d,Bje=new ae;function fce(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),p=0,g=0,m,x=Fje;if(r)qs.computePosition(t,n,!1,g,0,x),h[p++]=x.x,h[p++]=x.y,h[p++]=x.z;else for(m=0;m<o;m++)qs.computePosition(t,n,!1,g,m,x),h[p++]=x.x,h[p++]=x.y,h[p++]=x.z;for(m=o-1,g=1;g<i;g++)qs.computePosition(t,n,!1,g,m,x),h[p++]=x.x,h[p++]=x.y,h[p++]=x.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)qs.computePosition(t,n,!1,g,m,x),h[p++]=x.x,h[p++]=x.y,h[p++]=x.z;for(m=0,g=i-2;g>0;g--)qs.computePosition(t,n,!1,g,m,x),h[p++]=x.x,h[p++]=x.y,h[p++]=x.z;let b=h.length/3*2,T=Be.createTypedArray(h.length/3,b),C=0;for(let E=0;E<h.length/3-1;E++)T[C++]=E,T[C++]=E+1;T[C++]=h.length/3-1,T[C++]=0;let A=new ut({attributes:new mn,primitiveType:Ne.LINES});return A.attributes.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:h}),A.indices=T,A}function kje(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=fce(e,t),s=t.height,a=t.width,c=li.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=li.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let p=t.northCap,g=t.southCap,m=4;p&&(m-=1),g&&(m-=1);let x=(f.length/3+m)*2,b=Be.createTypedArray(f.length/3,x);u=f.length/6;let T=0;for(let A=0;A<u-1;A++)b[T++]=A,b[T++]=A+1,b[T++]=A+u,b[T++]=A+u+1;b[T++]=u-1,b[T++]=0,b[T++]=u+u-1,b[T++]=u,b[T++]=0,b[T++]=u;let C;if(p)C=s-1;else{let A=a-1;b[T++]=A,b[T++]=A+u,C=a+s-2}if(b[T++]=C,b[T++]=C+u,!g){let A=a+C-1;b[T++]=A,b[T]=A+u}return r.indices=b,r}function pA(e){e=y(e,y.EMPTY_OBJECT);let t=e.rectangle,n=y(e.granularity,P.RADIANS_PER_DEGREE),i=y(e.ellipsoid,ee.default),o=y(e.rotation,0),r=y(e.height,0),s=y(e.extrudedHeight,r);this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}pA.packedLength=ae.packedLength+ee.packedLength+5;pA.pack=function(e,t,n){return n=y(n,0),ae.pack(e._rectangle,t,n),n+=ae.packedLength,ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=y(e._offsetAttribute,-1),t};var dce=new ae,hce=ee.clone(ee.UNIT_SPHERE),mA={rectangle:dce,ellipsoid:hce,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};pA.unpack=function(e,t,n){t=y(t,0);let i=ae.unpack(e,t,dce);t+=ae.packedLength;let o=ee.unpack(e,t,hce);t+=ee.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=ee.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):(mA.granularity=r,mA.height=s,mA.rotation=a,mA.extrudedHeight=c,mA.offsetAttribute=u===-1?void 0:u,new pA(mA))};var Vje=new fe;pA.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=qs.computeOptions(t,e._granularity,e._rotation,0,Bje,Vje),o,r;if(P.equalsEpsilon(t.north,t.south,P.EPSILON10)||P.equalsEpsilon(t.east,t.west,P.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!P.equalsEpsilon(s,a,0,P.EPSILON2),u;if(c){if(o=kje(e,i),l(e._offsetAttribute)){let p=o.attributes.position.values.length/3,g=new Uint8Array(p);e._offsetAttribute===rn.TOP?g=g.fill(1,0,p/2):(u=e._offsetAttribute===rn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=ce.fromRectangle3D(t,n,s,Nje),h=ce.fromRectangle3D(t,n,a,Lje);r=ce.union(f,h)}else{if(o=fce(e,i),o.attributes.position.values=li.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===rn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=ce.fromRectangle3D(t,n,s)}return new ut({attributes:o.attributes,indices:o.indices,primitiveType:Ne.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var _A=pA;function yA(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=y(e.minimumHeight,0),this.maximumHeight=y(e.maximumHeight,0),this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=y(e.ellipsoid,ee.WGS84);Wje(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,y(e.computeBoundingVolumes,!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(yA.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});yA.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Dn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=ce.fromOrientedBoundingBox(this._orientedBoundingBox)};var mce=new d,YB=new d,pce=new d,Uje=new d,zje=new d,Hje=new d,Gje=new d,Df=new fe,_ce=new sn(d.UNIT_X,0),gA=new pn;function Wje(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Df.longitude=t.west,Df.latitude=(t.south+t.north)*.5,Df.height=0;let i=n.cartographicToCartesian(Df,Hje),o=d.cross(i,d.UNIT_Z,Uje);d.normalize(o,e.westNormal),Df.longitude=t.east;let r=n.cartographicToCartesian(Df,Gje),s=d.cross(d.UNIT_Z,r,mce);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,mce);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,zje),u=t.south,f;if(u>0){Df.longitude=(t.west+t.east)*.5,Df.latitude=u;let x=n.cartographicToCartesian(Df,gA.origin);d.clone(c,gA.direction);let b=sn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,_ce);ti.rayPlane(gA,b,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(x,YB)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),YB);let h=d.cross(f,a,pce);d.normalize(h,e.southNormal);let p=t.north,g;if(p<0){Df.longitude=(t.west+t.east)*.5,Df.latitude=p;let x=n.cartographicToCartesian(Df,gA.origin);d.negate(c,gA.direction);let b=sn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,_ce);ti.rayPlane(gA,b,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(x,YB)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),YB);let m=d.cross(a,g,pce);d.normalize(m,e.northNormal)}var jje=new d,qje=new d,Yje=new d(0,-1,0),Xje=new d(0,0,-1),gce=new d;function Kje(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,p=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ne.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),jje),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),qje),f.z=f.y,f.y=f.x,f.x=0,h=Yje,g=d.UNIT_Y,p=Xje,m=d.UNIT_Z);let x=d.subtract(i,u,gce),b=d.dot(x,h),T=d.dot(x,p),C=d.subtract(i,f,gce),A=d.dot(C,g),E=d.dot(C,m);b>0?r+=b*b:A>0&&(r+=A*A),T>0?r+=T*T:E>0&&(r+=E*E)}let s,a,c;if(t.mode===ne.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}yA.prototype.distanceToCamera=function(e){let t=Kje(this,e);if(e.mode===ne.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};yA.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};yA.prototype.createDebugVolume=function(e){let t=new F.clone(F.IDENTITY),n=new _A({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Dt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:Wt.fromColor(e)}});return new Pn({geometryInstances:i,appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})};var If=yA;var _D={},$je=new d,yce=new d,xce=new d,bce=new d,Tce=new Dn;_D.validOutline=function(e){let n=Dn.fromPoints(e,Tce).halfAxes,i=Z.getColumn(n,0,yce),o=Z.getColumn(n,1,xce),r=Z.getColumn(n,2,bce),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};_D.computeProjectTo2DArguments=function(e,t,n,i){let o=Dn.fromPoints(e,Tce),r=o.halfAxes,s=Z.getColumn(r,0,yce),a=Z.getColumn(r,1,xce),c=Z.getColumn(r,2,bce),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),p=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(p===f||p===h)&&(g=s),p===u?g=a:p===h&&(m=a),(p===u||p===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Cce(e,t,n,i,o){let r=d.subtract(e,t,$je),s=d.dot(n,r),a=d.dot(i,r);return U.fromElements(s,a,o)}_D.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Cce(i[r],e,t,n);return o}};_D.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Cce(i,e,t,n,o)}};var ny=_D;function Zje(e){let t=e.length,n=new Float64Array(t*3),i=Be.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:n})});return new ut({attributes:s,indices:i,primitiveType:Ne.LINES})}function Ux(e){e=y(e,y.EMPTY_OBJECT);let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=Gn.computeHierarchyPackedLength(t,d)+1}Ux.fromPositions=function(e){e=y(e,y.EMPTY_OBJECT);let t={polygonHierarchy:{positions:e.positions}};return new Ux(t)};Ux.pack=function(e,t,n){return n=y(n,0),n=Gn.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var Qje={polygonHierarchy:{}};Ux.unpack=function(e,t,n){t=y(t,0);let i=Gn.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new Ux(Qje)),n._polygonHierarchy=i,n.packedLength=o,n};Ux.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=To(n,d.equalsEpsilon,!0),n.length<3||!ny.validOutline(n))return;let o=Gn.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Dt({geometry:Zje(o[c])});r.push(u)}let s=kn.combineInstances(r)[0],a=ce.fromPoints(t.positions);return new ut({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var kd=Ux;var XB=new fe;function gD(e){let t=xg.fromToken(e.token),n=y(e.minimumHeight,0),i=y(e.maximumHeight,0),o=y(e.ellipsoid,ee.WGS84);this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=a7e(t,n,i,o);this._boundingPlanes=r;let s=f7e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=Tj(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=Tj(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=Tj(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();XB=o.cartesianToCartographic(c,XB),XB.height=(i+n)/2,this.center=o.cartographicToCartesian(XB,c),this._boundingSphere=ce.fromPoints(s)}var Jje=new d,e7e=new fe,t7e=new d,n7e=new fe,i7e=new d,o7e=new d,r7e=new d,s7e=new d;function a7e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,Jje),a=i.cartesianToCartographic(r,e7e);a.height=n;let c=i.cartographicToCartesian(a,t7e),u=sn.fromPointNormal(c,s);o[0]=u;let f=0,h,p=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),p[h]=g,m=i.cartesianToCartographic(g,n7e),m.height=t;let b=sn.getPointDistance(u,i.cartographicToCartesian(m,i7e));b<f&&(f=b)}let x=sn.clone(u);for(x.normal=d.negate(x.normal,x.normal),x.distance=x.distance*-1+f,o[1]=x,h=0;h<4;h++){g=p[h];let b=p[(h+1)%4],T=i.geodeticSurfaceNormal(g,o7e),C=d.subtract(b,g,s7e),A=d.cross(C,T,r7e);A=d.normalize(A,A),o[2+h]=sn.fromPointNormal(g,A)}return o}var zx=new d,Hx=new d,Gx=new d,mj=new d,pj=new d,_j=new d,c7e=new d,l7e=new d,u7e=new d,gj=new d,yj=new d,xj=new d,iy=new d,mm=new Z;function Ace(e,t,n){zx=e.normal,Hx=t.normal,Gx=n.normal,mj=d.multiplyByScalar(e.normal,-e.distance,mj),pj=d.multiplyByScalar(t.normal,-t.distance,pj),_j=d.multiplyByScalar(n.normal,-n.distance,_j),gj=d.multiplyByScalar(d.cross(Hx,Gx,c7e),d.dot(mj,zx),gj),yj=d.multiplyByScalar(d.cross(Gx,zx,l7e),d.dot(pj,Hx),yj),xj=d.multiplyByScalar(d.cross(zx,Hx,u7e),d.dot(_j,Gx),xj),mm[0]=zx.x,mm[1]=Hx.x,mm[2]=Gx.x,mm[3]=zx.y,mm[4]=Hx.y,mm[5]=Gx.y,mm[6]=zx.z,mm[7]=Hx.z,mm[8]=Gx.z;let i=Z.determinant(mm);return iy=d.add(gj,yj,iy),iy=d.add(iy,xj,iy),new d(iy.x/i,iy.y/i,iy.z/i)}function f7e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Ace(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Ace(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var bj=new d,xA=new d;function Tj(e,t){let n=[];for(let i=0;i<4;i++)bj=d.subtract(t[(i+1)%4],t[i],bj),xA=d.cross(e.normal,bj,xA),xA=d.normalize(xA,xA),n[i]=d.clone(xA);return n}Object.defineProperties(gD.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var Cj=new d;gD.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;sn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):sn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,sn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=Aj(sn.projectPointOntoPlane(c,t,Cj),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let p=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=Ece(t,p[0],p[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=Aj(sn.projectPointOntoPlane(c,t,Cj),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=Aj(sn.projectPointOntoPlane(this._boundingPlanes[1],t,Cj),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var d7e=new d,h7e=new d;function Ece(e,t,n){let i=d.subtract(n,t,d7e),o=d.subtract(e,t,h7e),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var m7e=new sn(d.UNIT_X,0);function Aj(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=sn.fromPointNormal(t[c],i[c],m7e);sn.getPointDistance(u,e)<0||(a=Ece(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}gD.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?jt.INSIDE:n===this._vertices.length?jt.OUTSIDE:jt.INTERSECTING};gD.prototype.createDebugVolume=function(e){let t=new F.clone(F.IDENTITY),n=new kd({polygonHierarchy:{positions:this._planeVertices[0]}}),i=kd.createGeometry(n),o=new Dt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:Wt.fromColor(e)}}),r=new kd({polygonHierarchy:{positions:this._planeVertices[1]}}),s=kd.createGeometry(r),a=new Dt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:Wt.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new kd({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=kd.createGeometry(f);c[u]=new Dt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:Wt.fromColor(e)}})}return new Pn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})};var KB=gD;var p7e=new d(1,1,1),$B=Math.cos,ZB=Math.sin;function bA(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.radii,p7e),n=y(e.innerRadii,t),i=y(e.minimumClock,0),o=y(e.maximumClock,P.TWO_PI),r=y(e.minimumCone,0),s=y(e.maximumCone,P.PI),a=Math.round(y(e.stackPartitions,10)),c=Math.round(y(e.slicePartitions,8)),u=Math.round(y(e.subdivisions,128));this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}bA.packedLength=2*d.packedLength+8;bA.pack=function(e,t,n){return n=y(n,0),d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=y(e._offsetAttribute,-1),t};var Sce=new d,vce=new d,e_={radii:Sce,innerRadii:vce,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};bA.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,Sce);t+=d.packedLength;let o=d.unpack(e,t,vce);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=p===-1?void 0:p,n):(e_.minimumClock=r,e_.maximumClock=s,e_.minimumCone=a,e_.maximumCone=c,e_.stackPartitions=u,e_.slicePartitions=f,e_.subdivisions=h,e_.offsetAttribute=p===-1?void 0:p,new bA(e_))};bA.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=ee.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/P.TWO_PI),f=Math.round(f*Math.abs(s-r)/P.PI),u<2&&(u=2),f<2&&(f=2);let h=0,p=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,x=!1;g&&(p=2,r>0&&(m=!0,h+=u),s<Math.PI&&(x=!0,h+=u));let b=a*p*(f+u),T=new Float64Array(b*3),C=2*(b+h-(u+f)*p),A=Be.createTypedArray(b,C),E,v,D,R,O=0,M=new Array(f),N=new Array(f);for(E=0;E<f;E++)R=r+E*(s-r)/(f-1),M[E]=ZB(R),N[E]=$B(R);let _=new Array(a),S=new Array(a);for(E=0;E<a;E++)D=i+E*(o-i)/(a-1),_[E]=ZB(D),S[E]=$B(D);for(E=0;E<f;E++)for(v=0;v<a;v++)T[O++]=t.x*M[E]*S[v],T[O++]=t.y*M[E]*_[v],T[O++]=t.z*N[E];if(g)for(E=0;E<f;E++)for(v=0;v<a;v++)T[O++]=n.x*M[E]*S[v],T[O++]=n.y*M[E]*_[v],T[O++]=n.z*N[E];for(M.length=a,N.length=a,E=0;E<a;E++)R=r+E*(s-r)/(a-1),M[E]=ZB(R),N[E]=$B(R);for(_.length=u,S.length=u,E=0;E<u;E++)D=i+E*(o-i)/(u-1),_[E]=ZB(D),S[E]=$B(D);for(E=0;E<a;E++)for(v=0;v<u;v++)T[O++]=t.x*M[E]*S[v],T[O++]=t.y*M[E]*_[v],T[O++]=t.z*N[E];if(g)for(E=0;E<a;E++)for(v=0;v<u;v++)T[O++]=n.x*M[E]*S[v],T[O++]=n.y*M[E]*_[v],T[O++]=n.z*N[E];for(O=0,E=0;E<f*p;E++){let L=E*a;for(v=0;v<a-1;v++)A[O++]=L+v,A[O++]=L+v+1}let w=f*a*p;for(E=0;E<u;E++)for(v=0;v<a-1;v++)A[O++]=w+E+v*u,A[O++]=w+E+(v+1)*u;if(g)for(w=f*a*p+u*a,E=0;E<u;E++)for(v=0;v<a-1;v++)A[O++]=w+E+v*u,A[O++]=w+E+(v+1)*u;if(g){let L=f*a*p,B=L+a*u;if(m)for(E=0;E<u;E++)A[O++]=L+E,A[O++]=B+E;if(x)for(L+=a*u-u,B+=a*u-u,E=0;E<u;E++)A[O++]=L+E,A[O++]=B+E}let I=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:T})});if(l(e._offsetAttribute)){let L=T.length,B=e._offsetAttribute===rn.NONE?0:1,H=new Uint8Array(L/3).fill(B);I.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:H})}return new ut({attributes:I,indices:A,primitiveType:Ne.LINES,boundingSphere:ce.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var Pf=bA;function TA(e){let t=y(e.radius,1),i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new Pf(i),this._workerName="createSphereOutlineGeometry"}TA.packedLength=Pf.packedLength;TA.pack=function(e,t,n){return Pf.pack(e._ellipsoidGeometry,t,n)};var _7e=new Pf,Wx={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};TA.unpack=function(e,t,n){let i=Pf.unpack(e,t,_7e);return Wx.stackPartitions=i._stackPartitions,Wx.slicePartitions=i._slicePartitions,Wx.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,Wx.radii),n._ellipsoidGeometry=new Pf(Wx),n):(Wx.radius=i._radii.x,new TA(Wx))};TA.createGeometry=function(e){return Pf.createGeometry(e._ellipsoidGeometry)};var oy=TA;function CA(e,t){t===0&&(t=P.EPSILON7),this._boundingSphere=new ce(e,t)}Object.defineProperties(CA.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});CA.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};CA.prototype.intersectPlane=function(e){return ce.intersectPlane(this._boundingSphere,e)};CA.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};CA.prototype.createDebugVolume=function(e){let t=new oy({radius:this.radius}),n=F.fromTranslation(this.center,new F.clone(F.IDENTITY)),i=new Dt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:Wt.fromColor(e)}});return new Pn({geometryInstances:i,appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})};var ry=CA;var g7e=new d,y7e=new d,x7e=new d,b7e=new d;function jx(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,P.EPSILON7/i,n)}function Ej(e,t){let n=d.normalize(e,b7e),i=d.equalsEpsilon(n,d.UNIT_X,P.EPSILON6)?d.UNIT_Y:d.UNIT_X;return jx(e,i,t)}function wce(e){let t=Z.getColumn(e,0,g7e),n=Z.getColumn(e,1,y7e),i=Z.getColumn(e,2,x7e),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=P.EPSILON7,e[4]=P.EPSILON7,e[8]=P.EPSILON7,e):(o&&!r&&!s?t=jx(n,i,t):!o&&r&&!s?n=jx(t,i,n):!o&&!r&&s?i=jx(n,t,i):o?r?s||(t=Ej(i,t),n=jx(i,t,n)):(t=Ej(n,t),i=jx(n,t,i)):(n=Ej(t,n),i=jx(n,t,i)),Z.setColumn(e,0,t,e),Z.setColumn(e,1,n,e),Z.setColumn(e,2,i,e),e)}function AA(e,t){t=wce(t),this._orientedBoundingBox=new Dn(e,t),this._boundingSphere=ce.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(AA.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});AA.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};AA.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};AA.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=wce(t),Z.clone(t,this._orientedBoundingBox.halfAxes),ce.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};AA.prototype.createDebugVolume=function(e){let t=new Oh({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=F.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Dt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:Wt.fromColor(e)}});return new Pn({geometryInstances:i,appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})};var hu=AA;function Jo(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||ci(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?F.unpack(n.transform):F.clone(F.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=F.multiply(a,this.transform,new F),u=l(i)?i._initialTransform:F.IDENTITY;this._initialTransform=F.multiply(u,this.transform,new F),this.computedTransform=c,this.metadata=WB(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,Jo._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let p;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&Jo._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),p=n.refine.toUpperCase()==="REPLACE"?Ko.REPLACE:Ko.ADD):l(i)?p=i.refine:p=Ko.REPLACE,this.refine=p,this.children=[],this.parent=i;let g,m=!1,x,b,T;if(t=Ee.createIfNeeded(t),r)x=Qo.UNLOADED,b=t.clone();else if(l(s)){let v=s.uri;l(s.url)&&(Jo._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),v=s.url),v===""?(Jo._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new mD(e,this),m=!0,x=Qo.READY):(x=Qo.UNLOADED,b=t.getDerivedResource({url:v}),T=Ec.getServerKey(b.getUrlComponent()))}else g=new mD(e,this),m=!0,x=Qo.READY;this._content=g,this._contentResource=b,this._contentState=x,this._expiredContent=void 0,this._serverKey=T,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let C=n.expire,A,E;l(C)&&(A=C.duration,l(C.date)&&(E=$.fromIso8601(C.date))),this.expireDuration=A,this.expireDate=E,this.lastStyleTime=0,this._optimChildrenWithinParent=Bd.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=z.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new $,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}Jo._deprecationWarning=Qa;Object.defineProperties(Jo.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return y(this._contentBoundingVolume,this._boundingVolume)}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new z),z.clone(this._color)},set:function(e){this._color=z.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===Qo.READY}},contentUnloaded:{get:function(){return this._contentState===Qo.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===Qo.EXPIRED}},contentFailed:{get:function(){return this._contentState===Qo.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var sy=new d;function T7e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,sy),c=d.add(s.positionWC,a,sy),u=d.subtract(c,r,sy);if(d.magnitude(u)>o){let E=d.normalize(u,sy),v=d.multiplyByScalar(E,o,sy),D=d.add(r,v,sy),R=d.subtract(D,s.positionWC,sy),O=d.normalize(R,sy);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,O))}else e._foveatedFactor=0;let p=e.refine===Ko.REPLACE,g=n.isSkippingLevelOfDetail;if(p&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&p&&g||n._pass===zo.PRELOAD_FLIGHT||n._pass===zo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),x=n.foveatedConeSize*m;if(e._foveatedFactor<=x)return!1;let b=m-x,T=P.clamp((e._foveatedFactor-x)/b,0,1),C=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,T),A=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-C<=A}var Rce=new $;Jo.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=y(n,1),r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,p;if(e.mode===ne.SCENE2D||u instanceof an){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);p=s/m}else{let g=Math.max(this._distanceToCamera,P.EPSILON7),m=u.sseDenominator;if(p=s*h/(g*m),i.dynamicScreenSpaceError){let x=i._dynamicScreenSpaceErrorComputedDensity,b=i.dynamicScreenSpaceErrorFactor,T=P.fog(g,x)*b;p-=T}}return p/=e.pixelRatio,p};function C7e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function A7e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}Jo.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:As.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==As.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=A7e(n,this),this._priorityProgressiveResolution=C7e(n,this),this.priorityDeferred=T7e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};Jo.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=$.now(Rce);$.lessThan(this.expireDate,e)&&(this._contentState=Qo.EXPIRED,this._expiredContent=this._content)}};function E7e(e){if(!l(e.expireDuration))return;let t=$.now(Rce);$.addSeconds(t,e.expireDuration,t),l(e.expireDate)?$.lessThan(e.expireDate,t)&&$.clone(t,e.expireDate):e.expireDate=$.clone(t)}function S7e(e){return function(){return e._priority}}Jo.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?v7e(this):D7e(this)};function v7e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=ci(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new jB(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=Qo.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=Qo.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=Qo.FAILED,o})}async function w7e(e,t,n,i,o){let r=e._contentState;e._contentState=Qo.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===ei.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=Qo.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===ei.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await I7e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=Qo.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=Qo.FAILED,a}}function D7e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new rr({throttle:!0,throttleByServer:!0,type:Ts.TILES3D,priorityFunction:S7e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return w7e(e,o,i,n,r)}async function I7e(e,t){let n=ty(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===Ws.GEOMETRY||n.contentType===Ws.VECTOR,(n.contentType===Ws.IMPLICIT_SUBTREE||n.contentType===Ws.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===Ws.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=fA[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=dA(i,s));let a=hA(i,s);return l(a)&&(o.group=new pC({metadata:a})),o}Jo.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};Jo.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=Qo.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var Mce=new ce;function vj(e,t){if(t.mode!==ne.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=ce.projectTo2D(n,t.mapProjection,Mce);e._boundingVolume2D=new ry(i.center,i.radius)}return t.mode!==ne.SCENE3D?e._boundingVolume2D:e._boundingVolume}function P7e(e,t){if(t.mode!==ne.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=ce.projectTo2D(n,t.mapProjection,Mce);e._contentBoundingVolume2D=new ry(i.center,i.radius)}return t.mode!==ne.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}Jo.prototype.visibility=function(e,t){let n=e.cullingVolume,i=vj(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==jt.INSIDE,a===jt.OUTSIDE)return As.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==jt.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};Jo.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return jt.INSIDE;if(this._visibilityPlaneMask===As.MASK_INSIDE)return jt.INSIDE;let t=e.cullingVolume,n=P7e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==jt.INSIDE,s===jt.OUTSIDE)return jt.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==jt.OUTSIDE,s===jt.INSIDE)return jt.OUTSIDE}return t.computeVisibility(n)};Jo.prototype.distanceToTile=function(e){return vj(this,e).distanceToCamera(e)};var O7e=new d;Jo.prototype.distanceToTileCenter=function(e){let n=vj(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,O7e);return d.dot(e.camera.directionWC,i)};Jo.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var Lce=new Z,Nce=new d,R7e=new Z,wj=new d,Fce=new ae,Bce=new Dn,Sj=new F;function M7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],wj),o=Z.fromArray(e,3,R7e);i=F.multiplyByPoint(t,i,i);let r=F.getMatrix3(t,Lce);return o=Z.multiply(r,o,o),l(n)?(n.update(i,o),n):new hu(i,o)}function Dce(e,t,n,i){let o=ae.unpack(e,0,Fce),r=e[4],s=e[5],a=Dn.fromRectangle(o,r,s,ee.WGS84,Bce),c=a.center,u=a.halfAxes;t=F.multiplyTransformation(t,F.inverseTransformation(n,Sj),Sj),c=F.multiplyByPoint(t,c,c);let f=F.getMatrix3(t,Lce);return u=Z.multiply(f,u,u),l(i)&&i instanceof hu?(i.update(c,u),i):new hu(c,u)}function L7e(e,t,n,i){if(!F.equalsEpsilon(t,n,P.EPSILON8))return i instanceof hu?Dce(e,t,n,i):Dce(e,t,n,void 0);let o=ae.unpack(e,0,Fce);return i instanceof If?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(ee.WGS84),i):new If({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function N7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],wj),o=e[3];i=F.multiplyByPoint(t,i,i);let r=F.getScale(t,Nce),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new ry(i,o)}Jo.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=wC.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new se("boundingVolume must be defined");if(ci(e,"3DTILES_bounding_volume_S2"))return new KB(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=M7e(r,t,n);return this._verticalExaggeration!==1&&Ice(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=L7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof hu?Ice(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Rr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Rr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(ee.WGS84))),c}if(l(a)){let c=N7e(a,t,n);if(this._verticalExaggeration!==1){let u=Rr.getPosition(c.center,ee.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,wj),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new se("boundingVolume must contain a sphere, region, or box")};var F7e=d.unpackArray(new Array(8*3).fill(0));function Ice(e,t,n){let i=e.boundingVolume.computeCorners(F7e).map(r=>Rr.getPosition(r,ee.WGS84,t,n,r)),o=Dn.fromPoints(i,Bce);e.update(o.center,o.halfAxes)}Jo.prototype.updateTransform=function(e,t){e=y(e,F.IDENTITY);let n=F.multiplyTransformation(e,this.transform,Sj),i=!F.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&F.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};Jo.prototype.updateGeometricErrorScale=function(){let e=F.getScale(this.computedTransform,Nce),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function B7e(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=z.WHITE:c=z.DARKGRAY:c=z.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=Wt.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(z.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(z.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=z.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function k7e(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=Qo.FAILED,o}}function V7e(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function U7e(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}Jo.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;V7e(this,e),U7e(this,e),B7e(this,e,t,n),k7e(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===ve.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var Pce=[];Jo.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(E7e(this),this._selectedFrame=0,this.lastStyleTime=0,$.now(this._loadTimestamp),this._contentState=Qo.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=Pce;try{this._content.update(e,t)}catch(i){throw this._contentState=Qo.FAILED,i}Pce.length=0,t.commandList=n};function Oce(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function QB(e,t,n){return Math.max(P.normalize(e,t,n)-P.EPSILON7,0)}Jo.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,p=Math.pow(10,f),g=f+h,m=r,x=Math.pow(10,g),b=g+m,T=Math.pow(10,b),C=QB(this._depth,n.depth,i.depth);C=t?1-C:C;let E=!e.isSkippingLevelOfDetail&&this.refine===Ko.REPLACE?QB(this._priorityHolder._distanceToCamera,n.distance,i.distance):QB(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),v=Oce(E,a,s),D=this._priorityProgressiveResolution?0:p,R=QB(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),O=Oce(R,u,c),M=this.priorityDeferred?x:0,N=e._pass===zo.PRELOAD_FLIGHT?0:T;this._priority=C+v+D+O+M+N};Jo.prototype.isDestroyed=function(){return!1};Jo.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var Vd=Jo;function t_(e){e=y(e,y.EMPTY_OBJECT);let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(t_.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});t_.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};t_.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};t_.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};t_.prototype.getProperty=function(e){return Vn.getProperty(e,this._properties,this._class)};t_.prototype.setProperty=function(e,t){return Vn.setProperty(e,t,this._properties,this._class)};t_.prototype.getPropertyBySemantic=function(e){return Vn.getPropertyBySemantic(e,this._properties,this._class)};t_.prototype.setPropertyBySemantic=function(e,t){return Vn.setPropertyBySemantic(e,t,this._properties,this._class)};var yD=t_;function n_(e){e=y(e,y.EMPTY_OBJECT);let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(n_.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});n_.prototype.hasProperty=function(e){return Vn.hasProperty(e,this._properties,this._class)};n_.prototype.hasPropertyBySemantic=function(e){return Vn.hasPropertyBySemantic(e,this._properties,this._class)};n_.prototype.getPropertyIds=function(e){return Vn.getPropertyIds(this._properties,this._class,e)};n_.prototype.getProperty=function(e){return Vn.getProperty(e,this._properties,this._class)};n_.prototype.setProperty=function(e,t){return Vn.setProperty(e,t,this._properties,this._class)};n_.prototype.getPropertyBySemantic=function(e){return Vn.getPropertyBySemantic(e,this._properties,this._class)};n_.prototype.setPropertyBySemantic=function(e,t){return Vn.setPropertyBySemantic(e,t,this._properties,this._class)};var JB=n_;function kce(e){e=y(e,y.EMPTY_OBJECT);let t=e.metadataJson,n=e.schema,i=y(t.metadata,t.tileset),o;l(i)&&(o=new JB({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new yD({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new yD({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(kce.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var EA=kce;var Vce={},z7e=new d;Vce.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof hu||i instanceof If){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=Bd.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof hu||a instanceof If)){e._optimChildrenWithinParent=Bd.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,z7e),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),p=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=p+f){e._optimChildrenWithinParent=Bd.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===Bd.USE_OPTIMIZATION};var e3=Vce;function xD(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(xD.prototype,{length:{get:function(){return this._length}}});function H7e(e,t,n){this.item=e,this.previous=t,this.next=n}xD.prototype.add=function(e){let t=new H7e(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Uce(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}xD.prototype.remove=function(e){l(e)&&(Uce(this,e),--this._length)};xD.prototype.splice=function(e,t){if(e===t)return;Uce(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var t3=xD;function qx(){this._list=new t3,this._sentinel=this._list.add(),this._trimTiles=!1}qx.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};qx.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};qx.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};qx.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};qx.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};qx.prototype.trim=function(){this._trimTiles=!0};var n3=qx;function i3(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function Ij(e,t){let n;return t==="_loadTimestamp"?n=$.toDate(e).getTime():n=e,n}i3.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=Ij(e,n),this._referenceMaximum[n]=Ij(t,n)};function G7e(e,t){let n=e.tilePropertyName;if(l(n)){let i=Ij(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var Dj=[new z(.1,.1,.1,1),new z(.153,.278,.878,1),new z(.827,.231,.49,1),new z(.827,.188,.22,1),new z(1,.592,.259,1),new z(1,.843,0,1)];i3.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=G7e(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+P.EPSILON7,c=P.clamp(i-o,0,s)/s,u=Dj.length-1,f=c*u,h=Math.floor(f),p=Math.ceil(f),g=f-h,m=Dj[h],x=Dj[p],b=z.clone(z.WHITE);b.red=P.lerp(m.red,x.red,g),b.green=P.lerp(m.green,x.green,g),b.blue=P.lerp(m.blue,x.blue,g),e._debugColor=b};i3.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var o3=i3;function SA(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}SA.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};SA.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};SA.prototype.incrementLoadCounts=function(e){var n;if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof xf))this.texturesByteLength+=e.texturesByteLength;else{let i=e.getTextureIds();for(let o of i){let r=(n=this.texturesReferenceCounterById[o])!=null?n:0;if(r===0){let s=e.getTextureByteLengthById(o);this.texturesByteLength+=s}this.texturesReferenceCounterById[o]=r+1}}let t=e.innerContents;if(l(t)){let i=t.length;for(let o=0;o<i;++o)this.incrementLoadCounts(t[o])}};SA.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof xf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};SA.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var pm=SA;function bD(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(bD.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});bD.prototype.makeDirty=function(){this._styleDirty=!0};bD.prototype.resetDirty=function(){this._styleDirty=!1};bD.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var r3=bD;function W7e(e,t,n){let i=ci(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!ci(o,"3DTILES_bounding_volume_S2")&&!ci(o,"3DTILES_bounding_volume_cylinder"))throw new se("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new Ee({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=j7e(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(He(a,!0));let c=new Ee({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=q7e(t),this.subdivisionScheme=ss[i.subdivisionScheme],this.branchingFactor=ss.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function j7e(e){if(ci(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function q7e(e){let t=He(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var vA=W7e;var TD={};function zce(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function Pj(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function Hce(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function Oj(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}TD.encode2D=function(e,t){return(zce(e)|zce(t)<<1)>>>0};TD.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=Hce(e),t[1]=Hce(e>>1),t};TD.encode3D=function(e,t,n){return Pj(e)|Pj(t)<<1|Pj(n)<<2};TD.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=Oj(e),t[1]=Oj(e>>1),t[2]=Oj(e>>2),t};var Yx=TD;function Ho(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===ss.OCTREE&&(this.z=e.z)}Object.defineProperties(Ho.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===ss.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===ss.OCTREE?Yx.encode3D(this.x,this.y,this.z):Yx.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===ss.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});Ho.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===ss.OCTREE){let o=(this.z<<e.level)+e.z;return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};Ho.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===ss.OCTREE){let r=Math.floor(this.z/t);return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};Ho.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===ss.OCTREE){let r=e.z%n;return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};Ho.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===ss.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new Ho({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};Ho.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};Ho.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};Ho.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===ss.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};Ho.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===ss.OCTREE?this.z===e.z:!0)};Ho.prototype.isImplicitTilesetRoot=function(){return this.level===0};Ho.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};Ho.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};Ho.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===ss.OCTREE&&(e.z=this.z),e};var Gce=[0,0,0];Ho.fromMortonIndex=function(e,t,n,i){let o;return e===ss.OCTREE?(o=Yx.decode3D(i,Gce),new Ho({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=Yx.decode2D(i,Gce),new Ho({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};Ho.fromTileIndex=function(e,t,n){let i,o,r;return e===ss.OCTREE?(i=Math.floor(P.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(P.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),Ho.fromMortonIndex(e,t,i,r)};var wA=Ho;function i_(){}i_.selectTiles=function(e,t){de.throwInstantiationError()};i_.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};i_.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};i_.selectTile=function(e,t){if(e.contentVisibility(t)===jt.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};i_.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};i_.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};i_.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!Y7e(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function Y7e(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}i_.updateTile=function(e,t){Wce(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,$7e(e),e._shouldSelect=!1,e._finalResolution=!0};function Wce(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];Wce(r,t),e._visible=r._visible;return}if(X7e(e,t)){e._visible=!1;return}let i=e.refine===Ko.REPLACE,o=e._optimChildrenWithinParent===Bd.USE_OPTIMIZATION;if(i&&o&&n&&!K7e(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function X7e(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==Ko.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function K7e(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function $7e(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var da=i_;function jce(){}var CD={stack:new xl,stackMaximumLength:0};jce.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=da,s=CD.stack;for(s.push(i);s.length>0;){CD.stackMaximumLength=Math.max(CD.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===Ko.ADD,u=a.refine===Ko.REPLACE,f=Z7e(a);f&&Q7e(a,s,t),(c||u&&!f)&&(J7e(e,a),o(a,t),eqe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return CD.stack.trim(CD.stackMaximumLength),n};function Z7e(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function Q7e(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function J7e(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function eqe(e,t){e.contentAvailable&&e.contentVisibility(t)!==jt.OUTSIDE&&e.tileset._selectedTiles.push(e)}var s3=jce;function qce(){}var AD={stack:new xl,stackMaximumLength:0},ED={stack:new xl,stackMaximumLength:0};qce.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(da.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;nqe(n,t),AD.stack.trim(AD.stackMaximumLength),ED.stack.trim(ED.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function Rj(e,t){e.contentAvailable&&da.selectTile(e,t)}function tqe(e,t,n){let i=e.refine===Ko.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=da;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(da.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,p=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let x=r[m];if(x.isVisible?(t.push(x),x._foveatedFactor<g&&(p=m,g=x._foveatedFactor),h=!0):(u||o.loadSiblings)&&(x._foveatedFactor<g&&(p=m,g=x._foveatedFactor),a(x,n),c(x,n)),u){let b;x._inRequestVolume?x.hasRenderableContent?b=x.contentAvailable:b=iqe(x,n):b=!1,f=f&&b}}if(h||(f=!1),p!==-1&&i){let m=r[p];m._wasMinPriorityChild=!0;let x=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;x._foveatedFactor=Math.min(m._foveatedFactor,x._foveatedFactor),x._distanceToCamera=Math.min(m._distanceToCamera,x._distanceToCamera);for(let b=0;b<r.length;++b)r[b]._priorityHolder=x}return f}function nqe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=da,a=AD.stack;for(a.push(e);a.length>0;){AD.stackMaximumLength=Math.max(AD.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?tqe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===Ko.ADD?(Rj(c,t),o(c,t)):c.refine===Ko.REPLACE&&(o(c,t),h&&Rj(c,t)):(n._emptyTiles.push(c),o(c,t),h&&Rj(c,t)),r(c,t),s(c,t)}}function iqe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=da,s=!0,a=ED.stack;for(a.push(e);a.length>0;){ED.stackMaximumLength=Math.max(ED.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let p=0;p<f;++p){let g=u[p];a.push(g)}}return e.hasEmptyContent||s}var a3=qce;function Yce(){}var SD={stack:new xl,stackMaximumLength:0},vD={stack:new xl,stackMaximumLength:0},o_={stack:new xl,stackMaximumLength:0,ancestorStack:new xl,ancestorStackMaximumLength:0},oqe=2;Yce.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(da.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;uqe(n,t),fqe(n,t),SD.stack.trim(SD.stackMaximumLength),vD.stack.trim(vD.stackMaximumLength),o_.stack.trim(o_.stackMaximumLength),o_.ancestorStack.trim(o_.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function rqe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=da,r=vD.stack;for(r.push(e);r.length>0;){vD.stackMaximumLength=Math.max(vD.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<oqe&&r.push(u))}}}function c3(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:rqe(e,t)}function sqe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function aqe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function cqe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=da;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(da.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function lqe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function uqe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=da,c=SD.stack;for(c.push(e);c.length>0;){SD.stackMaximumLength=Math.max(SD.stackMaximumLength,c.length);let u=c.pop();sqe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?cqe(u,c,t)&&h:!1;let p=!u._refines&&h;u.hasRenderableContent?u.refine===Ko.ADD?(c3(u,t),r(u,t)):u.refine===Ko.REPLACE&&(lqe(u,i)?(r(u,t),p&&c3(u,t)):p?(c3(u,t),r(u,t)):aqe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),p&&c3(u,t)),s(u,t),a(u,t)}}function fqe(e,t){let{selectTile:n,canTraverse:i}=da,{stack:o,ancestorStack:r}=o_,s;for(o.push(e);o.length>0||r.length>0;){if(o_.stackMaximumLength=Math.max(o_.stackMaximumLength,o.length),o_.ancestorStackMaximumLength=Math.max(o_.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===Ko.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var l3=Yce;function er(e){e=y(e,y.EMPTY_OBJECT),this._marsOptions=y(e.marsOptions,{}),this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new n3,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=y(e.showCreditsOnScreen,!1),this._cullWithChildrenBounds=y(e.cullWithChildrenBounds,!0),this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new xl,this._maximumScreenSpaceError=y(e.maximumScreenSpaceError,16),this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=y(e.cacheBytes,512*1024*1024);let t=y(e.maximumCacheOverflowBytes,512*1024*1024);this._maximumCacheOverflowBytes=t,this._styleEngine=new r3,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?F.clone(e.modelMatrix):F.clone(F.IDENTITY),this._addHeightCallbacks=[],this._statistics=new pm,this._statisticsLast=new pm,this._statisticsPerPass=new Array(zo.NUMBER_OF_PASSES);for(let o=0;o<zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new pm;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new o3(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=y(e.cullRequestsWhileMoving,!0),this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=y(e.cullRequestsWhileMovingMultiplier,60),this.progressiveResolutionHeightFraction=P.clamp(y(e.progressiveResolutionHeightFraction,.3),0,.5),this.preferLeaves=y(e.preferLeaves,!1),this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._ellipsoid=y(e.ellipsoid,ee.WGS84),this._initialClippingPlanesOriginMatrix=F.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=y(e.vectorClassificationOnly,!1),this._vectorKeepDecodedPositions=y(e.vectorKeepDecodedPositions,!1),this.preloadWhenHidden=y(e.preloadWhenHidden,!1),this.preloadFlightDestinations=y(e.preloadFlightDestinations,!0),this._pass=void 0,this.dynamicScreenSpaceError=y(e.dynamicScreenSpaceError,!0),this.foveatedScreenSpaceError=y(e.foveatedScreenSpaceError,!0),this._foveatedConeSize=y(e.foveatedConeSize,.1),this._foveatedMinimumScreenSpaceErrorRelaxation=y(e.foveatedMinimumScreenSpaceErrorRelaxation,0),this.foveatedInterpolationCallback=y(e.foveatedInterpolationCallback,P.lerp),this.foveatedTimeDelay=y(e.foveatedTimeDelay,.2),this.dynamicScreenSpaceErrorDensity=y(e.dynamicScreenSpaceErrorDensity,2e-4),this.dynamicScreenSpaceErrorFactor=y(e.dynamicScreenSpaceErrorFactor,24),this.dynamicScreenSpaceErrorHeightFalloff=y(e.dynamicScreenSpaceErrorHeightFalloff,.25),this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=y(e.shadows,yn.ENABLED),this.show=y(e.show,!0),this.colorBlendMode=ou.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new Bp(e.pointCloudShading),this._pointCloudEyeDomeLighting=new kg,this.loadProgress=new me,this.allTilesLoaded=new me,this.initialTilesLoaded=new me,this.tileLoad=new me,this.tileUnload=new me,this.tileFailed=new me,this.tileVisible=new me,this.skipLevelOfDetail=y(e.skipLevelOfDetail,!1),this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=y(e.baseScreenSpaceError,1024),this.skipScreenSpaceErrorFactor=y(e.skipScreenSpaceErrorFactor,16),this.skipLevels=y(e.skipLevels,1),this.immediatelyLoadDesiredLevelOfDetail=y(e.immediatelyLoadDesiredLevelOfDetail,!1),this.loadSiblings=y(e.loadSiblings,!1),this._clippingPlanes=void 0,l(e.clippingPlanes)&&Es.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&tm.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new mC,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new Lg(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=y(e.backFaceCulling,!0),this._enableShowOutline=y(e.enableShowOutline,!0),this.showOutline=y(e.showOutline,!0),this.outlineColor=y(e.outlineColor,z.BLACK),this.splitDirection=y(e.splitDirection,Gr.NONE),this.enableCollision=y(e.enableCollision,!1),this._projectTo2D=y(e.projectTo2D,!1),this._enablePick=y(e.enablePick,!1),this.debugFreezeFrame=y(e.debugFreezeFrame,!1),this.debugColorizeTiles=y(e.debugColorizeTiles,!1),this._enableDebugWireframe=y(e.enableDebugWireframe,!1),this.debugWireframe=y(e.debugWireframe,!1),this.debugWireframe===!0&&this._enableDebugWireframe===!1&&Ct("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.debugShowContentBoundingVolume=y(e.debugShowContentBoundingVolume,!1),this.debugShowViewerRequestVolume=y(e.debugShowViewerRequestVolume,!1),this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=y(e.debugShowGeometricError,!1),this.debugShowRenderingStatistics=y(e.debugShowRenderingStatistics,!1),this.debugShowMemoryUsage=y(e.debugShowMemoryUsage,!1),this.debugShowUrl=y(e.debugShowUrl,!1),this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=y(e.featureIdLabel,"featureId_0");typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=y(e.instanceFeatureIdLabel,"instanceFeatureId_0");typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._initForMars3D&&this._initForMars3D(e)}Object.defineProperties(er.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Es.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){tm.setOwner(e,this,"_clippingPolygons")}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Qa("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=F.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(F.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):F.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,tle(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});er.fromIonAssetId=async function(e,t){let n=await cf.fromAssetId(e);return er.fromUrl(n,t)};er.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=Ee.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await er.loadJson(n),r=await dqe(n,o),s=new er(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,tle(s);let c=l(o.asset.gltfUpAxis)?Vo.fromName(o.asset.gltfUpAxis):Vo.Y,u=y(t.modelUpAxis,c),f=y(t.modelForwardAxis,Vo.X);s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let p=s._root.createBoundingVolume(o.root.boundingVolume,F.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(p);return l(g)&&g.height>di._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=Mt.eastNorthUpToFixedFrame(p)),s._clippingPlanesOriginMatrix=F.clone(s._initialClippingPlanesOriginMatrix),s};er.loadJson=function(e){return Ee.createIfNeeded(e).fetchJson()};er.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};er.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new se("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new se("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&er.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Xce(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===Ko.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],p=Xce(this,e,h,c);c.children.push(p),p._depth=c._depth+1,a.push(p)}this._cullWithChildrenBounds&&e3.checkChildrenWithinParent(c)}return s};function Xce(e,t,n,i){if(!(l(n.implicitTiling)||ci(n,"3DTILES_implicit_tiling")))return new Vd(e,t,n,i);let r=e.schema,s=new vA(t,n,r),a=new wA({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=He(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new Vd(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function dqe(e,t){let n=ci(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=wi.getSchemaLoader({resource:e});else if(l(n.schema))i=wi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new EA({schema:i.schema,metadataJson:n});return wi.unload(i),o}var Kce=new d,hqe=new fe,mqe=new F,pqe=new d,_qe=new d,gqe=new d,yqe=new d;function xqe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof If)n=d.normalize(a.positionWC,Kce),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let x=F.inverseTransformation(c.computedTransform,mqe),b=t.mapProjection.ellipsoid,T=u.boundingVolume,C=F.multiplyByPoint(x,T.center,pqe);if(d.magnitude(C)>b.minimumRadius){let A=fe.fromCartesian(C,b,hqe);n=d.normalize(a.positionWC,Kce),i=a.directionWC,o=a.positionCartographic.height,r=0,s=A.height*2}else{let A=F.multiplyByPoint(x,a.positionWC,_qe);if(n=d.UNIT_Z,i=F.multiplyByPointAsVector(x,a.directionWC,gqe),i=d.normalize(i,i),o=A.z,u instanceof hu){let E=Z.getColumn(T.halfAxes,2,yqe),v=d.magnitude(E);r=C.z-v,s=C.z+v}else if(u instanceof ry){let E=T.radius;r=C.z-E,s=C.z+E}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,p=s,g=P.clamp((o-h)/(p-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function bqe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Qce(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?Lqe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function Zce(e,t){return e._priority-t._priority}er.prototype.postPassesUpdate=function(e){l(this._root)&&(Tqe(this,e),Fqe(this,e),this._cache.unloadTiles(this,ele),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};er.prototype.prePassesUpdate=function(e){if(!l(this._root))return;Dqe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=$.clone(e.time)),this._timeSinceLoad=Math.max($.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&xqe(this,e),e.newFrame&&this._cache.reset()};function Tqe(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==Qo.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function Cqe(e){let t=e._requestedTiles;t.sort(Zce);for(let n=0;n<t.length;++n)bqe(e,t[n])}function Qce(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function Aqe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==Qo.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var Eqe=new fe,Sqe=new fe,vqe=new d;function wqe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=fe.clone(r.positionCartographic,Eqe),c=fe.fromCartesian(o.center,s,Sqe);l(c)&&(a.height=c.height);let u=fe.toCartesian(a,s,vqe);d.distance(u,o.center)<=o.radius&&n.afterRender.push(()=>{l(r.callback)&&r.callback(a),r.invoked=!1})}}function Dqe(e,t){Aqe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Qce(f,e,u)}}e.totalMemoryUsageInBytes<i?Pqe(e):a&&n.length>0&&Iqe(e)}function Iqe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(Zce)}function Pqe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var u3=new d,Oqe={maximumFractionDigits:3};function $ce(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,Oqe):Math.round(t).toLocaleString()}function Mj(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,u3);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,u3);r=d.multiplyByScalar(r,.75*n,u3),o=d.add(r,i,u3)}return o}function Lj(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=`
Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=`
Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=`
Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=`
Triangles: ${e.content.trianglesLength}`,o++),i+=`
Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=`
Texture Memory: ${$ce(e.content.texturesByteLength)}`,i+=`
Geometry Memory: ${$ce(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=`
Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=`
- ${s[a]}`;o+=s.length}else i+=`
Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function Rqe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:Mj(e.debugPickedTile),a=Lj(e.debugPickedTile,e,s);a.pixelOffset=new U(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];Lj(a,e,Mj(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&Lj(a,e,Mj(a))}}e._tileDebugLabels.update(t)}function Mqe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new ai({stencil:0,pass:ve.CESIUM_3D_TILE,renderState:Ve.fromCache({stencilMask:Ut.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let x=s[m];f&&u.raiseEvent(x),wqe(e,x,t),x.update(e,t,n),c.incrementSelectionCounts(x.content),++c.selected}let p=e._emptyTiles;for(let m=0;m<p.length;++m)p[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,x=m.length;i.length+=x;for(let b=g-1;b>=0;--b)i[h+x+b]=i[h+b];for(let b=0;b<x;++b)i[h+b]=m[b]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new Yp),Rqe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var Jce=[];function Lqe(e,t){let n=t,i=Jce;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&(Nqe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function ele(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function Nqe(e,t){e._cache.unloadTile(e,t,ele),t.destroy()}er.prototype.trimLoadedTiles=function(){this._cache.trim()};function Fqe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;pm.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function Bqe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function kqe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!F.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=F.clone(e.modelMatrix,e._previousModelMatrix)))}function Vqe(e,t,n,i){if(t.mode===ne.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,Bqe(e),kqe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&Cqe(e),Mqe(e,t,i),pm.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function tle(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(vt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new vt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}er.prototype.getTraversal=function(e){let{pass:t}=e;return t===zo.MOST_DETAILED_PRELOAD||t===zo.MOST_DETAILED_PICK?s3:this.isSkippingLevelOfDetail?l3:a3};er.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};er.prototype.updateForPass=function(e,t){let n=t.pass;if(n===zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=zo.getPassOptions(n),a=s.ignoreCommands,c=y(t.commandList,i),u=c.length;if(e.commandList=c,e.camera=y(t.camera,o),e.cullingVolume=y(t.cullingVolume,r),s.isRender){let p=this._environmentMapManager;l(this._root)&&(p.position=this.boundingSphere.center),p.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=Vqe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};er.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};er.prototype.isDestroyed=function(){return!1};er.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=Jce;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,ue(this)};er.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};er.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!er.supportedExtensions[e[t]])throw new se(`Unsupported 3D Tiles Extension: ${e[t]}`)};var Uqe=new pn,zqe=new d,Hqe=new fe;er.prototype.getHeight=function(e,t){var s;let n=t.ellipsoid;l(n)||(n=ee.WGS84);let i=Uqe,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,zqe);if(l(r))return(s=n.cartesianToCartographic(r,Hqe))==null?void 0:s.height};er.prototype.updateHeight=function(e,t,n){n=y(n,ee.WGS84);let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var Gqe=new qa,Wqe=new d;er.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=ti.raySphere(e,u.contentBoundingVolume.boundingSphere,Gqe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=ce.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=ce.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,Wqe);if(l(f))return a=d.clone(f,n),a}};var ws=er;var jqe=new F;function ay(e,t){t.collectionChanged.addEventListener(ay.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new wt,this._onCollectionChanged(t,t.values,[],[])}ay.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&Y.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,jqe),c=Ee.createIfNeeded(Y.getValueOrUndefined(a._uri,e)));let p=l(u)?u.tilesetPrimitive:void 0;if(!f){l(p)&&(p.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(p)&&i.removeAndDestroy(p),delete n[s.id],qqe(c,n,s,i)),l(p)&&(p.show=!0,l(h)&&(p.modelMatrix=h),p.maximumScreenSpaceError=Y.getValueOrDefault(a.maximumScreenSpaceError,e,p.maximumScreenSpaceError))}return!0};ay.prototype.isDestroyed=function(){return!1};ay.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(ay.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)Nj(this,e[i],t,n);return ue(this)};ay.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return ct.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(ce.clone(i.boundingSphere,t),ct.DONE):ct.FAILED:ct.PENDING};ay.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(Nj(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Nj(this,r,a,c),s.remove(r.id)};function Nj(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function qqe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await ws.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var f3=ay;var Yqe=z.WHITE,Xqe=z.BLACK,Kqe=new U(2,2);function DA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(DA.prototype,{isConstant:{get:function(){return Y.isConstant(this._evenColor)&&Y.isConstant(this._oddColor)&&Y.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:le("evenColor"),oddColor:le("oddColor"),repeat:le("repeat")});DA.prototype.getType=function(e){return"Checkerboard"};var $qe=new $;DA.prototype.getValue=function(e,t){return l(e)||(e=$.now($qe)),l(t)||(t={}),t.lightColor=Y.getValueOrClonedDefault(this._evenColor,e,Yqe,t.lightColor),t.darkColor=Y.getValueOrClonedDefault(this._oddColor,e,Xqe,t.darkColor),t.repeat=Y.getValueOrDefault(this._repeat,e,Kqe),t};DA.prototype.equals=function(e){return this===e||e instanceof DA&&Y.equals(this._evenColor,e._evenColor)&&Y.equals(this._oddColor,e._oddColor)&&Y.equals(this._repeat,e._repeat)};var wD=DA;var nle={id:void 0};function DD(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function rc(e){this._owner=e,this._entities=new wt,this._addedEntities=new wt,this._removedEntities=new wt,this._changedEntities=new wt,this._suspendCount=0,this._collectionChanged=new me,this._id=Yn(),this._show=!0,this._firing=!1,this._refire=!1}rc.prototype.suspendEvents=function(){this._suspendCount++};rc.prototype.resumeEvents=function(){this._suspendCount--,DD(this)};Object.defineProperties(rc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});rc.prototype.computeAvailability=function(){let e=ze.MAXIMUM_VALUE,t=ze.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;$.lessThan(a,e)&&!a.equals(ze.MINIMUM_VALUE)&&(e=a),$.greaterThan(c,t)&&!c.equals(ze.MAXIMUM_VALUE)&&(t=c)}}return ze.MAXIMUM_VALUE.equals(e)&&(e=ze.MINIMUM_VALUE),ze.MINIMUM_VALUE.equals(t)&&(t=ze.MAXIMUM_VALUE),new An({start:e,stop:t})};rc.prototype.add=function(e){e instanceof ar||(e=new ar(e));let t=e.id,n=this._entities;if(n.contains(t))throw new de(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(rc.prototype._onEntityDefinitionChanged,this),DD(this),e};rc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};rc.prototype.contains=function(e){return this._entities.get(e.id)===e};rc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(rc.prototype._onEntityDefinitionChanged,this),DD(this),!0):!1};rc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(rc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),DD(this)};rc.prototype.getById=function(e){return this._entities.get(e)};rc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(nle.id=e,t=new ar(nle),this.add(t)),t};rc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),DD(this)};var ha=rc;var d3={id:void 0},IA=new Array(2);function Fj(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function ile(e,t,n,i){IA[0]=n,IA[1]=i.id,t[JSON.stringify(IA)]=i.definitionChanged.addEventListener(Vr.prototype._onDefinitionChanged,e)}function ole(e,t,n,i){IA[0]=n,IA[1]=i.id;let o=JSON.stringify(IA);t[o](),t[o]=void 0}function cy(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new ha(e),p=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(Vr.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],ole(e,p,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(Vr.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],ile(e,p,g,s);let x=h.getById(s.id);l(x)||(x=f.getById(s.id),l(x)?Fj(x):(d3.id=s.id,x=new ar(d3)),h.add(x)),x.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function Vr(e,t){this._owner=t,this._composite=new ha(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Yn(),this._eventHash={},cy(this),this._shouldRecomposite=!1}Object.defineProperties(Vr.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});Vr.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),cy(this)};Vr.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),cy(this),!0):!1};Vr.prototype.removeAllCollections=function(){this._collections.length=0,cy(this)};Vr.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};Vr.prototype.contains=function(e){return this._composite.contains(e)};Vr.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};Vr.prototype.getCollection=function(e){return this._collections[e]};Vr.prototype.getCollectionsLength=function(){return this._collections.length};function h3(e,t){return e.indexOf(t)}function rle(e,t,n){let i=e._collections;if(t=P.clamp(t,0,i.length-1),n=P.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,cy(e)}Vr.prototype.raiseCollection=function(e){let t=h3(this._collections,e);rle(this,t,t+1)};Vr.prototype.lowerCollection=function(e){let t=h3(this._collections,e);rle(this,t,t-1)};Vr.prototype.raiseCollectionToTop=function(e){let t=h3(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),cy(this))};Vr.prototype.lowerCollectionToBottom=function(e){let t=h3(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),cy(this))};Vr.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};Vr.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(cy(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};Vr.prototype.computeAvailability=function(){return this._composite.computeAvailability()};Vr.prototype.getById=function(e){return this._composite.getById(e)};Vr.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,p=e.id;for(s=0;s<f;s++){let m=n[s];ole(this,h,p,m);let x=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(x),l(c)&&(l(u)||(u=r.getById(x),Fj(u)),u.merge(c));l(u)||r.removeById(x),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];ile(this,h,p,m);let x=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(x),l(c)&&(l(u)||(u=r.getById(x),l(u)?Fj(u):(d3.id=x,u=new ar(d3),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};Vr.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let p=s-1;p>=0;p--){let g=o[p].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var sle=Vr;function Bj(){this._removalFunctions=[]}Bj.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};Bj.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var xr=Bj;function Uj(e,t){return $.compare(e.start,t.start)}function Ur(e){if(this._intervals=[],this._changedEvent=new me,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(Ur.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});Ur.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof Ur))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!An.equals(n[r],i[r],t))return!1;return!0};Ur.prototype.get=function(e){return this._intervals[e]};Ur.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};Ur.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};Ur.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};Ur.prototype.contains=function(e){return this.indexOf(e)>=0};var kj=new An;Ur.prototype.indexOf=function(e){let t=this._intervals;kj.start=e,kj.stop=e;let n=No(t,kj,Uj);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&An.contains(t[n-1],e)?n-1:~n)};Ur.prototype.findInterval=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};Ur.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||$.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=No(n,e,Uj);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=$.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?($.greaterThan(e.stop,n[i-1].stop)?e=new An({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new An({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=$.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new An({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new An({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=$.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new An({start:e.start,stop:$.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:$.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new An({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};Ur.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=No(t,e,Uj);n<0&&(n=~n);let i=!1;for(n>0&&($.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,($.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new An({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new An({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new An({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&$.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new An({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new An({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&($.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new An({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};Ur.prototype.intersect=function(e,t,n){let i=new Ur,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if($.lessThan(c.stop,u.start))++o;else if($.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=An.intersect(c,u,new An,n);f.isEmpty||i.addInterval(f,t)}$.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};Ur.fromJulianDateArray=function(e,t){l(t)||(t=new Ur);let n=e.julianDates,i=n.length,o=e.dataCallback,r=y(e.isStartIncluded,!0),s=y(e.isStopIncluded,!0),a=y(e.leadingInterval,!1),c=y(e.trailingInterval,!1),u,f=0;a&&(++f,u=new An({start:ze.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let p=n[h],g=n[h+1];u=new An({start:p,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),p=g}return c&&(u=new An({start:n[i-1],stop:ze.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var sc=new z_,ID=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Vj(e,t,n){l(n)||(n=new $),$.toGregorianDate(e,sc);let i=sc.millisecond+t.millisecond,o=sc.second+t.second,r=sc.minute+t.minute,s=sc.hour+t.hour,a=sc.day+t.day,c=sc.month+t.month,u=sc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),ID[2]=Sh(u)?29:28;a>ID[c]||c>=13;)a>ID[c]&&(a-=ID[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),ID[2]=Sh(u)?29:28;return sc.millisecond=i,sc.second=o,sc.minute=r,sc.hour=s,sc.day=a,sc.month=c,sc.year=u,$.fromGregorianDate(sc,n)}var Zqe=new $,Qqe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function ale(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(Qqe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),$.toGregorianDate($.fromIso8601(e,Zqe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var PD=new z_;Ur.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=$.fromIso8601(n[0]),o=$.fromIso8601(n[1]),r=[];if(!ale(n[2],PD))r.push(i,o);else{let s=$.clone(i);for(r.push(s);$.compare(s,o)<0;)s=Vj(s,PD),$.compare(o,s)<=0&&$.clone(o,s),r.push(s)}return Ur.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};Ur.fromIso8601DateArray=function(e,t){return Ur.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return $.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};Ur.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=y(e.relativeToPrevious,!1),r=[],s,a,c=i.length;for(let u=0;u<c;++u)(ale(i[u],PD)||u===0)&&(o&&l(a)?s=Vj(a,PD):s=Vj(n,PD),r.push(s),a=s);return Ur.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var Kr=Ur;function Jqe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function Xx(){this._eventHelper=new xr,this._definitionChanged=new me,this._intervals=new Kr,this._intervals.changedEvent.addEventListener(Xx.prototype._intervalsChanged,this)}Object.defineProperties(Xx.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var eYe=new $;Xx.prototype.getValue=function(e,t){l(e)||(e=$.now(eYe));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};Xx.prototype.equals=function(e){return this===e||e instanceof Xx&&this._intervals.equals(e._intervals,Y.equals)};Xx.prototype._intervalsChanged=function(){Jqe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var jc=Xx;function ly(){this._definitionChanged=new me,this._composite=new jc,this._composite.definitionChanged.addEventListener(ly.prototype._raiseDefinitionChanged,this)}Object.defineProperties(ly.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});ly.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var tYe=new $;ly.prototype.getValue=function(e,t){l(e)||(e=$.now(tYe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};ly.prototype.equals=function(e){return this===e||e instanceof ly&&this._composite.equals(e._composite,Y.equals)};ly.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var OD=ly;function uy(e){this._referenceFrame=y(e,Gi.FIXED),this._definitionChanged=new me,this._composite=new jc,this._composite.definitionChanged.addEventListener(uy.prototype._raiseDefinitionChanged,this)}Object.defineProperties(uy.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var nYe=new $;uy.prototype.getValue=function(e,t){return l(e)||(e=$.now(nYe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};uy.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};uy.prototype.equals=function(e){return this===e||e instanceof uy&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,Y.equals)};uy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Oa=uy;var iYe={ROUNDED:0,MITERED:1,BEVELED:2},ki=Object.freeze(iYe);var ma=[new d,new d],oYe=new d,rYe=new d,sYe=new d,aYe=new d,cYe=new d,lYe=new d,uYe=new d,fYe=new d,dYe=new d,PA=new d,m3=new d,RD={},zj=new fe;function hYe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];zj=t.cartesianToCartographic(o,zj),n[i]=zj.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function Hj(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let p=t+u*h;c[u]=p}return c[0]=t,c.push(n),c}var p3=new d,_3=new d;function mYe(e,t,n,i){let o=new os(n,i),r=o.projectPointOntoPlane(d.add(n,e,p3),p3),s=o.projectPointOntoPlane(d.add(n,t,_3),_3),a=U.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var pYe=new d(-1,0,0),Kx=new F,_Ye=new F,Gj=new Z,gYe=Z.IDENTITY.clone(),yYe=new d,xYe=new oe,cle=new d;function r_(e,t,n,i,o,r,s,a){let c=yYe,u=xYe;Kx=Mt.eastNorthUpToFixedFrame(e,o,Kx),c=F.multiplyByPointAsVector(Kx,pYe,c),c=d.normalize(c,c);let f=mYe(c,t,e,o);Gj=Z.fromRotationZ(f,Gj),cle.z=r,Kx=F.multiplyTransformation(Kx,F.fromRotationTranslation(Gj,cle,_Ye),Kx);let h=gYe;h[0]=s;for(let p=0;p<a;p++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=Z.multiplyByVector(h,u,u),u=F.multiplyByPoint(Kx,u,u),i.push(u.x,u.y,u.z);return i}var bYe=new d;function Wj(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,bYe);i=r_(c,t,n,i,o,r[a/3],s,1)}return i}function TYe(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function lle(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var ule=new Le,fle=new d,dle=new Z;function hle(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,PA),d.subtract(n,e,m3)),h=i===ki.BEVELED?0:Math.ceil(f/P.toRadians(5)),p;o?p=Z.fromQuaternion(Le.fromAxisAngle(d.negate(e,PA),f/(h+1),ule),dle):p=Z.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),ule),dle);let g,m;if(t=d.clone(t,fle),h>0){let x=u?2:1;for(let b=0;b<h;b++)t=Z.multiplyByVector(p,t,t),g=d.subtract(t,e,PA),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,m3),s=r_(m,g,a,s,r,c,1,x)}else g=d.subtract(t,e,PA),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,m3),s=r_(m,g,a,s,r,c,1,1),n=d.clone(n,fle),g=d.subtract(n,e,PA),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,m3),s=r_(m,g,a,s,r,c,1,1);return s}RD.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];U.equals(r,s)||n.push(s)}return n};RD.angleIsGreaterThanPi=function(e,t,n,i){let o=new os(n,i),r=o.projectPointOntoPlane(d.add(n,e,p3),p3),s=o.projectPointOntoPlane(d.add(n,t,_3),_3);return s.x*r.y-s.y*r.x>=0};var CYe=new d,AYe=new d;RD.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=hYe(e,r),a=i._granularity,c=i._cornerType,u=o?TYe(t,n):lle(t,n),f=o?lle(t,n):void 0,h=n.height/2,p=n.width/2,g=e.length,m=[],x=o?[]:void 0,b=oYe,T=rYe,C=sYe,A=aYe,E=cYe,v=lYe,D=uYe,R=fYe,O=dYe,M=e[0],N=e[1];A=r.geodeticSurfaceNormal(M,A),b=d.subtract(N,M,b),b=d.normalize(b,b),R=d.cross(A,b,R),R=d.normalize(R,R);let _=s[0],S=s[1];o&&(x=r_(M,R,f,x,r,_+h,1,1)),O=d.clone(M,O),M=N,T=d.negate(b,T);let w,I;for(let H=1;H<g-1;H++){let V=o?2:1;if(N=e[H+1],M.equals(N)){Ct("Positions are too close and are considered equivalent with rounding error.");continue}b=d.subtract(N,M,b),b=d.normalize(b,b),A=r.geodeticSurfaceNormal(M,A);let G=d.multiplyByScalar(A,d.dot(b,A),CYe);d.subtract(b,G,G),d.normalize(G,G);let k=d.multiplyByScalar(A,d.dot(T,A),AYe);if(d.subtract(T,k,k),d.normalize(k,k),!P.equalsEpsilon(Math.abs(d.dot(G,k)),1,P.EPSILON7)){C=d.add(b,T,C),C=d.normalize(C,C),C=d.cross(C,A,C),C=d.cross(A,C,C),C=d.normalize(C,C);let q=1/Math.max(.25,d.magnitude(d.cross(C,T,PA))),J=RD.angleIsGreaterThanPi(b,T,M,r);J?(E=d.add(M,d.multiplyByScalar(C,q*p,C),E),v=d.add(E,d.multiplyByScalar(R,p,v),v),ma[0]=d.clone(O,ma[0]),ma[1]=d.clone(v,ma[1]),w=Hj(ma,_+h,S+h,a),I=Bi.generateArc({positions:ma,granularity:a,ellipsoid:r}),m=Wj(I,R,u,m,r,w,1),R=d.cross(A,b,R),R=d.normalize(R,R),D=d.add(E,d.multiplyByScalar(R,p,D),D),c===ki.ROUNDED||c===ki.BEVELED?hle(E,v,D,c,J,r,m,u,S+h,o):(C=d.negate(C,C),m=r_(M,C,u,m,r,S+h,q,V)),O=d.clone(D,O)):(E=d.add(M,d.multiplyByScalar(C,q*p,C),E),v=d.add(E,d.multiplyByScalar(R,-p,v),v),ma[0]=d.clone(O,ma[0]),ma[1]=d.clone(v,ma[1]),w=Hj(ma,_+h,S+h,a),I=Bi.generateArc({positions:ma,granularity:a,ellipsoid:r}),m=Wj(I,R,u,m,r,w,1),R=d.cross(A,b,R),R=d.normalize(R,R),D=d.add(E,d.multiplyByScalar(R,-p,D),D),c===ki.ROUNDED||c===ki.BEVELED?hle(E,v,D,c,J,r,m,u,S+h,o):m=r_(M,C,u,m,r,S+h,q,V),O=d.clone(D,O)),T=d.negate(b,T)}else m=r_(O,R,u,m,r,_+h,1,1),O=M;_=S,S=s[H+1],M=N}ma[0]=d.clone(O,ma[0]),ma[1]=d.clone(M,ma[1]),w=Hj(ma,_+h,S+h,a),I=Bi.generateArc({positions:ma,granularity:a,ellipsoid:r}),m=Wj(I,R,u,m,r,w,1),o&&(x=r_(M,R,f,x,r,S+h,1,1)),g=m.length;let L=o?g+x.length:g,B=new Float64Array(L);return B.set(m),o&&B.set(x,g),B};var _m=RD;var qj={},OA=new d,yle=new d,EYe=new d,mle=new d,qc=[new d,new d],xle=new d,ble=new d,Tle=new d,SYe=new d,vYe=new d,wYe=new d,DYe=new d,IYe=new d,PYe=new d,OYe=new d,ple=new Le,_le=new Z;function g3(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,OA),d.subtract(n,e,yle)),s=i===ki.BEVELED?1:Math.ceil(r/P.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=Z.fromQuaternion(Le.fromAxisAngle(d.negate(e,OA),r/s,ple),_le):u=Z.fromQuaternion(Le.fromAxisAngle(e,r/s,ple),_le);let f=0;t=d.clone(t,OA);for(let h=0;h<s;h++)t=Z.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function RYe(e){let t=xle,n=ble,i=Tle,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=g3(t,n,i,ki.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=g3(t,n,i,ki.ROUNDED,!1);return[r,c]}function gle(e,t,n,i){let o=OA;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function jj(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,OA),a=d.negate(s,yle),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,EYe),p=d.add(h,a,mle);o[c++]=p.x,o[c++]=p.y,o[c++]=p.z;let g=d.add(h,s,mle);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}qj.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var MYe=new d,LYe=new d;qj.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=xle,c=ble,u=Tle,f=SYe,h=vYe,p=wYe,g=DYe,m=IYe,x=PYe,b=OYe,T=[],C=s?[]:void 0,A=s?[]:void 0,E=n[0],v=n[1];c=d.normalize(d.subtract(v,E,c),c),a=i.geodeticSurfaceNormal(E,a),f=d.normalize(d.cross(a,c,f),f),s&&(C.push(f.x,f.y,f.z),A.push(a.x,a.y,a.z)),g=d.clone(E,g),E=v,u=d.negate(c,u);let D,R=[],O,M=n.length;for(O=1;O<M-1;O++){a=i.geodeticSurfaceNormal(E,a),v=n[O+1],c=d.normalize(d.subtract(v,E,c),c);let _=d.multiplyByScalar(a,d.dot(c,a),MYe);d.subtract(c,_,_),d.normalize(_,_);let S=d.multiplyByScalar(a,d.dot(u,a),LYe);if(d.subtract(u,S,S),d.normalize(S,S),!P.equalsEpsilon(Math.abs(d.dot(_,S)),1,P.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let I=o/Math.max(.25,d.magnitude(d.cross(h,u,OA))),L=_m.angleIsGreaterThanPi(c,u,E,i);h=d.multiplyByScalar(h,I,h),L?(m=d.add(E,h,m),b=d.add(m,d.multiplyByScalar(f,o,b),b),x=d.add(m,d.multiplyByScalar(f,o*2,x),x),qc[0]=d.clone(g,qc[0]),qc[1]=d.clone(b,qc[1]),D=Bi.generateArc({positions:qc,granularity:t,ellipsoid:i}),T=jj(D,f,o,T),s&&(C.push(f.x,f.y,f.z),A.push(a.x,a.y,a.z)),p=d.clone(x,p),f=d.normalize(d.cross(a,c,f),f),x=d.add(m,d.multiplyByScalar(f,o*2,x),x),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===ki.ROUNDED||r===ki.BEVELED?R.push({leftPositions:g3(m,p,x,r,L)}):R.push({leftPositions:gle(E,d.negate(h,h),x,L)})):(x=d.add(E,h,x),b=d.add(x,d.negate(d.multiplyByScalar(f,o,b),b),b),m=d.add(x,d.negate(d.multiplyByScalar(f,o*2,m),m),m),qc[0]=d.clone(g,qc[0]),qc[1]=d.clone(b,qc[1]),D=Bi.generateArc({positions:qc,granularity:t,ellipsoid:i}),T=jj(D,f,o,T),s&&(C.push(f.x,f.y,f.z),A.push(a.x,a.y,a.z)),p=d.clone(m,p),f=d.normalize(d.cross(a,c,f),f),m=d.add(x,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(x,d.negate(d.multiplyByScalar(f,o,g),g),g),r===ki.ROUNDED||r===ki.BEVELED?R.push({rightPositions:g3(x,p,m,r,L)}):R.push({rightPositions:gle(E,h,m,L)})),u=d.negate(c,u)}E=v}a=i.geodeticSurfaceNormal(E,a),qc[0]=d.clone(g,qc[0]),qc[1]=d.clone(E,qc[1]),D=Bi.generateArc({positions:qc,granularity:t,ellipsoid:i}),T=jj(D,f,o,T),s&&(C.push(f.x,f.y,f.z),A.push(a.x,a.y,a.z));let N;return r===ki.ROUNDED&&(N=RYe(T)),{positions:T,corners:R,lefts:C,normals:A,endPositions:N}};var ji=qj;var Ele=new d,Sle=new d,y3=new d,x3=new d,NYe=new d,vle=new d,fy=new d,RA=new d;function wle(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Ud(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,fy),fy);r.normal&&ji.addAttribute(s,t,i,o),r.tangent&&ji.addAttribute(a,u,i,o),r.bitangent&&ji.addAttribute(c,n,i,o)}function Dle(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new mn,u,f=0,h=0,p,g=0,m;for(p=0;p<i.length;p+=2)m=i[p].length-3,f+=m,g+=m*2,h+=i[p+1].length-3;for(f+=3,h+=3,p=0;p<o.length;p++){u=o[p];let Q=o[p].leftPositions;l(Q)?(m=Q.length,f+=m,g+=m):(m=o[p].rightPositions.length,h+=m,g+=m)}let x=l(r),b;x&&(b=r[0].length-3,f+=b,h+=b,b/=3,g+=b*6);let T=f+h,C=new Float64Array(T),A=t.normal?new Float32Array(T):void 0,E=t.tangent?new Float32Array(T):void 0,v=t.bitangent?new Float32Array(T):void 0,D={normals:A,tangents:E,bitangents:v},R=0,O=T-1,M,N,_,S,w=Ele,I=Sle,L,B,H=b/2,V=Be.createTypedArray(T/3,g),G=0;if(x){B=y3,L=x3;let Q=r[0];for(w=d.fromArray(a,0,w),I=d.fromArray(s,0,I),p=0;p<H;p++)B=d.fromArray(Q,(H-1-p)*3,B),L=d.fromArray(Q,(H+p)*3,L),ji.addAttribute(C,L,R),ji.addAttribute(C,B,void 0,O),Ud(D,w,I,R,O,t),N=R/3,S=N+1,M=(O-2)/3,_=M-1,V[G++]=M,V[G++]=N,V[G++]=_,V[G++]=_,V[G++]=N,V[G++]=S,R+=3,O-=3}let k=0,W=0,q=i[k++],J=i[k++];C.set(q,R),C.set(J,O-J.length+1),I=d.fromArray(s,W,I);let j,K;for(m=J.length-3,p=0;p<m;p+=3)j=n.geodeticSurfaceNormal(d.fromArray(q,p,fy),fy),K=n.geodeticSurfaceNormal(d.fromArray(J,m-p,RA),RA),w=d.normalize(d.add(j,K,w),w),Ud(D,w,I,R,O,t),N=R/3,S=N+1,M=(O-2)/3,_=M-1,V[G++]=M,V[G++]=N,V[G++]=_,V[G++]=_,V[G++]=N,V[G++]=S,R+=3,O-=3;for(j=n.geodeticSurfaceNormal(d.fromArray(q,m,fy),fy),K=n.geodeticSurfaceNormal(d.fromArray(J,m,RA),RA),w=d.normalize(d.add(j,K,w),w),W+=3,p=0;p<o.length;p++){let Q;u=o[p];let he=u.leftPositions,ye=u.rightPositions,re,_e,be=vle,we=y3,De=x3;if(w=d.fromArray(a,W,w),l(he)){for(Ud(D,w,I,void 0,O,t),O-=3,re=S,_e=_,Q=0;Q<he.length/3;Q++)be=d.fromArray(he,Q*3,be),V[G++]=re,V[G++]=_e-Q-1,V[G++]=_e-Q,ji.addAttribute(C,be,void 0,O),we=d.fromArray(C,(_e-Q-1)*3,we),De=d.fromArray(C,re*3,De),I=d.normalize(d.subtract(we,De,I),I),Ud(D,w,I,void 0,O,t),O-=3;be=d.fromArray(C,re*3,be),we=d.subtract(d.fromArray(C,_e*3,we),be,we),De=d.subtract(d.fromArray(C,(_e-Q)*3,De),be,De),I=d.normalize(d.add(we,De,I),I),Ud(D,w,I,R,void 0,t),R+=3}else{for(Ud(D,w,I,R,void 0,t),R+=3,re=_,_e=S,Q=0;Q<ye.length/3;Q++)be=d.fromArray(ye,Q*3,be),V[G++]=re,V[G++]=_e+Q,V[G++]=_e+Q+1,ji.addAttribute(C,be,R),we=d.fromArray(C,re*3,we),De=d.fromArray(C,(_e+Q)*3,De),I=d.normalize(d.subtract(we,De,I),I),Ud(D,w,I,R,void 0,t),R+=3;be=d.fromArray(C,re*3,be),we=d.subtract(d.fromArray(C,(_e+Q)*3,we),be,we),De=d.subtract(d.fromArray(C,_e*3,De),be,De),I=d.normalize(d.negate(d.add(De,we,I),I),I),Ud(D,w,I,void 0,O,t),O-=3}for(q=i[k++],J=i[k++],q.splice(0,3),J.splice(J.length-3,3),C.set(q,R),C.set(J,O-J.length+1),m=J.length-3,W+=3,I=d.fromArray(s,W,I),Q=0;Q<J.length;Q+=3)j=n.geodeticSurfaceNormal(d.fromArray(q,Q,fy),fy),K=n.geodeticSurfaceNormal(d.fromArray(J,m-Q,RA),RA),w=d.normalize(d.add(j,K,w),w),Ud(D,w,I,R,O,t),S=R/3,N=S-1,_=(O-2)/3,M=_+1,V[G++]=M,V[G++]=N,V[G++]=_,V[G++]=_,V[G++]=N,V[G++]=S,R+=3,O-=3;R-=3,O+=3}if(w=d.fromArray(a,a.length-3,w),Ud(D,w,I,R,O,t),x){R+=3,O-=3,B=y3,L=x3;let Q=r[1];for(p=0;p<H;p++)B=d.fromArray(Q,(b-p-1)*3,B),L=d.fromArray(Q,p*3,L),ji.addAttribute(C,B,void 0,O),ji.addAttribute(C,L,R),Ud(D,w,I,R,O,t),S=R/3,N=S-1,_=(O-2)/3,M=_+1,V[G++]=M,V[G++]=N,V[G++]=_,V[G++]=_,V[G++]=N,V[G++]=S,R+=3,O-=3}if(c.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:C}),t.st){let Q=new Float32Array(T/3*2),he,ye,re=0;if(x){f/=3,h/=3;let _e=Math.PI/(b+1);ye=1/(f-b+1),he=1/(h-b+1);let be,we=b/2;for(p=we+1;p<b+1;p++)be=P.PI_OVER_TWO+_e*p,Q[re++]=he*(1+Math.cos(be)),Q[re++]=.5*(1+Math.sin(be));for(p=1;p<h-b+1;p++)Q[re++]=p*he,Q[re++]=0;for(p=b;p>we;p--)be=P.PI_OVER_TWO-p*_e,Q[re++]=1-he*(1+Math.cos(be)),Q[re++]=.5*(1+Math.sin(be));for(p=we;p>0;p--)be=P.PI_OVER_TWO-_e*p,Q[re++]=1-ye*(1+Math.cos(be)),Q[re++]=.5*(1+Math.sin(be));for(p=f-b;p>0;p--)Q[re++]=p*ye,Q[re++]=1;for(p=1;p<we+1;p++)be=P.PI_OVER_TWO+_e*p,Q[re++]=ye*(1+Math.cos(be)),Q[re++]=.5*(1+Math.sin(be))}else{for(f/=3,h/=3,ye=1/(f-1),he=1/(h-1),p=0;p<h;p++)Q[re++]=p*he,Q[re++]=0;for(p=f;p>0;p--)Q[re++]=(p-1)*ye,Q[re++]=1}c.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:Q})}return t.normal&&(c.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:D.normals})),t.tangent&&(c.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:D.tangents})),t.bitangent&&(c.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:D.bitangents})),{attributes:c,indices:V}}function FYe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,p=t.bitangent?new Float32Array(s*6):void 0,g=Ele,m=Sle,x=y3,b=x3,T=NYe,C=vle,A=c;for(u=0;u<s;u+=3){let E=A+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),x=d.fromArray(n,(u+3)%s,x),m=d.subtract(m,g,m),x=d.subtract(x,g,x),b=d.normalize(d.cross(m,x,b),b),t.normal&&(ji.addAttribute(f,b,E),ji.addAttribute(f,b,E+3),ji.addAttribute(f,b,A),ji.addAttribute(f,b,A+3)),(t.tangent||t.bitangent)&&(C=d.fromArray(i,u,C),t.bitangent&&(ji.addAttribute(p,C,E),ji.addAttribute(p,C,E+3),ji.addAttribute(p,C,A),ji.addAttribute(p,C,A+3)),t.tangent&&(T=d.normalize(d.cross(C,b,T),T),ji.addAttribute(h,T,E),ji.addAttribute(h,T,E+3),ji.addAttribute(h,T,A),ji.addAttribute(h,T,A+3))),A+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(p.set(o),p.set(o,s),e.bitangent.values=p):e.bitangent=void 0,t.tangent){let E=e.tangent.values;h.set(E),h.set(E,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let p=a*2;for(let g=0;g<2;g++){for(h[p++]=f[0],h[p++]=f[1],u=2;u<a;u+=2){let m=f[u],x=f[u+1];h[p++]=m,h[p++]=x,h[p++]=m,h[p++]=x}h[p++]=f[0],h[p++]=f[1]}e.st.values=h}return e}function Yj(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function BYe(e,t){let n=new Ie({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=ji.computePositions(e),r=Dle(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,p=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=li.scaleToGeodeticHeight(f,s,i),m=Yj(f,0,m),g=li.scaleToGeodeticHeight(g,a,i),m=Yj(g,h*2,m),p.set(f),p.set(g,h),p.set(m,h*2),c.position.values=p,c=FYe(c,t);let x,b=h/3;if(e.shadowVolume){let M=c.normal.values;h=M.length;let N=new Float32Array(h*6);for(x=0;x<h;x++)M[x]=-M[x];N.set(M,h),N=Yj(M,h*4,N),c.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:N}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let M=new Uint8Array(b*6);if(e.offsetAttribute===rn.TOP)M=M.fill(1,0,b).fill(1,b*2,b*4);else{let N=e.offsetAttribute===rn.NONE?0:1;M=M.fill(N)}c.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}let T=u.length,C=b+b,A=Be.createTypedArray(p.length/3,T*2+C*3);A.set(u);let E=T;for(x=0;x<T;x+=3){let M=u[x],N=u[x+1],_=u[x+2];A[E++]=_+b,A[E++]=N+b,A[E++]=M+b}let v,D,R,O;for(x=0;x<C;x+=2)v=x+C,D=v+C,R=v+1,O=D+1,A[E++]=v,A[E++]=D,A[E++]=R,A[E++]=R,A[E++]=D,A[E++]=O;return{attributes:c,indices:A}}var Cle=new d,MD=new d,Rf=new fe;function Ale(e,t,n,i,o,r){let s=d.subtract(t,e,Cle);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,MD),c=d.cross(s,a,Cle);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,p=r.longitude;d.add(e,c,MD),n.cartesianToCartographic(MD,Rf);let g=Rf.latitude,m=Rf.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),p=Math.max(p,m),d.subtract(e,c,MD),n.cartesianToCartographic(MD,Rf),g=Rf.latitude,m=Rf.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),p=Math.max(p,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=p}var Of=new d,LD=new d,Rl=new fe,Ml=new fe;function Ile(e,t,n,i,o){e=wle(e,t);let r=To(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;Rl.latitude=Number.POSITIVE_INFINITY,Rl.longitude=Number.POSITIVE_INFINITY,Ml.latitude=Number.NEGATIVE_INFINITY,Ml.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===ki.ROUNDED){let p=r[0];d.subtract(p,r[1],Of),d.normalize(Of,Of),d.multiplyByScalar(Of,a,Of),d.add(p,Of,LD),t.cartesianToCartographic(LD,Rf),c=Rf.latitude,u=Rf.longitude,Rl.latitude=Math.min(Rl.latitude,c),Rl.longitude=Math.min(Rl.longitude,u),Ml.latitude=Math.max(Ml.latitude,c),Ml.longitude=Math.max(Ml.longitude,u)}for(let p=0;p<s-1;++p)Ale(r[p],r[p+1],t,a,Rl,Ml);let f=r[s-1];d.subtract(f,r[s-2],Of),d.normalize(Of,Of),d.multiplyByScalar(Of,a,Of),d.add(f,Of,LD),Ale(f,LD,t,a,Rl,Ml),i===ki.ROUNDED&&(t.cartesianToCartographic(LD,Rf),c=Rf.latitude,u=Rf.longitude,Rl.latitude=Math.min(Rl.latitude,c),Rl.longitude=Math.min(Rl.longitude,u),Ml.latitude=Math.max(Ml.latitude,c),Ml.longitude=Math.max(Ml.longitude,u));let h=l(o)?o:new ae;return h.north=Ml.latitude,h.south=Rl.latitude,h.east=Ml.longitude,h.west=Rl.longitude,h}function a_(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.width,i=y(e.height,0),o=y(e.extrudedHeight,i);this._positions=t,this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._vertexFormat=Ie.clone(y(e.vertexFormat,Ie.DEFAULT)),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=y(e.cornerType,ki.ROUNDED),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._shadowVolume=y(e.shadowVolume,!1),this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+ee.packedLength+Ie.packedLength+7}a_.pack=function(e,t,n){n=y(n,0);let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=y(e._offsetAttribute,-1),t};var Ple=ee.clone(ee.UNIT_SPHERE),Ole=new Ie,s_={positions:void 0,ellipsoid:Ple,vertexFormat:Ole,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};a_.unpack=function(e,t,n){t=y(t,0);let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=ee.unpack(e,t,Ple);t+=ee.packedLength;let s=Ie.unpack(e,t,Ole);t+=Ie.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],p=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=ee.clone(r,n._ellipsoid),n._vertexFormat=Ie.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=p,n._offsetAttribute=g===-1?void 0:g,n):(s_.positions=o,s_.width=a,s_.height=c,s_.extrudedHeight=u,s_.cornerType=f,s_.granularity=h,s_.shadowVolume=p,s_.offsetAttribute=g===-1?void 0:g,new a_(s_))};a_.computeRectangle=function(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.positions,i=e.width,o=y(e.ellipsoid,ee.default),r=y(e.cornerType,ki.ROUNDED);return Ile(n,o,i,r,t)};a_.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=wle(t,i);let o=To(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!P.equalsEpsilon(r,s,0,P.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=BYe(u,c);else{let g=ji.computePositions(u);if(f=Dle(g,c,i),f.attributes.position.values=li.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===rn.NONE?0:1,x=f.attributes.position.values.length,b=new Uint8Array(x/3).fill(m);f.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}}let h=f.attributes,p=ce.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ut({attributes:h,indices:f.indices,primitiveType:Ne.TRIANGLES,boundingSphere:p,offsetAttribute:e._offsetAttribute})};a_.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new a_({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Ie.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(a_.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Ile(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var MA=a_;var Rle=new d,Mle=new d,kYe=new d;function VYe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Lle(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new mn,a,c=0,u=0,f,h=0,p;for(f=0;f<i.length;f+=2)p=i[f].length-3,c+=p,h+=p/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let L=o[f].leftPositions;l(L)?(p=L.length,c+=p,h+=p/3*2):(p=o[f].rightPositions.length,u+=p,h+=p/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let x=c+u,b=new Float64Array(x),T=0,C=x-1,A,E,v,D,R,O,M=m/2,N=Be.createTypedArray(x/3,h+4),_=0;if(N[_++]=T/3,N[_++]=(C-2)/3,g){n.push(T/3),O=Rle,R=Mle;let L=r[0];for(f=0;f<M;f++)O=d.fromArray(L,(M-1-f)*3,O),R=d.fromArray(L,(M+f)*3,R),ji.addAttribute(b,R,T),ji.addAttribute(b,O,void 0,C),E=T/3,D=E+1,A=(C-2)/3,v=A-1,N[_++]=A,N[_++]=v,N[_++]=E,N[_++]=D,T+=3,C-=3}let S=0,w=i[S++],I=i[S++];for(b.set(w,T),b.set(I,C-I.length+1),p=I.length-3,n.push(T/3,(C-2)/3),f=0;f<p;f+=3)E=T/3,D=E+1,A=(C-2)/3,v=A-1,N[_++]=A,N[_++]=v,N[_++]=E,N[_++]=D,T+=3,C-=3;for(f=0;f<o.length;f++){let L;a=o[f];let B=a.leftPositions,H=a.rightPositions,V,G=kYe;if(l(B)){for(C-=3,V=v,n.push(D),L=0;L<B.length/3;L++)G=d.fromArray(B,L*3,G),N[_++]=V-L-1,N[_++]=V-L,ji.addAttribute(b,G,void 0,C),C-=3;n.push(V-Math.floor(B.length/6)),t===ki.BEVELED&&n.push((C-2)/3+1),T+=3}else{for(T+=3,V=D,n.push(v),L=0;L<H.length/3;L++)G=d.fromArray(H,L*3,G),N[_++]=V+L,N[_++]=V+L+1,ji.addAttribute(b,G,T),T+=3;n.push(V+Math.floor(H.length/6)),t===ki.BEVELED&&n.push(T/3-1),C-=3}for(w=i[S++],I=i[S++],w.splice(0,3),I.splice(I.length-3,3),b.set(w,T),b.set(I,C-I.length+1),p=I.length-3,L=0;L<I.length;L+=3)D=T/3,E=D-1,v=(C-2)/3,A=v+1,N[_++]=A,N[_++]=v,N[_++]=E,N[_++]=D,T+=3,C-=3;T-=3,C+=3,n.push(T/3,(C-2)/3)}if(g){T+=3,C-=3,O=Rle,R=Mle;let L=r[1];for(f=0;f<M;f++)O=d.fromArray(L,(m-f-1)*3,O),R=d.fromArray(L,f*3,R),ji.addAttribute(b,O,void 0,C),ji.addAttribute(b,R,T),D=T/3,E=D-1,v=(C-2)/3,A=v+1,N[_++]=A,N[_++]=v,N[_++]=E,N[_++]=D,T+=3,C-=3;n.push(T/3)}else n.push(T/3,(C-2)/3);return N[_++]=T/3,N[_++]=(C-2)/3,s.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:b}),{attributes:s,indices:N,wallIndices:n}}function UYe(e){let t=e.ellipsoid,n=ji.computePositions(e),i=Lle(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let p=new Float64Array(f*2);if(u=li.scaleToGeodeticHeight(u,r,t),h=li.scaleToGeodeticHeight(h,s,t),p.set(u),p.set(h,f),a.position.values=p,f/=3,l(e.offsetAttribute)){let A=new Uint8Array(f*2);if(e.offsetAttribute===rn.TOP)A=A.fill(1,0,f);else{let E=e.offsetAttribute===rn.NONE?0:1;A=A.fill(E)}a.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:A})}let g,m=c.length,x=Be.createTypedArray(p.length/3,(m+o.length)*2);x.set(c);let b=m;for(g=0;g<m;g+=2){let A=c[g],E=c[g+1];x[b++]=A+f,x[b++]=E+f}let T,C;for(g=0;g<o.length;g++)T=o[g],C=T+f,x[b++]=T,x[b++]=C;return{attributes:a,indices:x}}function ND(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.width,i=y(e.height,0),o=y(e.extrudedHeight,i);this._positions=t,this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=y(e.cornerType,ki.ROUNDED),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+ee.packedLength+6}ND.pack=function(e,t,n){n=y(n,0);let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=y(e._offsetAttribute,-1),t};var Nle=ee.clone(ee.UNIT_SPHERE),dy={positions:void 0,ellipsoid:Nle,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};ND.unpack=function(e,t,n){t=y(t,0);let i=e[t++],o=new Array(i);for(let p=0;p<i;++p,t+=d.packedLength)o[p]=d.unpack(e,t);let r=ee.unpack(e,t,Nle);t+=ee.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=ee.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(dy.positions=o,dy.width=s,dy.height=a,dy.extrudedHeight=c,dy.cornerType=u,dy.granularity=f,dy.offsetAttribute=h===-1?void 0:h,new ND(dy))};ND.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=VYe(t,i);let o=To(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!P.equalsEpsilon(r,s,0,P.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=UYe(c);else{let p=ji.computePositions(c);if(u=Lle(p,c.cornerType),u.attributes.position.values=li.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===rn.NONE?0:1,x=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}}let f=u.attributes,h=ce.fromVertices(f.position.values,void 0,3);return new ut({attributes:f,indices:u.indices,primitiveType:Ne.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var b3=ND;var zYe=new $n(0);function Yc(e){si.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(Yc.prototype=Object.create(si.prototype),Yc.prototype.constructor=Yc);Object.defineProperties(Yc.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Yc.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&pl.isSupported(this._scene)};Yc.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};Yc.prototype._computeCenter=de.throwInstantiationError;Yc.prototype._onEntityPropertyChanged=function(e,t,n,i){if(si.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&Ct(Ct.geometryZIndex),this._zIndex=y(o.zIndex,zYe),l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new Gh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new dC(this._scene,a,r,s)}};Yc.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),si.prototype.destroy.call(this)};Yc.getGeometryHeight=function(e,t){if(!l(e)){t!==qe.NONE&&Ct(Ct.geometryHeightReference);return}return Qu(t)?0:e};Yc.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==qe.NONE&&Ct(Ct.geometryExtrudedHeightReference);return}return Qu(t)?Yc.CLAMP_TO_GROUND:e};Yc.CLAMP_TO_GROUND="clamp";Yc.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=qe.NONE),(!l(n)||!l(i))&&(i=qe.NONE);let o=0;if(t!==qe.NONE&&o++,i===qe.RELATIVE_TO_GROUND&&o++,o===2)return rn.ALL;if(o===1)return rn.TOP};var jn=Yc;var Fle=new z,Ble=d.ZERO,kle=new d,Vle=new ae;function HYe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function zd(e,t){jn.call(this,{entity:e,scene:t,geometryOptions:new HYe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(zd.prototype=Object.create(jn.prototype),zd.prototype.constructor=zd);zd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Un.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof zt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Fle)),l(o)||(o=z.WHITE),i.color=Wt.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,Ble,kle))),new Dt({id:t,geometry:new MA(this._options),attributes:i})};zd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,Fle),o={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,Ble,kle))),new Dt({id:t,geometry:new b3(this._options),attributes:o})};zd.prototype._computeCenter=function(e,t){let n=Y.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};zd.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||si.prototype._isHidden.call(this,e,t)};zd.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!Y.isConstant(t.height)||!Y.isConstant(t.extrudedHeight)||!Y.isConstant(t.granularity)||!Y.isConstant(t.width)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.cornerType)||!Y.isConstant(t.zIndex)||this._onTerrain&&!Y.isConstant(this._materialProperty)&&!(this._materialProperty instanceof zt)};zd.prototype._setStaticOptions=function(e,t){let n=Y.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),o=Y.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=Y.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,qe.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof zt?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(ze.MINIMUM_VALUE),s.granularity=Y.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.cornerType=Y.getValueOrUndefined(t.cornerType,ze.MINIMUM_VALUE),s.offsetAttribute=jn.computeGeometryOffsetAttribute(n,i,o,r),s.height=jn.getGeometryHeight(n,i),o=jn.getGeometryExtrudedHeight(o,r),o===jn.CLAMP_TO_GROUND&&(o=di.getMinimumMaximumHeights(MA.computeRectangle(s,Vle)).minimumTerrainHeight),s.extrudedHeight=o};zd.DynamicGeometryUpdater=LA;function LA(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(LA.prototype=Object.create(ri.prototype),LA.prototype.constructor=LA);LA.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||ri.prototype._isHidden.call(this,e,t,n)};LA.prototype._setOptions=function(e,t,n){let i=this._options,o=Y.getValueOrUndefined(t.height,n),r=Y.getValueOrDefault(t.heightReference,n,qe.NONE),s=Y.getValueOrUndefined(t.extrudedHeight,n),a=Y.getValueOrDefault(t.extrudedHeightReference,n,qe.NONE);l(s)&&!l(o)&&(o=0),i.positions=Y.getValueOrUndefined(t.positions,n),i.width=Y.getValueOrUndefined(t.width,n),i.granularity=Y.getValueOrUndefined(t.granularity,n),i.cornerType=Y.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=jn.computeGeometryOffsetAttribute(o,r,s,a),i.height=jn.getGeometryHeight(o,r),s=jn.getGeometryExtrudedHeight(s,a),s===jn.CLAMP_TO_GROUND&&(s=di.getMinimumMaximumHeights(MA.computeRectangle(i,Vle)).minimumTerrainHeight),i.extrudedHeight=s};var T3=zd;function C3(){de.throwInstantiationError()}Object.defineProperties(C3.prototype,{name:{get:de.throwInstantiationError},clock:{get:de.throwInstantiationError},entities:{get:de.throwInstantiationError},isLoading:{get:de.throwInstantiationError},changedEvent:{get:de.throwInstantiationError},errorEvent:{get:de.throwInstantiationError},loadingEvent:{get:de.throwInstantiationError},show:{get:de.throwInstantiationError},clustering:{get:de.throwInstantiationError}});C3.prototype.update=function(e){de.throwInstantiationError()};C3.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var $r=C3;function gm(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(gm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var Ule=new d;gm.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,Ule);return Kj(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};gm.prototype.isScaledSpacePointVisible=function(e){return Kj(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var GYe=new d;gm.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=GYe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),Kj(e,o,i)};gm.prototype.computeHorizonCullingPoint=function(e,t,n){return Gle(this._ellipsoid,e,t,n)};var zle=ee.clone(ee.UNIT_SPHERE);gm.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=Hle(this._ellipsoid,n,zle);return Gle(o,e,t,i)};gm.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Wle(this._ellipsoid,e,t,n,i,o)};gm.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=Hle(this._ellipsoid,o,zle);return Wle(s,e,t,n,i,r)};var WYe=[];gm.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,WYe),o=ce.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var jYe=new d;function Hle(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,jYe);e=ee.fromCartesian3(i,n)}return e}function Gle(e,t,n,i){l(i)||(i=new d);let o=Yle(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=jle(e,c,o);if(u<0)return;r=Math.max(r,u)}return qle(o,r,i)}var A3=new d;function Wle(e,t,n,i,o,r){l(r)||(r=new d),i=y(i,3),o=y(o,d.ZERO);let s=Yle(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){A3.x=n[c]+o.x,A3.y=n[c+1]+o.y,A3.z=n[c+2]+o.z;let f=jle(e,A3,s);if(f<0)return;a=Math.max(a,f)}return qle(s,a,r)}function Kj(e,t,n){let i=t,o=n,r=d.subtract(e,i,Ule),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var qYe=new d,YYe=new d;function jle(e,t,n){let i=e.transformPositionToScaledSpace(t,qYe),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,YYe);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function qle(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var Xj=new d;function Yle(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,Xj),d.normalize(Xj,Xj))}var hy=gm;function br(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=Vt.clone(n)),l(i)&&(i=Vt.clone(i)),l(o)&&(o=Lt.clone(o)),this._show=y(e.show,!0),this._position=d.clone(y(e.position,d.ZERO)),this._actualPosition=d.clone(this._position),this._color=z.clone(y(e.color,z.WHITE)),this._outlineColor=z.clone(y(e.outlineColor,z.TRANSPARENT)),this._outlineWidth=y(e.outlineWidth,0),this._pixelSize=y(e.pixelSize,10),this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=y(e.disableDepthTestDistance,0),this._id=e.id,this._collection=y(e.collection,t),this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=y(e.splitDirection,Gr.NONE)}var Xle=br.SHOW_INDEX=0,Zle=br.POSITION_INDEX=1,XYe=br.COLOR_INDEX=2,KYe=br.OUTLINE_COLOR_INDEX=3,$Ye=br.OUTLINE_WIDTH_INDEX=4,ZYe=br.PIXEL_SIZE_INDEX=5,QYe=br.SCALE_BY_DISTANCE_INDEX=6,JYe=br.TRANSLUCENCY_BY_DISTANCE_INDEX=7,eXe=br.DISTANCE_DISPLAY_CONDITION_INDEX=8,tXe=br.DISABLE_DEPTH_DISTANCE_INDEX=9,nXe=br.SPLIT_DIRECTION_INDEX=10;br.NUMBER_OF_PROPERTIES=11;function mu(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(br.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,mu(this,Xle))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),mu(this,Zle))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Vt.equals(t,e)||(this._scaleByDistance=Vt.clone(e,t),mu(this,QYe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Vt.equals(t,e)||(this._translucencyByDistance=Vt.clone(e,t),mu(this,JYe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,mu(this,ZYe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;z.equals(t,e)||(z.clone(e,t),mu(this,XYe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;z.equals(t,e)||(z.clone(e,t),mu(this,KYe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,mu(this,$Ye))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Lt.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Lt.clone(e,this._distanceDisplayCondition),mu(this,eXe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,mu(this,tXe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,mu(this,Xle))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,mu(this,nXe))}}});br.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};br.prototype._getActualPosition=function(){return this._actualPosition};br.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),mu(this,Zle)};var Kle=new oe;br._computeActualPosition=function(e,t,n){return t.mode===ne.SCENE3D?e:(F.multiplyByPoint(n,e,Kle),Wi.computeActualEllipsoidPosition(t,Kle))};var $le=new oe;br._computeScreenSpacePosition=function(e,t,n,i){let o=F.multiplyByVector(e,oe.fromElements(t.x,t.y,t.z,1,$le),$le);return Wi.worldToWindowCoordinates(n,o,i)};br.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new U);let i=n.modelMatrix,o=br._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};br.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new je),n.x=r,n.y=s,n.width=a,n.height=c,n};br.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&z.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&z.equals(this._outlineColor,e._outlineColor)&&Vt.equals(this._scaleByDistance,e._scaleByDistance)&&Vt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Lt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};br.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var Ys=br;var $x=`in vec4 v_color;
in vec4 v_outlineColor;
in float v_innerPercent;
in float v_pixelDistance;
in vec4 v_pickColor;
in float v_splitDirection;
void main()
{
if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
// The distance in UV space from this fragment to the center of the point, at most 0.5.
float distanceToCenter = length(gl_PointCoord - vec2(0.5));
// The max distance stops one pixel shy of the edge to leave space for anti-aliasing.
float maxDistance = max(0.0, 0.5 - v_pixelDistance);
float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter);
float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter);
vec4 color = mix(v_outlineColor, v_color, innerAlpha);
color.a *= wholeAlpha;
// Fully transparent parts of the billboard are not pickable.
#if !defined(OPAQUE) && !defined(TRANSLUCENT)
if (color.a < 0.005) // matches 0/255 and 1/255
{
discard;
}
#else
// The billboard is rendered twice. The opaque pass discards translucent fragments
// and the translucent pass discards opaque fragments.
#ifdef OPAQUE
if (color.a < 0.995) // matches < 254/255
{
discard;
}
#else
if (color.a >= 0.995) // matches 254/255 and 255/255
{
discard;
}
#endif
#endif
out_FragColor = czm_gammaCorrect(color);
czm_writeLogDepth();
}
`;var E3=`uniform float u_maxTotalPointSize;
in vec4 positionHighAndSize;
in vec4 positionLowAndOutline;
in vec4 compressedAttribute0; // color, outlineColor, pick color
in vec4 compressedAttribute1; // show, translucency by distance, some free space
in vec4 scaleByDistance; // near, nearScale, far, farScale
in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection
out vec4 v_color;
out vec4 v_outlineColor;
out float v_innerPercent;
out float v_pixelDistance;
out vec4 v_pickColor;
out float v_splitDirection;
const float SHIFT_LEFT8 = 256.0;
const float SHIFT_RIGHT8 = 1.0 / 256.0;
void main()
{
// Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition
// unpack attributes
vec3 positionHigh = positionHighAndSize.xyz;
vec3 positionLow = positionLowAndOutline.xyz;
float outlineWidthBothSides = 2.0 * positionLowAndOutline.w;
float totalSize = positionHighAndSize.w + outlineWidthBothSides;
float outlinePercent = outlineWidthBothSides / totalSize;
// Scale in response to browser-zoom.
totalSize *= czm_pixelRatio;
float temp = compressedAttribute1.x * SHIFT_RIGHT8;
float show = floor(temp);
#ifdef EYE_DISTANCE_TRANSLUCENCY
vec4 translucencyByDistance;
translucencyByDistance.x = compressedAttribute1.z;
translucencyByDistance.z = compressedAttribute1.w;
translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
temp = compressedAttribute1.y * SHIFT_RIGHT8;
translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
#endif
///////////////////////////////////////////////////////////////////////////
vec4 color;
vec4 outlineColor;
vec4 pickColor;
// compressedAttribute0.z => pickColor.rgb
temp = compressedAttribute0.z * SHIFT_RIGHT8;
pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
pickColor.r = floor(temp);
// compressedAttribute0.x => color.rgb
temp = compressedAttribute0.x * SHIFT_RIGHT8;
color.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
color.g = (temp - floor(temp)) * SHIFT_LEFT8;
color.r = floor(temp);
// compressedAttribute0.y => outlineColor.rgb
temp = compressedAttribute0.y * SHIFT_RIGHT8;
outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
temp = floor(temp) * SHIFT_RIGHT8;
outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
outlineColor.r = floor(temp);
// compressedAttribute0.w => color.a, outlineColor.a, pickColor.a
temp = compressedAttribute0.w * SHIFT_RIGHT8;
pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
pickColor = pickColor / 255.0;
temp = floor(temp) * SHIFT_RIGHT8;
outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
outlineColor /= 255.0;
color.a = floor(temp);
color /= 255.0;
///////////////////////////////////////////////////////////////////////////
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
vec4 positionEC = czm_modelViewRelativeToEye * p;
///////////////////////////////////////////////////////////////////////////
#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE)
float lengthSq;
if (czm_sceneMode == czm_sceneMode2D)
{
// 2D camera distance is a special case
// treat all billboards as flattened to the z=0.0 plane
lengthSq = czm_eyeHeight2D.y;
}
else
{
lengthSq = dot(positionEC.xyz, positionEC.xyz);
}
#endif
#ifdef EYE_DISTANCE_SCALING
totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq);
#endif
if (totalSize > 0.0) {
// Add padding for anti-aliasing on both sides.
totalSize += 3.0;
}
// Clamp to max point size.
totalSize = min(totalSize, u_maxTotalPointSize);
// If size is too small, push vertex behind near plane for clipping.
// Note that context.minimumAliasedPointSize "will be at most 1.0".
if (totalSize < 1.0)
{
positionEC.xyz = vec3(0.0);
totalSize = 1.0;
}
float translucency = 1.0;
#ifdef EYE_DISTANCE_TRANSLUCENCY
translucency = czm_nearFarScalar(translucencyByDistance, lengthSq);
// push vertex behind near plane for clipping
if (translucency < 0.004)
{
positionEC.xyz = vec3(0.0);
}
#endif
#ifdef DISTANCE_DISPLAY_CONDITION
float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x;
float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y;
if (lengthSq < nearSq || lengthSq > farSq) {
// push vertex behind camera to force it to be clipped
positionEC.xyz = vec3(0.0, 0.0, 1.0);
}
#endif
gl_Position = czm_projection * positionEC;
czm_vertexLogDepth();
#ifdef DISABLE_DEPTH_DISTANCE
float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z;
if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)
{
disableDepthTestDistance = czm_minimumDisableDepthTestDistance;
}
if (disableDepthTestDistance != 0.0)
{
// Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w.
float zclip = gl_Position.z / gl_Position.w;
bool clipped = (zclip < -1.0 || zclip > 1.0);
if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance)))
{
// Position z on the near plane.
gl_Position.z = -gl_Position.w;
#ifdef LOG_DEPTH
czm_vertexLogDepth(vec4(czm_currentFrustum.x));
#endif
}
}
#endif
v_color = color;
v_color.a *= translucency * show;
v_outlineColor = outlineColor;
v_outlineColor.a *= translucency * show;
v_innerPercent = 1.0 - outlinePercent;
v_pixelDistance = 2.0 / totalSize;
gl_PointSize = totalSize * show;
gl_Position *= show;
v_pickColor = pickColor;
v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w;
}
`;var iXe=Ys.SHOW_INDEX,Qj=Ys.POSITION_INDEX,Qle=Ys.COLOR_INDEX,oXe=Ys.OUTLINE_COLOR_INDEX,rXe=Ys.OUTLINE_WIDTH_INDEX,sXe=Ys.PIXEL_SIZE_INDEX,Jle=Ys.SCALE_BY_DISTANCE_INDEX,eue=Ys.TRANSLUCENCY_BY_DISTANCE_INDEX,tue=Ys.DISTANCE_DISPLAY_CONDITION_INDEX,aXe=Ys.DISABLE_DEPTH_DISTANCE_INDEX,cXe=Ys.SPLIT_DIRECTION_INDEX,Jj=Ys.NUMBER_OF_PROPERTIES,ac={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function Mf(e){e=y(e,y.EMPTY_OBJECT),this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(Jj),this._maxPixelSize=1,this._baseVolume=new ce,this._baseVolumeWC=new ce,this._baseVolume2D=new ce,this._boundingVolume=new ce,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=F.clone(F.IDENTITY),this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.blendOption=y(e.blendOption,Po.OPAQUE_AND_TRANSLUCENT),this._blendOption=void 0,this._mode=ne.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW,ke.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(Mf.prototype,{length:{get:function(){return e7(this),this._pointPrimitives.length}}});function nue(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Mf.prototype.add=function(e){let t=new Ys(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};Mf.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Mf.prototype.removeAll=function(){nue(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function e7(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}Mf.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};Mf.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};Mf.prototype.get=function(e){return e7(this),this._pointPrimitives[e]};Mf.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<Jj;++i){let o=n[i]===0?ke.STATIC_DRAW:ke.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function lXe(e,t,n){return new Kg(e,[{index:ac.positionHighAndSize,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Qj]},{index:ac.positionLowAndShow,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Qj]},{index:ac.compressedAttribute0,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Qle]},{index:ac.compressedAttribute1,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[eue]},{index:ac.scaleByDistance,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[Jle]},{index:ac.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:n[tue]}],t)}var $j=new Wn;function iue(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ne.SCENE3D&&(ce.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),Wn.fromCartesian(r,$j);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[ac.positionHighAndSize],u=$j.high;c(o,u.x,u.y,u.z,s);let f=n[ac.positionLowAndOutline],h=$j.low;f(o,h.x,h.y,h.z,a)}var S3=65536,FD=256;function oue(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=z.floatToByte(r.red),u=z.floatToByte(r.green),f=z.floatToByte(r.blue),h=c*S3+u*FD+f;c=z.floatToByte(a.red),u=z.floatToByte(a.green),f=z.floatToByte(a.blue);let p=c*S3+u*FD+f;c=z.floatToByte(s.red),u=z.floatToByte(s.green),f=z.floatToByte(s.blue);let g=c*S3+u*FD+f,m=z.floatToByte(r.alpha)*S3+z.floatToByte(a.alpha)*FD+z.floatToByte(s.alpha),x=n[ac.compressedAttribute0];x(o,h,p,g,m)}function rue(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=P.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*FD+s;c=P.clamp(c,0,1),c=c===1?255:c*255|0;let p=c,g=n[ac.compressedAttribute1];g(o,h,p,r,a)}function sue(e,t,n,i){let o=i._index,r=n[ac.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function aue(e,t,n,i){let o=i._index,r=n[ac.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function uXe(e,t,n,i){iue(e,t,n,i),oue(e,t,n,i),rue(e,t,n,i),sue(e,t,n,i),aue(e,t,n,i)}function Zj(e,t,n,i,o,r){let s;i.mode===ne.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=Ys._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):ce.expand(s,h,s))}r&&ce.fromPoints(a,s)}function fXe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ne.SCENE3D&&!F.equals(r,e.modelMatrix)?(e._mode=n,F.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ne.SCENE3D||n===ne.SCENE2D||n===ne.COLUMBUS_VIEW)&&Zj(e,i,i.length,t,r,!0)):n===ne.MORPHING?Zj(e,i,i.length,t,r,!0):(n===ne.SCENE2D||n===ne.COLUMBUS_VIEW)&&Zj(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function dXe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var hXe=[];Mf.prototype.update=function(e){if(e7(this),!this.show)return;this._maxTotalPointSize=kt.maximumAliasedPointSize,fXe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let v=0;v<Jj;++v)r[v]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=lXe(c,n,this._buffersUsage),a=this._vaf.writers;for(let v=0;v<n;++v){let D=this._pointPrimitives[v];D._dirty=!1,uXe(this,c,a,D)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let v=hXe;v.length=0,(r[Qj]||r[rXe]||r[sXe])&&v.push(iue),(r[Qle]||r[oXe])&&v.push(oue),(r[iXe]||r[eue])&&v.push(rue),r[Jle]&&v.push(sue),(r[tue]||r[aXe]||r[cXe])&&v.push(aue);let D=v.length;if(a=this._vaf.writers,o/n>.1){for(let R=0;R<o;++R){let O=i[R];O._dirty=!1;for(let M=0;M<D;++M)v[M](this,c,a,O)}this._vaf.commit()}else{for(let R=0;R<o;++R){let O=i[R];O._dirty=!1;for(let M=0;M<D;++M)v[M](this,c,a,O);this._vaf.subCommit(O._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ce.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,p=F.IDENTITY;e.mode===ne.SCENE3D?(p=this.modelMatrix,h=ce.clone(this._baseVolumeWC,this._boundingVolume)):h=ce.clone(this._baseVolume2D,this._boundingVolume),dXe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Po.OPAQUE||this._blendOption===Po.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ve.fromCache({depthTest:{enabled:!0,func:te.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Po.TRANSLUCENT||this._blendOption===Po.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ve.fromCache({depthTest:{enabled:!0,func:te.LEQUAL},depthMask:!1,blending:fn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,x;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new Ue({sources:[E3]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Po.OPAQUE_AND_TRANSLUCENT&&(x=new Ue({defines:["OPAQUE"],sources:[$x]}),this._sp=Jt.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:x,attributeLocations:ac}),x=new Ue({defines:["TRANSLUCENT"],sources:[$x]}),this._spTranslucent=Jt.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:x,attributeLocations:ac})),this._blendOption===Po.OPAQUE&&(x=new Ue({sources:[$x]}),this._sp=Jt.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:x,attributeLocations:ac})),this._blendOption===Po.TRANSLUCENT&&(x=new Ue({sources:[$x]}),this._spTranslucent=Jt.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:x,attributeLocations:ac})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let b,T,C,A,E=e.commandList;if(u.render||f){let v=this._colorCommands,D=this._blendOption===Po.OPAQUE,R=this._blendOption===Po.OPAQUE_AND_TRANSLUCENT;b=this._vaf.va,T=b.length,v.length=T;let O=R?T*2:T;for(A=0;A<O;++A){let M=D||R&&A%2===0;C=v[A],l(C)||(C=v[A]=new Qe),C.primitiveType=Ne.POINTS,C.pass=M||!R?ve.OPAQUE:ve.TRANSLUCENT,C.owner=this;let N=R?Math.floor(A/2):A;C.boundingVolume=h,C.modelMatrix=p,C.shaderProgram=M?this._sp:this._spTranslucent,C.uniformMap=this._uniforms,C.vertexArray=b[N].va,C.renderState=M?this._rsOpaque:this._rsTranslucent,C.debugShowBoundingVolume=this.debugShowBoundingVolume,C.pickId="v_pickColor",E.push(C)}}};Mf.prototype.isDestroyed=function(){return!1};Mf.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),nue(this._pointPrimitives),ue(this)};var BD=Mf;function Hd(e){e=y(e,y.EMPTY_OBJECT),this._enabled=y(e.enabled,!1),this._pixelRange=y(e.pixelRange,80),this._minimumClusterSize=y(e.minimumClusterSize,2),this._clusterBillboards=y(e.clusterBillboards,!0),this._clusterLabels=y(e.clusterLabels,!0),this._clusterPoints=y(e.clusterPoints,!0),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new me,this.show=y(e.show,!0)}function cue(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var mXe=new je;function lue(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=Vx.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=ho.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=Ys.getScreenSpaceBoundingBox(e,t,o)),cue(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&fue(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=Vx.getScreenSpaceBoundingBox(s,t,mXe);cue(a,n),o=je.union(o,a,o)}return o}function pXe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&fue(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function uue(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function fue(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function t7(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ne.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var _Xe=new je,gXe=new je,yXe=new je;function xXe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new Yp({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new Af({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new BD;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,p=[],g=e._previousHeight,m=n.camera.positionCartographic.height,x=n.ellipsoid,b=n.camera.positionWC,T=new hy(x,b),C=[];e._clusterLabels&&t7(i,C,n,T,e),e._clusterBillboards&&t7(o,C,n,T,e),e._clusterPoints&&t7(r,C,n,T,e);let A,E,v,D,R,O,M,N,_,S,w,I;if(C.length>0){let L=new Rx(C.length,64,Uint32Array);for(let B=0;B<C.length;++B)L.add(C[B].coord.x,C[B].coord.y);if(L.finish(),m<g)for(v=h.length,A=0;A<v;++A){let B=h[A];if(!T.isPointVisible(B.position))continue;let H=ho._computeScreenSpacePosition(F.IDENTITY,B.position,d.ZERO,U.ZERO,n);if(!l(H))continue;let V=1-m/g,G=B.width=B.width*V,k=B.height=B.height*V;G=Math.max(G,B.minimumWidth),k=Math.max(k,B.minimumHeight);let W=H.x-G*.5,q=H.y-k*.5,J=H.x+G,j=H.y+k;for(R=L.range(W,q,J,j),O=R.length,S=0,_=[],E=0;E<O;++E)M=R[E],N=C[M],N.clustered||(++S,w=N.collection,I=N.index,_.push(w.get(I).id));if(S>=f)for(uue(B.position,S,_,e),p.push(B),E=0;E<O;++E)C[R[E]].clustered=!0}for(v=C.length,A=0;A<v;++A){let B=C[A];if(B.clustered)continue;B.clustered=!0,w=B.collection,I=B.index;let H=w.get(I);D=lue(H,B.coord,u,e,_Xe);let V=je.clone(D,gXe);R=L.range(D.x,D.y,D.x+D.width,D.y+D.height),O=R.length;let G=d.clone(H.position);for(S=1,_=[H.id],E=0;E<O;++E)if(M=R[E],N=C[M],!N.clustered){let k=N.collection.get(N.index),W=lue(k,N.coord,u,e,yXe);d.add(k.position,G,G),je.union(V,W,V),++S,_.push(k.id)}if(S>=f){let k=d.multiplyByScalar(G,1/S,G);for(uue(k,S,_,e),p.push({position:k,width:V.width,height:V.height,minimumWidth:D.width,minimumHeight:D.height}),E=0;E<O;++E)C[R[E]].clustered=!0}else pXe(H,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=p,e._previousHeight=m}}Hd.prototype._initialize=function(e){this._scene=e;let t=xXe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(Hd.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function i7(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function o7(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}Hd.prototype.getLabel=i7("_labelCollection",Yp,"_unusedLabelIndices","labelIndex");Hd.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,o7(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};Hd.prototype.getBillboard=i7("_billboardCollection",Af,"_unusedBillboardIndices","billboardIndex");Hd.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,o7(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};Hd.prototype.getPoint=i7("_pointCollection",BD,"_unusedPointIndices","pointIndex");Hd.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,o7(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function n7(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function bXe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,n7(e._labelCollection),n7(e._billboardCollection),n7(e._pointCollection))}Hd.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,bXe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};Hd.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var Lf=Hd;function r7(e){this._name=e,this._clock=void 0,this._changed=new me,this._error=new me,this._isLoading=!1,this._loading=new me,this._entityCollection=new ha(this),this._entityCluster=new Lf}Object.defineProperties(r7.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){$r.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});r7.prototype.update=function(e){return!0};var v3=r7;var due={};due.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,p=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let x=f/i*P.TWO_PI,b=Math.cos(x),T=Math.sin(x),C=b*n,A=T*n,E=b*t,v=T*t;u[p+g]=C,u[p+g+1]=A,u[p+g+2]=s,u[p+m]=E,u[p+m+1]=v,u[p+m+2]=r,p+=3,o&&(u[h++]=C,u[h++]=A,u[h++]=s,u[h++]=E,u[h++]=v,u[h++]=r)}return u};var NA=due;var s7=new U,TXe=new d,CXe=new d,AXe=new d,EXe=new d;function c_(e){e=y(e,y.EMPTY_OBJECT);let t=e.length,n=e.topRadius,i=e.bottomRadius,o=y(e.vertexFormat,Ie.DEFAULT),r=y(e.slices,128);this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Ie.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}c_.packedLength=Ie.packedLength+5;c_.pack=function(e,t,n){return n=y(n,0),Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=y(e._offsetAttribute,-1),t};var hue=new Ie,FA={vertexFormat:hue,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};c_.unpack=function(e,t,n){t=y(t,0);let i=Ie.unpack(e,t,hue);t+=Ie.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Ie.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(FA.length=o,FA.topRadius=r,FA.bottomRadius=s,FA.slices=a,FA.offsetAttribute=c===-1?void 0:c,new c_(FA))};c_.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=NA.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,p=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,x=o.normal||o.tangent||o.bitangent;if(x){let R=o.tangent||o.bitangent,O=0,M=0,N=0,_=Math.atan2(i-n,t),S=TXe;S.z=Math.sin(_);let w=Math.cos(_),I=AXe,L=CXe;for(m=0;m<r;m++){let B=m/r*P.TWO_PI,H=w*Math.cos(B),V=w*Math.sin(B);x&&(S.x=H,S.y=V,R&&(I=d.normalize(d.cross(d.UNIT_Z,S,I),I)),o.normal&&(h[O++]=S.x,h[O++]=S.y,h[O++]=S.z,h[O++]=S.x,h[O++]=S.y,h[O++]=S.z),o.tangent&&(p[M++]=I.x,p[M++]=I.y,p[M++]=I.z,p[M++]=I.x,p[M++]=I.y,p[M++]=I.z),o.bitangent&&(L=d.normalize(d.cross(S,I,L),L),g[N++]=L.x,g[N++]=L.y,g[N++]=L.z,g[N++]=L.x,g[N++]=L.y,g[N++]=L.z))}for(m=0;m<r;m++)o.normal&&(h[O++]=0,h[O++]=0,h[O++]=-1),o.tangent&&(p[M++]=1,p[M++]=0,p[M++]=0),o.bitangent&&(g[N++]=0,g[N++]=-1,g[N++]=0);for(m=0;m<r;m++)o.normal&&(h[O++]=0,h[O++]=0,h[O++]=1),o.tangent&&(p[M++]=1,p[M++]=0,p[M++]=0),o.bitangent&&(g[N++]=0,g[N++]=1,g[N++]=0)}let b=12*r-12,T=Be.createTypedArray(c,b),C=0,A=0;for(m=0;m<r-1;m++)T[C++]=A,T[C++]=A+2,T[C++]=A+3,T[C++]=A,T[C++]=A+3,T[C++]=A+1,A+=2;for(T[C++]=s-2,T[C++]=0,T[C++]=1,T[C++]=s-2,T[C++]=1,T[C++]=s-1,m=1;m<r-1;m++)T[C++]=s+m+1,T[C++]=s+m,T[C++]=s;for(m=1;m<r-1;m++)T[C++]=a,T[C++]=a+m,T[C++]=a+m+1;let E=0;if(o.st){let R=Math.max(n,i);for(m=0;m<c;m++){let O=d.fromArray(u,m*3,EXe);f[E++]=(O.x+R)/(2*R),f[E++]=(O.y+R)/(2*R)}}let v=new mn;o.position&&(v.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(v.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(v.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:p})),o.bitangent&&(v.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(v.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:f})),s7.x=t*.5,s7.y=Math.max(i,n);let D=new ce(d.ZERO,U.magnitude(s7));if(l(e._offsetAttribute)){t=u.length;let R=e._offsetAttribute===rn.NONE?0:1,O=new Uint8Array(t/3).fill(R);v.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return new ut({attributes:v,indices:T,primitiveType:Ne.TRIANGLES,boundingSphere:D,offsetAttribute:e._offsetAttribute})};var a7;c_.getUnitCylinder=function(){return l(a7)||(a7=c_.createGeometry(new c_({topRadius:1,bottomRadius:1,length:1,vertexFormat:Ie.POSITION_ONLY}))),a7};var w3=c_;var c7=new U;function BA(e){e=y(e,y.EMPTY_OBJECT);let t=e.length,n=e.topRadius,i=e.bottomRadius,o=y(e.slices,128),r=Math.max(y(e.numberOfVerticalLines,16),0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}BA.packedLength=6;BA.pack=function(e,t,n){return n=y(n,0),t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=y(e._offsetAttribute,-1),t};var Zx={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};BA.unpack=function(e,t,n){t=y(t,0);let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(Zx.length=i,Zx.topRadius=o,Zx.bottomRadius=r,Zx.slices=s,Zx.numberOfVerticalLines=a,Zx.offsetAttribute=c===-1?void 0:c,new BA(Zx))};BA.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=NA.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let x=Math.min(r,o);u=Math.round(o/x),c+=x}let f=Be.createTypedArray(s,c*2),h=0,p;for(p=0;p<o-1;p++)f[h++]=p,f[h++]=p+1,f[h++]=p+o,f[h++]=p+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(p=0;p<o;p+=u)f[h++]=p,f[h++]=p+o;let g=new mn;g.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:a}),c7.x=t*.5,c7.y=Math.max(i,n);let m=new ce(d.ZERO,U.magnitude(c7));if(l(e._offsetAttribute)){t=a.length;let x=e._offsetAttribute===rn.NONE?0:1,b=new Uint8Array(t/3).fill(x);g.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}return new ut({attributes:g,indices:f,primitiveType:Ne.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var D3=BA;var mue=d.ZERO,pue=new d,SXe=new d,_ue=new z;function vXe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function pu(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new vXe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(pu.prototype=Object.create(si.prototype),pu.prototype.constructor=pu);Object.defineProperties(pu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Un.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof zt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,_ue)),l(a)||(a=z.WHITE),s.color=Wt.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,mue,pue))),new Dt({id:t,geometry:new w3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};pu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,_ue),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,mue,pue))),new Dt({id:t,geometry:new D3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};pu.prototype._computeCenter=function(e,t){return Y.getValueOrUndefined(this._entity.position,e,t)};pu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||si.prototype._isHidden.call(this,e,t)};pu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!Y.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!Y.isConstant(t.slices)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.numberOfVerticalLines)};pu.prototype._setStaticOptions=function(e,t){let n=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof zt?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(ze.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(ze.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(ze.MINIMUM_VALUE),i.slices=Y.getValueOrUndefined(t.slices,ze.MINIMUM_VALUE),i.numberOfVerticalLines=Y.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),i.offsetAttribute=n!==qe.NONE?rn.ALL:void 0};pu.prototype._onEntityPropertyChanged=ag;pu.DynamicGeometryUpdater=kA;function kA(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(kA.prototype=Object.create(ri.prototype),kA.prototype.constructor=kA);kA.prototype._isHidden=function(e,t,n){let i=this._options,o=Y.getValueOrUndefined(e.position,n,SXe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||ri.prototype._isHidden.call(this,e,t,n)};kA.prototype._setOptions=function(e,t,n){let i=Y.getValueOrDefault(t.heightReference,n,qe.NONE),o=this._options;o.length=Y.getValueOrUndefined(t.length,n),o.topRadius=Y.getValueOrUndefined(t.topRadius,n),o.bottomRadius=Y.getValueOrUndefined(t.bottomRadius,n),o.slices=Y.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=Y.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==qe.NONE?rn.ALL:void 0};var I3=pu;var wXe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},Zr=Object.freeze(wXe);var DXe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},yo=Object.freeze(DXe);var IXe={NONE:0,HOLD:1,EXTRAPOLATE:2},Nf=Object.freeze(IXe);var gue=Hr($l(),1);function PXe(e){let t=new gue.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var my=PXe;var OXe=P.factorial;function l7(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=l7(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var P3={type:"Hermite"};P3.getRequiredDataPoints=function(e,t){return t=y(t,0),Math.max(Math.floor((e+1)/(t+1)),2)};P3.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,p=new Array(i);for(r=0;r<i;r++){o[r]=0;let b=new Array(h);for(p[r]=b,s=0;s<h;s++)b[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let x=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,p[c][0].push(n[f]);for(r=1;r<g;r++){let b=!1;for(s=0;s<g-r;s++){let T=t[m[s]],C=t[m[s+r]],A;C-T<=0?(f=m[s]*i+i*r+c,A=n[f],p[c][r].push(A/OXe(r))):(A=p[c][r-1][s+1]-p[c][r-1][s],p[c][r].push(A/(C-T))),b=b||A!==0}b||(x=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=x;r++){let b=l7(e,m,t,a,r,[]);for(c=0;c<i;c++){let T=p[c][r][0];o[c+a*i]+=T*b}}return o};var RXe=[];P3.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let T=0;T<a;T++)s[T]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let T=0;T<o+1;T++)u[f*(o+1)+T]=f;let h=u.length,p=RXe,g=MXe(p,u,t,n,i,o),m=[],x=h*(h+1)/2,b=Math.min(g,r);for(let T=0;T<=b;T++)for(f=T;f<=g;f++){m.length=0;let C=l7(e,u,t,T,f,m),A=Math.floor(f*(1-f)/2)+h*f;for(let E=0;E<i;E++){let v=Math.floor(E*x),D=p[v+A];s[E+T*i]+=D*C}}return s};function MXe(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let p=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[p+s]=i[a];for(let g=1;g<u;g++){let m=0,x=Math.floor(g*(1-g)/2)+u*g,b=!1;for(s=0;s<u-g;s++){let T=n[t[s]],C=n[t[s+g]],A,E;if(C-T<=0)a=t[s]*o*(r+1)+o*g+h,A=i[a],E=A/P.factorial(g),e[p+x+m]=E,m++;else{let v=Math.floor((g-1)*(2-g)/2)+u*(g-1);A=e[p+v+s+1]-e[p+v+s],E=A/(C-T),e[p+x+m]=E,m++}b=b||A!==0}b&&(c=Math.max(c,g))}}return c}var O3=P3;var u7={type:"Lagrange"};u7.getRequiredDataPoints=function(e){return Math.max(e+1,2)};u7.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var R3=u7;var f7={type:"Linear"};f7.getRequiredDataPoints=function(e){return 2};f7.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var VA=f7;function cc(e,t,n){this.clock=y(e,0),this.cone=y(t,0),this.magnitude=y(n,1)}cc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new cc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};cc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new cc(e.clock,e.cone,e.magnitude)};cc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new cc(e.clock,e.cone,1)};cc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};cc.equalsEpsilon=function(e,t,n){return n=y(n,0),e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};cc.prototype.equals=function(e){return cc.equals(this,e)};cc.prototype.clone=function(e){return cc.clone(this,e)};cc.prototype.equalsEpsilon=function(e,t){return cc.equalsEpsilon(this,e,t)};cc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var M3=cc;var XD=Hr($l(),1);var d7;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?d7=function(){return performance.now()}:d7=function(){return Date.now()};var Ai=d7;function h7(e){e=y(e,y.EMPTY_OBJECT);let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=$.clone(t):l(n)?t=$.clone(n):l(i)?t=$.addDays(i,-1,new $):t=$.now(),l(n)?n=$.clone(n):n=$.clone(t),l(i)?i=$.clone(i):i=$.addDays(n,1,new $),this.startTime=n,this.stopTime=i,this.clockRange=y(e.clockRange,Zr.UNBOUNDED),this.canAnimate=y(e.canAnimate,!0),this.onTick=new me,this.onStop=new me,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Ai(),this.currentTime=t,this.multiplier=y(e.multiplier,1),this.shouldAnimate=y(e.shouldAnimate,!1),this.clockStep=y(e.clockStep,yo.SYSTEM_CLOCK_MULTIPLIER)}Object.defineProperties(h7.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){$.equals(this._currentTime,e)||(this._clockStep===yo.SYSTEM_CLOCK&&(this._clockStep=yo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===yo.SYSTEM_CLOCK&&(this._clockStep=yo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===yo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=$.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===yo.SYSTEM_CLOCK&&(this._clockStep=yo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});h7.prototype.tick=function(){let e=Ai(),t=$.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===yo.SYSTEM_CLOCK)t=$.now(t);else{let i=this._multiplier;if(n===yo.TICK_DEPENDENT)t=$.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=$.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===Zr.CLAMPED)$.lessThan(t,r)?t=$.clone(r,t):$.greaterThan(t,s)&&(t=$.clone(s,t),this.onStop.raiseEvent(this));else if(o===Zr.LOOP_STOP)for($.lessThan(t,r)&&(t=$.clone(r,t));$.greaterThan(t,s);)t=$.addSeconds(r,$.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var ym=h7;function Qx(){this._definitionChanged=new me,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(Qx.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:gl("startTime"),stopTime:gl("stopTime"),currentTime:gl("currentTime"),clockRange:gl("clockRange"),clockStep:gl("clockStep"),multiplier:gl("multiplier")});Qx.prototype.clone=function(e){return l(e)||(e=new Qx),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};Qx.prototype.equals=function(e){return this===e||l(e)&&$.equals(this.startTime,e.startTime)&&$.equals(this.stopTime,e.stopTime)&&$.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};Qx.prototype.merge=function(e){this.startTime=y(this.startTime,e.startTime),this.stopTime=y(this.stopTime,e.stopTime),this.currentTime=y(this.currentTime,e.currentTime),this.clockRange=y(this.clockRange,e.clockRange),this.clockStep=y(this.clockStep,e.clockStep),this.multiplier=y(this.multiplier,e.multiplier)};Qx.prototype.getValue=function(e){return l(e)||(e=new ym),e.startTime=y(this.startTime,e.startTime),e.stopTime=y(this.stopTime,e.stopTime),e.currentTime=y(this.currentTime,e.currentTime),e.clockRange=y(this.clockRange,e.clockRange),e.multiplier=y(this.multiplier,e.multiplier),e.clockStep=y(this.clockStep,e.clockStep),e};var xm=Qx;var LXe=z.WHITE,NXe=.1,FXe=new U(8,8),BXe=new U(0,0),kXe=new U(1,1);function UA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(UA.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)&&Y.isConstant(this._cellAlpha)&&Y.isConstant(this._lineCount)&&Y.isConstant(this._lineThickness)&&Y.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color"),cellAlpha:le("cellAlpha"),lineCount:le("lineCount"),lineThickness:le("lineThickness"),lineOffset:le("lineOffset")});UA.prototype.getType=function(e){return"Grid"};var VXe=new $;UA.prototype.getValue=function(e,t){return l(e)||(e=$.now(VXe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,LXe,t.color),t.cellAlpha=Y.getValueOrDefault(this._cellAlpha,e,NXe),t.lineCount=Y.getValueOrClonedDefault(this._lineCount,e,FXe,t.lineCount),t.lineThickness=Y.getValueOrClonedDefault(this._lineThickness,e,kXe,t.lineThickness),t.lineOffset=Y.getValueOrClonedDefault(this._lineOffset,e,BXe,t.lineOffset),t};UA.prototype.equals=function(e){return this===e||e instanceof UA&&Y.equals(this._color,e._color)&&Y.equals(this._cellAlpha,e._cellAlpha)&&Y.equals(this._lineCount,e._lineCount)&&Y.equals(this._lineThickness,e._lineThickness)&&Y.equals(this._lineOffset,e._lineOffset)};var kD=UA;function zA(e){this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(zA.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color")});zA.prototype.getType=function(e){return"PolylineArrow"};var UXe=new $;zA.prototype.getValue=function(e,t){return l(e)||(e=$.now(UXe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,z.WHITE,t.color),t};zA.prototype.equals=function(e){return this===e||e instanceof zA&&Y.equals(this._color,e._color)};var VD=zA;var zXe=z.WHITE,HXe=z.TRANSPARENT,GXe=16,WXe=255;function HA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(HA.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)&&Y.isConstant(this._gapColor)&&Y.isConstant(this._dashLength)&&Y.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color"),gapColor:le("gapColor"),dashLength:le("dashLength"),dashPattern:le("dashPattern")});HA.prototype.getType=function(e){return"PolylineDash"};var jXe=new $;HA.prototype.getValue=function(e,t){return l(e)||(e=$.now(jXe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,zXe,t.color),t.gapColor=Y.getValueOrClonedDefault(this._gapColor,e,HXe,t.gapColor),t.dashLength=Y.getValueOrDefault(this._dashLength,e,GXe,t.dashLength),t.dashPattern=Y.getValueOrDefault(this._dashPattern,e,WXe,t.dashPattern),t};HA.prototype.equals=function(e){return this===e||e instanceof HA&&Y.equals(this._color,e._color)&&Y.equals(this._gapColor,e._gapColor)&&Y.equals(this._dashLength,e._dashLength)&&Y.equals(this._dashPattern,e._dashPattern)};var UD=HA;var qXe=z.WHITE,YXe=.25,XXe=1;function GA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(GA.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)&&Y.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color"),glowPower:le("glowPower"),taperPower:le("taperPower")});GA.prototype.getType=function(e){return"PolylineGlow"};var KXe=new $;GA.prototype.getValue=function(e,t){return l(e)||(e=$.now(KXe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,qXe,t.color),t.glowPower=Y.getValueOrDefault(this._glowPower,e,YXe,t.glowPower),t.taperPower=Y.getValueOrDefault(this._taperPower,e,XXe,t.taperPower),t};GA.prototype.equals=function(e){return this===e||e instanceof GA&&Y.equals(this._color,e._color)&&Y.equals(this._glowPower,e._glowPower)&&Y.equals(this._taperPower,e._taperPower)};var zD=GA;var $Xe=z.WHITE,ZXe=z.BLACK,QXe=1;function WA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(WA.prototype,{isConstant:{get:function(){return Y.isConstant(this._color)&&Y.isConstant(this._outlineColor)&&Y.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:le("color"),outlineColor:le("outlineColor"),outlineWidth:le("outlineWidth")});WA.prototype.getType=function(e){return"PolylineOutline"};var JXe=new $;WA.prototype.getValue=function(e,t){return l(e)||(e=$.now(JXe)),l(t)||(t={}),t.color=Y.getValueOrClonedDefault(this._color,e,$Xe,t.color),t.outlineColor=Y.getValueOrClonedDefault(this._outlineColor,e,ZXe,t.outlineColor),t.outlineWidth=Y.getValueOrDefault(this._outlineWidth,e,QXe),t};WA.prototype.equals=function(e){return this===e||e instanceof WA&&Y.equals(this._color,e._color)&&Y.equals(this._outlineColor,e._outlineColor)&&Y.equals(this._outlineWidth,e._outlineWidth)};var Jx=WA;function l_(e,t){this._value=void 0,this._definitionChanged=new me,this._eventHelper=new xr,this._referenceFrame=y(t,Gi.FIXED),this.setValue(e)}Object.defineProperties(l_.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!Y.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var eKe=new $;l_.prototype.getValue=function(e,t){return l(e)||(e=$.now(eKe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};l_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};l_.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,l_.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};l_.prototype.equals=function(e){return this===e||e instanceof l_&&this._referenceFrame===e._referenceFrame&&Y.arrayEquals(this._value,e._value)};l_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var py=l_;function _y(e){this._value=void 0,this._definitionChanged=new me,this._eventHelper=new xr,this.setValue(e)}Object.defineProperties(_y.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!Y.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var tKe=new $;_y.prototype.getValue=function(e,t){l(e)||(e=$.now(tKe));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};_y.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,_y.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};_y.prototype.equals=function(e){return this===e||e instanceof _y&&Y.arrayEquals(this._value,e._value)};_y.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var HD=_y;function eb(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(_u.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function _u(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new me,e.collectionChanged.addEventListener(_u.prototype._onCollectionChanged,this)}Object.defineProperties(_u.prototype,{isConstant:{get:function(){return Y.isConstant(eb(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=eb(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return eb(this)}}});_u.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new _u(e,n,i)};var nKe=new $;_u.prototype.getValue=function(e,t){let n=eb(this);return l(e)||(e=$.now(nKe)),l(n)?n.getValue(e,t):void 0};_u.prototype.getValueInReferenceFrame=function(e,t,n){let i=eb(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};_u.prototype.getType=function(e){let t=eb(this);return l(t)?t.getType(e):void 0};_u.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};_u.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};_u.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(_u.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=eb(this),l(i)&&this._definitionChanged.raiseEvent(this))};var gy=_u;var iKe={packedLength:1,pack:function(e,t,n){return n=y(n,0),t[n]=e,t},unpack:function(e,t,n){return t=y(t,0),e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=y(t,0),n=y(n,e.length);let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-P.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+P.TWO_PI:o}},Gd=iKe;var yue={packedLength:1,pack:function(e,t,n){n=y(n,0),t[n]=e},unpack:function(e,t,n){return t=y(t,0),e[t]}};function xue(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function bue(e,t){return e instanceof $?e:typeof e=="string"?$.fromIso8601(e):$.addSeconds(t,e,new $)}var m7=[],p7=[];function L3(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=bue(i[r],e),c=No(t,f,$.compare);let p=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=bue(i[r],e),!(l(a)&&$.compare(a,f)>=0||l(h)&&$.compare(f,h)>=0));){for(m7[p++]=f,r=r+1,s=0;s<o;s++)p7[g++]=i[r],r=r+1;a=f}p>0&&(p7.length=g,xue(n,u,p7),m7.length=p,xue(t,c,m7))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function Ff(e,t){let n=e;n===Number&&(n=yue);let i=n.packedLength,o=y(n.packedInterpolationLength,i),r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=yue);let f=u.packedLength;i+=f,o+=y(u.packedInterpolationLength,f),s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=VA,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new me,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=Nf.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=Nf.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(Ff.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var oKe=new $;Ff.prototype.getValue=function(e,t){l(e)||(e=$.now(oKe));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=No(n,e,$.compare);if(a<0){if(a=~a,a===0){let E=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===Nf.NONE||o!==0&&$.secondsDifference(E,e)>o)return;if(this._backwardExtrapolationType===Nf.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let E=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===Nf.NONE||o!==0&&$.secondsDifference(e,E)>o)return;if(this._forwardExtrapolationType===Nf.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,p=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let E=Math.min(f.getRequiredDataPoints(this._interpolationDegree,p),i);E!==this._numberOfPoints&&(this._numberOfPoints=E,c.length=E,u.length=E*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,x=i-1;if(x-m+1>=g+1){let E=a-(g/2|0)-1;E<m&&(E=m);let v=E+g;v>x&&(v=x,E=v-g,E<m&&(E=m)),m=E,x=v}let T=x-m+1;for(let E=0;E<T;++E)c[E]=$.secondsDifference(n[m+E],n[x]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,x,u);else{let E=0,v=this._packedLength,D=m*v,R=(x+1)*v;for(;D<R;)u[E]=s[D],D++,E++}let C=$.secondsDifference(e,n[x]),A;if(p===0||!l(f.interpolate))A=f.interpolateOrderZero(C,c,u,h,this._interpolationResult);else{let E=Math.floor(h/(p+1));A=f.interpolate(C,c,u,E,p,p,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(A,s,m,x,t):r.unpack(A,0,t)}return r.unpack(s,a*this._packedLength,t)};Ff.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};Ff.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}L3(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Ff.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}L3(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Ff.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};Ff.prototype.addSamplesPackedArray=function(e,t){L3(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Ff.prototype.removeSample=function(e){let t=No(this._times,e,$.compare);return t<0?!1:(Tue(this,t,1),!0)};function Tue(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}Ff.prototype.removeSamples=function(e){let t=this._times,n=No(t,e.start,$.compare);n<0?n=~n:e.isStartIncluded||++n;let i=No(t,e.stop,$.compare);i<0?i=~i:e.isStopIncluded&&++i,Tue(this,n,i-n)};Ff.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!$.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};Ff._mergeNewSamples=L3;var Bf=Ff;function kf(e,t){t=y(t,0);let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new Bf(d,n),this._definitionChanged=new me,this._referenceFrame=y(e,Gi.FIXED),this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(kf.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var rKe=new $;kf.prototype.getValue=function(e,t){return l(e)||(e=$.now(rKe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};kf.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return Vh.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};kf.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};kf.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};kf.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};kf.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};kf.prototype.removeSample=function(e){return this._property.removeSample(e)};kf.prototype.removeSamples=function(e){this._property.removeSamples(e)};kf.prototype.equals=function(e){return this===e||e instanceof kf&&Y.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var Ra=kf;var sKe={HORIZONTAL:0,VERTICAL:1},bm=Object.freeze(sKe);var aKe=bm.HORIZONTAL,cKe=z.WHITE,lKe=z.BLACK,uKe=0,fKe=1;function jA(e){e=y(e,y.EMPTY_OBJECT),this._definitionChanged=new me,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(jA.prototype,{isConstant:{get:function(){return Y.isConstant(this._orientation)&&Y.isConstant(this._evenColor)&&Y.isConstant(this._oddColor)&&Y.isConstant(this._offset)&&Y.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:le("orientation"),evenColor:le("evenColor"),oddColor:le("oddColor"),offset:le("offset"),repeat:le("repeat")});jA.prototype.getType=function(e){return"Stripe"};var dKe=new $;jA.prototype.getValue=function(e,t){return l(e)||(e=$.now(dKe)),l(t)||(t={}),t.horizontal=Y.getValueOrDefault(this._orientation,e,aKe)===bm.HORIZONTAL,t.evenColor=Y.getValueOrClonedDefault(this._evenColor,e,cKe,t.evenColor),t.oddColor=Y.getValueOrClonedDefault(this._oddColor,e,lKe,t.oddColor),t.offset=Y.getValueOrDefault(this._offset,e,uKe),t.repeat=Y.getValueOrDefault(this._repeat,e,fKe),t};jA.prototype.equals=function(e){return this===e||e instanceof jA&&Y.equals(this._orientation,e._orientation)&&Y.equals(this._evenColor,e._evenColor)&&Y.equals(this._oddColor,e._oddColor)&&Y.equals(this._offset,e._offset)&&Y.equals(this._repeat,e._repeat)};var GD=jA;function yy(e){this._definitionChanged=new me,this._intervals=new Kr,this._intervals.changedEvent.addEventListener(yy.prototype._intervalsChanged,this),this._referenceFrame=y(e,Gi.FIXED)}Object.defineProperties(yy.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var hKe=new $;yy.prototype.getValue=function(e,t){return l(e)||(e=$.now(hKe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};yy.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return Vh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};yy.prototype.equals=function(e){return this===e||e instanceof yy&&this._intervals.equals(e._intervals,Y.equals)&&this._referenceFrame===e._referenceFrame};yy.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var xy=yy;function tb(){this._definitionChanged=new me,this._intervals=new Kr,this._intervals.changedEvent.addEventListener(tb.prototype._intervalsChanged,this)}Object.defineProperties(tb.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var mKe=new $;tb.prototype.getValue=function(e,t){l(e)||(e=$.now(mKe));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};tb.prototype.equals=function(e){return this===e||e instanceof tb&&this._intervals.equals(e._intervals,Y.equals)};tb.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var by=tb;function qA(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new me,this._normalize=y(t,!0),this.position=e}Object.defineProperties(qA.prototype,{isConstant:{get:function(){return Y.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var pKe=new d,Cue=new d,Aue=new $,_Ke=new $,_7=1/60;qA.prototype.getValue=function(e,t){return this._getValue(e,t)};qA.prototype._getValue=function(e,t,n){l(e)||(e=$.now(_Ke)),l(t)||(t=new d);let i=this._position;if(Y.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,pKe),r=i.getValue($.addSeconds(e,_7,Aue),Cue);if(!l(o)||!l(r)&&(r=o,o=i.getValue($.addSeconds(e,-_7,Aue),Cue),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,_7,t)};qA.prototype.equals=function(e){return this===e||e instanceof qA&&Y.equals(this._position,e._position)};var Ty=qA;function WD(e,t){this._velocityVectorProperty=new Ty(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new me,this.ellipsoid=y(t,ee.default);let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(WD.prototype,{isConstant:{get:function(){return Y.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var Eue=new d,gKe=new d,Sue=new Z,yKe=new $;WD.prototype.getValue=function(e,t){l(e)||(e=$.now(yKe));let n=this._velocityVectorProperty._getValue(e,gKe,Eue);if(l(n))return Mt.rotationMatrixFromPositionVelocity(Eue,n,this._ellipsoid,Sue),Le.fromRotationMatrix(Sue,t)};WD.prototype.equals=function(e){return this===e||e instanceof WD&&Y.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var N3=WD;var u_={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};u_.validate=function(e){return e===u_.COMPLETE||e===u_.BELOW_ELLIPSOID_HORIZON||e===u_.ABOVE_ELLIPSOID_HORIZON};u_.toString=function(e){switch(e){case u_.COMPLETE:return"COMPLETE";case u_.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case u_.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new de("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var jD=u_;function Cy(){}Cy.packedLength=d.packedLength;Cy.unpack=d.unpack;Cy.pack=d.pack;var g7;function qD(e,t){return t[0]==="#"&&(t=g7+t),gy.fromString(e,t)}function vue(e,t,n){if(l(n.reference))return qD(t,n.reference);if(l(n.velocityReference)){let i=qD(t,n.velocityReference);switch(e){case d:case Cy:return new Ty(i,e===Cy);case Le:return new N3(i)}}throw new se(`${JSON.stringify(n)} is not valid CZML.`)}function xKe(e,t){return new Gh(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var Vi=new d,Xc=new M3,lc=new fe,nb=new An,F3=new Le;function bKe(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===z.packedLength)return[z.byteToFloat(n[0]),z.byteToFloat(n[1]),z.byteToFloat(n[2]),z.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=z.byteToFloat(n[o+1]),t[o+2]=z.byteToFloat(n[o+2]),t[o+3]=z.byteToFloat(n[o+3]),t[o+4]=z.byteToFloat(n[o+4]);return t}function wue(e,t){let n=y(e.uri,e);return l(t)?t.getDerivedResource({url:n}):Ee.createIfNeeded(n)}function TKe(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[P.toRadians(n[0]),P.toRadians(n[1]),P.toRadians(n[2]),P.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=P.toRadians(n[o+1]),t[o+2]=P.toRadians(n[o+2]),t[o+3]=P.toRadians(n[o+3]),t[o+4]=P.toRadians(n[o+4]);return t}function CKe(e){let t=e.length;if(Xc.magnitude=1,t===2)return Xc.clock=e[0],Xc.cone=e[1],d.fromSpherical(Xc,Vi),[Vi.x,Vi.y,Vi.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],Xc.clock=e[i+1],Xc.cone=e[i+2],d.fromSpherical(Xc,Vi),n[o+1]=Vi.x,n[o+2]=Vi.y,n[o+3]=Vi.z;return n}function AKe(e){let t=e.length;if(t===3)return Xc.clock=e[0],Xc.cone=e[1],Xc.magnitude=e[2],d.fromSpherical(Xc,Vi),[Vi.x,Vi.y,Vi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Xc.clock=e[i+1],Xc.cone=e[i+2],Xc.magnitude=e[i+3],d.fromSpherical(Xc,Vi),n[i+1]=Vi.x,n[i+2]=Vi.y,n[i+3]=Vi.z;return n}function EKe(e){let t=e.length;if(t===3)return lc.longitude=e[0],lc.latitude=e[1],lc.height=e[2],ee.default.cartographicToCartesian(lc,Vi),[Vi.x,Vi.y,Vi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],lc.longitude=e[i+1],lc.latitude=e[i+2],lc.height=e[i+3],ee.default.cartographicToCartesian(lc,Vi),n[i+1]=Vi.x,n[i+2]=Vi.y,n[i+3]=Vi.z;return n}function SKe(e){let t=e.length;if(t===3)return lc.longitude=P.toRadians(e[0]),lc.latitude=P.toRadians(e[1]),lc.height=e[2],ee.default.cartographicToCartesian(lc,Vi),[Vi.x,Vi.y,Vi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],lc.longitude=P.toRadians(e[i+1]),lc.latitude=P.toRadians(e[i+2]),lc.height=e[i+3],ee.default.cartographicToCartesian(lc,Vi),n[i+1]=Vi.x,n[i+2]=Vi.y,n[i+3]=Vi.z;return n}function y7(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return CKe(o);let r=e.spherical;if(l(r))return AKe(r);let s=e.cartographicRadians;if(l(s))return EKe(s);let a=e.cartographicDegrees;if(l(a))return SKe(a);throw new se(`${JSON.stringify(e)} is not a valid CZML interval.`)}function Due(e,t){d.unpack(e,t,Vi),d.normalize(Vi,Vi),d.pack(Vi,e,t)}function vKe(e){let t=y7(e);if(t.length===3)return Due(t,0),t;for(let n=1;n<t.length;n+=4)Due(t,n);return t}function Iue(e,t){Le.unpack(e,t,F3),Le.normalize(F3,F3),Le.pack(F3,e,t)}function wKe(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return Iue(t,0),t;for(let n=1;n<t.length;n+=5)Iue(t,n)}return t}function Pue(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?je:e.hasOwnProperty("cartesian2")?U:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?Cy:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?z:e.hasOwnProperty("arcType")?en:e.hasOwnProperty("classificationType")?zn:e.hasOwnProperty("colorBlendMode")?Vc:e.hasOwnProperty("cornerType")?ki:e.hasOwnProperty("heightReference")?qe:e.hasOwnProperty("horizontalOrigin")?yi:e.hasOwnProperty("date")?$:e.hasOwnProperty("labelStyle")?Zo:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?Vt:e.hasOwnProperty("distanceDisplayCondition")?Lt:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?yn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?bm:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?XD.default:e.hasOwnProperty("verticalOrigin")?Fn:Object}function DKe(e,t,n){switch(e){case en:return en[y(t.arcType,t)];case Array:return t.array;case Boolean:return y(t.boolean,t);case je:return t.boundingRectangle;case U:return t.cartesian2;case d:return y7(t);case Cy:return vKe(t);case z:return bKe(t);case zn:return zn[y(t.classificationType,t)];case Vc:return Vc[y(t.colorBlendMode,t)];case ki:return ki[y(t.cornerType,t)];case qe:return qe[y(t.heightReference,t)];case yi:return yi[y(t.horizontalOrigin,t)];case Image:return wue(t,n);case $:return $.fromIso8601(y(t.date,t));case Zo:return Zo[y(t.labelStyle,t)];case Number:return y(t.number,t);case Vt:return t.nearFarScalar;case Lt:return t.distanceDisplayCondition;case Object:return y(y(t.object,t.value),t);case Le:return wKe(t);case Gd:return y(t.number,t);case jD:return jD[y(t.portionToDisplay,t)];case yn:return yn[y(y(t.shadowMode,t.shadows),t)];case String:return y(t.string,t);case bm:return bm[y(t.stripeOrientation,t)];case ae:return TKe(t);case XD.default:return wue(t,n);case Fn:return Fn[y(t.verticalOrigin,t)];default:throw new se(`Unknown CzmlDataSource interval type: ${e}`)}}var IKe={HERMITE:O3,LAGRANGE:R3,LINEAR:VA};function B3(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:IKe[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=Nf[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=Nf[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var Oue={iso8601:void 0};function ur(e){if(l(e))return Oue.iso8601=e,An.fromIso8601(Oue)}function x7(e){let t=ze.MAXIMUM_INTERVAL.clone();return t.data=e,t}function Rue(e){let t=new jc;return t.intervals.addInterval(x7(e)),t}function Mue(e){let t=new Oa(e.referenceFrame);return t.intervals.addInterval(x7(e)),t}function k3(e,t,n,i,o,r,s){let a=ur(i.interval);l(o)&&(l(a)?a=An.intersect(a,o,nb):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),p=l(a)&&!a.equals(ze.MAXIMUM_INTERVAL);if(i.delete===!0){if(!p){t[n]=void 0;return}return Wue(t[n],a)}let g=!1;if(h){if(u=DKe(e,i,r),!l(u))return;c=y(e.packedLength,1),f=y(u.length,1),g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==Gd;if(!g&&!p){h?t[n]=new $n(m?e.unpack(u,0):u):t[n]=vue(e,s,i);return}let x=t[n],b,T=i.epoch;if(l(T)&&(b=$.fromIso8601(T)),g&&!p){x instanceof Bf||(t[n]=x=new Bf(e)),x.addSamplesPackedArray(u,b),B3(i,x);return}let C;if(!g&&p){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=vue(e,s,i),l(x)||(t[n]=x=h?new by:new jc),h&&x instanceof by?x.intervals.addInterval(a):x instanceof jc?(h&&(a.data=new $n(a.data)),x.intervals.addInterval(a)):(t[n]=x=Rue(x),h&&(a.data=new $n(a.data)),x.intervals.addInterval(a));return}l(x)||(t[n]=x=new jc),x instanceof jc||(t[n]=x=Rue(x));let A=x.intervals;C=A.findInterval(a),(!l(C)||!(C.data instanceof Bf))&&(C=a.clone(),C.data=new Bf(e),A.addInterval(C)),C.data.addSamplesPackedArray(u,b),B3(i,C.data)}function Wue(e,t){if(e instanceof Bf){e.removeSamples(t);return}else if(e instanceof by){e.intervals.removeInterval(t);return}else if(e instanceof jc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=An.intersect(n.get(i),t,nb);o.isEmpty||Wue(o.data,t)}n.removeInterval(t);return}}function ge(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)k3(e,t,n,i[a],o,r,s);else k3(e,t,n,i,o,r,s)}function Lue(e,t,n,i,o,r){let s=ur(n.interval);l(i)&&(l(s)?s=An.intersect(s,i,nb):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),p=l(s)&&!s.equals(ze.MAXIMUM_INTERVAL);if(n.delete===!0){if(!p){e[t]=void 0;return}return jue(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=Gi[n.referenceFrame]),g=y(g,Gi.FIXED),u=y7(n),f=y(u.length,1),m=f>c),!m&&!p){h?e[t]=new _l(d.unpack(u),g):e[t]=qD(r,n.reference);return}let x=e[t],b,T=n.epoch;if(l(T)&&(b=$.fromIso8601(T)),m&&!p){(!(x instanceof Ra)||l(g)&&x.referenceFrame!==g)&&(e[t]=x=new Ra(g,a)),x.addSamplesPackedArray(u,b),B3(n,x);return}let C;if(!m&&p){s=s.clone(),h?s.data=d.unpack(u):s.data=qD(r,n.reference),l(x)||(h?x=new xy(g):x=new Oa(g),e[t]=x),h&&x instanceof xy&&l(g)&&x.referenceFrame===g?x.intervals.addInterval(s):x instanceof Oa?(h&&(s.data=new _l(s.data,g)),x.intervals.addInterval(s)):(e[t]=x=Mue(x),h&&(s.data=new _l(s.data,g)),x.intervals.addInterval(s));return}l(x)?x instanceof Oa||(e[t]=x=Mue(x)):e[t]=x=new Oa(g);let A=x.intervals;C=A.findInterval(s),(!l(C)||!(C.data instanceof Ra)||l(g)&&C.data.referenceFrame!==g)&&(C=s.clone(),C.data=new Ra(g,a),A.addInterval(C)),C.data.addSamplesPackedArray(u,b),B3(n,C.data)}function jue(e,t){if(e instanceof Ra){e.removeSamples(t);return}else if(e instanceof xy){e.intervals.removeInterval(t);return}else if(e instanceof Oa){let n=e.intervals;for(let i=0;i<n.length;++i){let o=An.intersect(n.get(i),t,nb);o.isEmpty||jue(o.data,t)}n.removeInterval(t);return}}function que(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)Lue(e,t,n[s],i,o,r);else Lue(e,t,n,i,o,r)}function Nue(e,t,n,i){l(n.references)?V3(e,t,n.references,n.interval,i,HD,jc):(l(n.cartesian2)?n.array=U.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=U.unpackArray(n.cartesian)),l(n.array)&&ge(Array,e,t,n,void 0,void 0,i))}function Fue(e,t,n,i,o,r){let s=ur(n.interval);l(i)&&(l(s)?s=An.intersect(s,i,nb):s=i);let a=e[t],c,u;if(l(s)){a instanceof OD||(a=new OD,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof zt||(c=new zt),f=n.solidColor,ge(z,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof kD||(c=new kD),f=n.grid,ge(z,c,"color",f.color,void 0,o,r),ge(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),ge(U,c,"lineCount",f.lineCount,void 0,o,r),ge(U,c,"lineThickness",f.lineThickness,void 0,o,r),ge(U,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof nx||(c=new nx),f=n.image,ge(Image,c,"image",f.image,void 0,o,r),ge(U,c,"repeat",f.repeat,void 0,o,r),ge(z,c,"color",f.color,void 0,o,r),ge(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof GD||(c=new GD),f=n.stripe,ge(bm,c,"orientation",f.orientation,void 0,o,r),ge(z,c,"evenColor",f.evenColor,void 0,o,r),ge(z,c,"oddColor",f.oddColor,void 0,o,r),ge(Number,c,"offset",f.offset,void 0,o,r),ge(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof Jx||(c=new Jx),f=n.polylineOutline,ge(z,c,"color",f.color,void 0,o,r),ge(z,c,"outlineColor",f.outlineColor,void 0,o,r),ge(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof zD||(c=new zD),f=n.polylineGlow,ge(z,c,"color",f.color,void 0,o,r),ge(Number,c,"glowPower",f.glowPower,void 0,o,r),ge(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof VD||(c=new VD),f=n.polylineArrow,ge(z,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof UD||(c=new UD),f=n.polylineDash,ge(z,c,"color",f.color,void 0,void 0,r),ge(z,c,"gapColor",f.gapColor,void 0,void 0,r),ge(Number,c,"dashLength",f.dashLength,void 0,o,r),ge(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof wD||(c=new wD),f=n.checkerboard,ge(z,c,"evenColor",f.evenColor,void 0,o,r),ge(z,c,"oddColor",f.oddColor,void 0,o,r),ge(U,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function gu(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)Fue(e,t,n[s],i,o,r);else Fue(e,t,n,i,o,r)}function PKe(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function OKe(e,t,n,i){let o=t.description;l(o)&&ge(String,e,"description",o,void 0,i,n)}function RKe(e,t,n,i){let o=t.position;l(o)&&que(e,"position",o,void 0,i,n)}function MKe(e,t,n,i){let o=t.viewFrom;l(o)&&ge(d,e,"viewFrom",o,void 0,i,n)}function LKe(e,t,n,i){let o=t.orientation;l(o)&&ge(Le,e,"orientation",o,void 0,i,n)}function NKe(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new yl);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)k3(Pue(s[a]),e.properties,r,s[a],void 0,i,n);else k3(Pue(s),e.properties,r,s,void 0,i,n)}}}function V3(e,t,n,i,o,r,s){let a=n.map(function(c){return qD(o,c)});if(l(i)){i=ur(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval(x7(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function Bue(e,t,n,i){let o=n.references;l(o)?V3(e,t,o,n.interval,i,HD,jc):ge(Array,e,t,n,void 0,void 0,i)}function kue(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Bue(e,t,n[o],i);else Bue(e,t,n,i)}function Vue(e,t,n,i){let o=n.references;l(o)?V3(e,t,o,n.interval,i,py,Oa):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,ee.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,ee.default)),l(n.array)&&ge(Array,e,t,n,void 0,void 0,i))}function KD(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Vue(e,t,n[o],i);else Vue(e,t,n,i)}function FKe(e){return d.unpackArray(e)}function BKe(e){return d.fromRadiansArrayHeights(e,ee.default)}function kKe(e){return d.fromDegreesArrayHeights(e,ee.default)}function Uue(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return V3(a,"positions",s,n.interval,i,py,Oa),a.positions});e[t]=new py(r)}else l(n.cartesian)?n.array=n.cartesian.map(FKe):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(BKe):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(kKe)),l(n.array)&&ge(Array,e,t,n,void 0,void 0,i)}function VKe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Uue(e,t,n[o],i);else Uue(e,t,n,i)}function UKe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Nue(e,t,n[o],i);else Nue(e,t,n,i)}function zKe(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new Kr),r.addInterval(ur(o[s]));else r=new Kr,r.addInterval(ur(o));e.availability=r}function HKe(e,t,n,i,o){l(t)&&ge(Cy,e,"alignedAxis",t,n,i,o)}function GKe(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=ur(o.interval),s=e.billboard;l(s)||(e.billboard=s=new Ac),ge(Boolean,s,"show",o.show,r,i,n),ge(Image,s,"image",o.image,r,i,n),ge(Number,s,"scale",o.scale,r,i,n),ge(U,s,"pixelOffset",o.pixelOffset,r,i,n),ge(d,s,"eyeOffset",o.eyeOffset,r,i,n),ge(yi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),ge(Fn,s,"verticalOrigin",o.verticalOrigin,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(z,s,"color",o.color,r,i,n),ge(Gd,s,"rotation",o.rotation,r,i,n),HKe(s,o.alignedAxis,r,i,n),ge(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),ge(Number,s,"width",o.width,r,i,n),ge(Number,s,"height",o.height,r,i,n),ge(Vt,s,"scaleByDistance",o.scaleByDistance,r,i,n),ge(Vt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),ge(Vt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),ge(je,s,"imageSubRegion",o.imageSubRegion,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function WKe(e,t,n,i){let o=t.box;if(!l(o))return;let r=ur(o.interval),s=e.box;l(s)||(e.box=s=new eC),ge(Boolean,s,"show",o.show,r,i,n),ge(d,s,"dimensions",o.dimensions,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function jKe(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=ur(o.interval),s=e.corridor;l(s)||(e.corridor=s=new nC),ge(Boolean,s,"show",o.show,r,i,n),KD(s,"positions",o.positions,n),ge(Number,s,"width",o.width,r,i,n),ge(Number,s,"height",o.height,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),ge(qe,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),ge(ki,s,"cornerType",o.cornerType,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(zn,s,"classificationType",o.classificationType,r,i,n),ge(Number,s,"zIndex",o.zIndex,r,i,n)}function qKe(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=ur(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new iC),ge(Boolean,s,"show",o.show,r,i,n),ge(Number,s,"length",o.length,r,i,n),ge(Number,s,"topRadius",o.topRadius,r,i,n),ge(Number,s,"bottomRadius",o.bottomRadius,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),ge(Number,s,"slices",o.slices,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function YKe(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new se("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new se("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=y(o.interval,r.interval),r.currentTime=y(o.currentTime,r.currentTime),r.range=y(o.range,r.range),r.step=y(o.step,r.step),r.multiplier=y(o.multiplier,r.multiplier)):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function XKe(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=ur(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new oC),ge(Boolean,s,"show",o.show,r,i,n),ge(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),ge(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),ge(Number,s,"height",o.height,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),ge(qe,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),ge(Gd,s,"rotation",o.rotation,r,i,n),ge(Gd,s,"stRotation",o.stRotation,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(zn,s,"classificationType",o.classificationType,r,i,n),ge(Number,s,"zIndex",o.zIndex,r,i,n)}function KKe(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=ur(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new rC),ge(Boolean,s,"show",o.show,r,i,n),ge(d,s,"radii",o.radii,r,i,n),ge(d,s,"innerRadii",o.innerRadii,r,i,n),ge(Number,s,"minimumClock",o.minimumClock,r,i,n),ge(Number,s,"maximumClock",o.maximumClock,r,i,n),ge(Number,s,"minimumCone",o.minimumCone,r,i,n),ge(Number,s,"maximumCone",o.maximumCone,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Number,s,"stackPartitions",o.stackPartitions,r,i,n),ge(Number,s,"slicePartitions",o.slicePartitions,r,i,n),ge(Number,s,"subdivisions",o.subdivisions,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function $Ke(e,t,n,i){let o=t.label;if(!l(o))return;let r=ur(o.interval),s=e.label;l(s)||(e.label=s=new Uh),ge(Boolean,s,"show",o.show,r,i,n),ge(String,s,"text",o.text,r,i,n),ge(String,s,"font",o.font,r,i,n),ge(Zo,s,"style",o.style,r,i,n),ge(Number,s,"scale",o.scale,r,i,n),ge(Boolean,s,"showBackground",o.showBackground,r,i,n),ge(z,s,"backgroundColor",o.backgroundColor,r,i,n),ge(U,s,"backgroundPadding",o.backgroundPadding,r,i,n),ge(U,s,"pixelOffset",o.pixelOffset,r,i,n),ge(d,s,"eyeOffset",o.eyeOffset,r,i,n),ge(yi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),ge(Fn,s,"verticalOrigin",o.verticalOrigin,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(z,s,"fillColor",o.fillColor,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Vt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),ge(Vt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),ge(Vt,s,"scaleByDistance",o.scaleByDistance,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function ZKe(e,t,n,i){let o=t.model;if(!l(o))return;let r=ur(o.interval),s=e.model;l(s)||(e.model=s=new og),ge(Boolean,s,"show",o.show,r,i,n),ge(XD.default,s,"uri",o.gltf,r,i,n),ge(Number,s,"scale",o.scale,r,i,n),ge(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),ge(Number,s,"maximumScale",o.maximumScale,r,i,n),ge(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),ge(Boolean,s,"runAnimations",o.runAnimations,r,i,n),ge(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(z,s,"silhouetteColor",o.silhouetteColor,r,i,n),ge(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),ge(z,s,"color",o.color,r,i,n),ge(Vc,s,"colorBlendMode",o.colorBlendMode,r,i,n),ge(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)zue(s,u[a],r,i,n);else zue(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)Hue(s,f[a],r,i,n);else Hue(s,f,r,i,n)}function zue(e,t,n,i,o){let r=ur(t.interval);l(n)&&(l(r)?r=An.intersect(r,n,nb):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new yl),s.hasProperty(f)||s.addProperty(f);let p=s[f];l(p)||(s[f]=p=new sC),ge(d,p,"translation",h.translation,r,i,o),ge(Le,p,"rotation",h.rotation,r,i,o),ge(d,p,"scale",h.scale,r,i,o)}}function Hue(e,t,n,i,o){let r=ur(t.interval);l(n)&&(l(r)?r=An.intersect(r,n,nb):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new yl),s.hasProperty(f)||s.addProperty(f),ge(Number,s,f,h,r,i,o))}}function QKe(e,t,n,i){let o=t.path;if(!l(o))return;let r=ur(o.interval),s=e.path;l(s)||(e.path=s=new rg),ge(Boolean,s,"show",o.show,r,i,n),ge(Number,s,"leadTime",o.leadTime,r,i,n),ge(Number,s,"trailTime",o.trailTime,r,i,n),ge(Number,s,"width",o.width,r,i,n),ge(Number,s,"resolution",o.resolution,r,i,n),gu(s,"material",o.material,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function JKe(e,t,n,i){let o=t.point;if(!l(o))return;let r=ur(o.interval),s=e.point;l(s)||(e.point=s=new cC),ge(Boolean,s,"show",o.show,r,i,n),ge(Number,s,"pixelSize",o.pixelSize,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(z,s,"color",o.color,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Vt,s,"scaleByDistance",o.scaleByDistance,r,i,n),ge(Vt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function YD(e){this.polygon=e,this._definitionChanged=new me}Object.defineProperties(YD.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});YD.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new Za(o)}))),l(t)?(t.positions=n,t.holes=i,t):new Za(n,i)};YD.prototype.equals=function(e){return this===e||e instanceof YD&&Y.equals(this.polygon._positions,e.polygon._positions)&&Y.equals(this.polygon._holes,e.polygon._holes)};function e$e(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=ur(o.interval),s=e.polygon;l(s)||(e.polygon=s=new zh),ge(Boolean,s,"show",o.show,r,i,n),KD(s,"_positions",o.positions,n),VKe(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new YD(s)),ge(Number,s,"height",o.height,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),ge(qe,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),ge(Gd,s,"stRotation",o.stRotation,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),ge(Boolean,s,"closeTop",o.closeTop,r,i,n),ge(Boolean,s,"closeBottom",o.closeBottom,r,i,n),ge(en,s,"arcType",o.arcType,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(zn,s,"classificationType",o.classificationType,r,i,n),ge(Number,s,"zIndex",o.zIndex,r,i,n)}function t$e(e){return e?en.GEODESIC:en.NONE}function n$e(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=ur(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new Oc),ge(Boolean,s,"show",o.show,r,i,n),KD(s,"positions",o.positions,n),ge(Number,s,"width",o.width,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),gu(s,"material",o.material,r,i,n),gu(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),ge(en,s,"arcType",o.arcType,r,i,n),ge(Boolean,s,"clampToGround",o.clampToGround,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(zn,s,"classificationType",o.classificationType,r,i,n),ge(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};ge(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=xKe(a.followSurface,t$e)}}function i$e(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=ur(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new lC),KD(s,"positions",o.positions,n),UKe(s,"shape",o.shape,n),ge(Boolean,s,"show",o.show,r,i,n),ge(ki,s,"cornerType",o.cornerType,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function o$e(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=ur(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new Hh),ge(Boolean,s,"show",o.show,r,i,n),ge(ae,s,"coordinates",o.coordinates,r,i,n),ge(Number,s,"height",o.height,r,i,n),ge(qe,s,"heightReference",o.heightReference,r,i,n),ge(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),ge(qe,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),ge(Gd,s,"rotation",o.rotation,r,i,n),ge(Gd,s,"stRotation",o.stRotation,r,i,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),ge(zn,s,"classificationType",o.classificationType,r,i,n),ge(Number,s,"zIndex",o.zIndex,r,i,n)}function r$e(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=ur(o.interval),s=e.tileset;l(s)||(e.tileset=s=new aC),ge(Boolean,s,"show",o.show,r,i,n),ge(XD.default,s,"uri",o.uri,r,i,n),ge(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function s$e(e,t,n,i){let o=t.wall;if(!l(o))return;let r=ur(o.interval),s=e.wall;l(s)||(e.wall=s=new sg),ge(Boolean,s,"show",o.show,r,i,n),KD(s,"positions",o.positions,n),kue(s,"minimumHeights",o.minimumHeights,n),kue(s,"maximumHeights",o.maximumHeights,n),ge(Number,s,"granularity",o.granularity,r,i,n),ge(Boolean,s,"fill",o.fill,r,i,n),gu(s,"material",o.material,r,i,n),ge(Boolean,s,"outline",o.outline,r,i,n),ge(z,s,"outlineColor",o.outlineColor,r,i,n),ge(Number,s,"outlineWidth",o.outlineWidth,r,i,n),ge(yn,s,"shadows",o.shadows,r,i,n),ge(Lt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Gue(e,t,n,i,o){let r=e.id;if(l(r)||(r=Yn()),g7=r,!l(o._version)&&r!=="document")throw new se("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")YKe(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}g7=void 0}function a$e(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(ze.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=$.secondsDifference(s,r),c=Math.round(a/120);return t=new xm,t.startTime=$.clone(r),t.stopTime=$.clone(s),t.clockRange=Zr.LOOP_STOP,t.multiplier=c,t.currentTime=$.clone(r),t.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new xm,t.startTime=ze.MINIMUM_VALUE.clone(),t.stopTime=ze.MAXIMUM_VALUE.clone(),t.currentTime=ze.MINIMUM_VALUE.clone(),t.clockRange=Zr.LOOP_STOP,t.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=ur(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=$.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=y(Zr[n.range],Zr.LOOP_STOP)),l(n.step)&&(t.clockStep=y(yo[n.step],yo.SYSTEM_CLOCK_MULTIPLIER)),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function Yue(e,t,n,i){n=y(n,y.EMPTY_OBJECT);let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new vt(s)),e._credit=s,typeof t=="string"||t instanceof Ee){t=Ee.createIfNeeded(t),o=t.fetchJson(),r=y(r,t.clone());let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=Ee.createIfNeeded(r),$r.setLoading(e,!0),Promise.resolve(o).then(function(a){return c$e(e,a,r,i)}).catch(function(a){return $r.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function c$e(e,t,n,i){$r.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new Xue,o.removeAll()),fs._processCzml(t,o,n,void 0,e);let r=a$e(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=my(n.getUrlComponent()),r=!0),$r.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function Xue(){this.name=void 0,this.clock=void 0}function fs(e){this._name=e,this._changed=new me,this._error=new me,this._isLoading=!1,this._loading=new me,this._clock=void 0,this._documentPacket=new Xue,this._version=void 0,this._entityCollection=new ha(this),this._entityCluster=new Lf,this._credit=void 0,this._resourceCredits=[]}fs.load=function(e,t){return new fs().load(e,t)};Object.defineProperties(fs.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});fs.updaters=[GKe,WKe,jKe,qKe,XKe,KKe,$Ke,ZKe,PKe,OKe,QKe,JKe,e$e,n$e,i$e,NKe,o$e,RKe,r$e,MKe,s$e,LKe,zKe];fs.registerUpdater=function(e){fs.updaters.includes(e)||fs.updaters.push(e)};fs.unregisterUpdater=function(e){if(fs.updaters.includes(e)){let t=fs.updaters.indexOf(e);fs.updaters.splice(t,1)}};fs.prototype.process=function(e,t){return Yue(this,e,t,!1)};fs.prototype.load=function(e,t){return Yue(this,e,t,!0)};fs.prototype.update=function(e){return!0};fs.processPacketData=ge;fs.processPositionPacketData=que;fs.processMaterialPacketData=gu;fs._processCzml=function(e,t,n,i,o){if(i=y(i,fs.updaters),Array.isArray(e))for(let r=0,s=e.length;r<s;++r)Gue(e[r],t,i,n,o);else Gue(e,t,i,n,o)};var U3=fs;function Kc(){this._dataSources=[],this._dataSourceAdded=new me,this._dataSourceRemoved=new me,this._dataSourceMoved=new me}Object.defineProperties(Kc.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});Kc.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};Kc.prototype.remove=function(e,t){t=y(t,!1);let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};Kc.prototype.removeAll=function(e){e=y(e,!1);let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};Kc.prototype.contains=function(e){return this.indexOf(e)!==-1};Kc.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};Kc.prototype.get=function(e){return this._dataSources[e]};Kc.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function z3(e,t){return e.indexOf(t)}function Kue(e,t,n){let i=e._dataSources,o=i.length-1;if(t=P.clamp(t,0,o),n=P.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}Kc.prototype.raise=function(e){let t=z3(this._dataSources,e);Kue(this,t,t+1)};Kc.prototype.lower=function(e){let t=z3(this._dataSources,e);Kue(this,t,t-1)};Kc.prototype.raiseToTop=function(e){let t=z3(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};Kc.prototype.lowerToBottom=function(e){let t=z3(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};Kc.prototype.isDestroyed=function(){return!1};Kc.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var H3=Kc;function pa(e){e=y(e,y.EMPTY_OBJECT),this._primitives=[],this._guid=Yn(),this._primitiveAdded=new me,this._primitiveRemoved=new me,this._zIndex=void 0,this.show=y(e.show,!0),this.destroyPrimitives=y(e.destroyPrimitives,!0)}Object.defineProperties(pa.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});pa.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._primitiveAdded.raiseEvent(e),e};pa.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this.destroyPrimitives&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};pa.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};pa.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n)delete e[n]._external._composites[this._guid],this.destroyPrimitives&&e[n].destroy(),this._primitiveRemoved.raiseEvent(e[n]);this._primitives=[]};pa.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function G3(e,t){return e._primitives.indexOf(t)}pa.prototype.raise=function(e){if(l(e)){let t=G3(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};pa.prototype.raiseToTop=function(e){if(l(e)){let t=G3(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};pa.prototype.lower=function(e){if(l(e)){let t=G3(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};pa.prototype.lowerToBottom=function(e){if(l(e)){let t=G3(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};pa.prototype.get=function(e){return this._primitives[e]};pa.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};pa.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};pa.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};pa.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};pa.prototype.isDestroyed=function(){return!1};pa.prototype.destroy=function(){return this.removeAll(),ue(this)};var Ll=pa;function Tm(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(Tm.prototype,{length:{get:function(){return this._length}}});Tm.prototype.add=function(e,t){t=y(t,0);let n=this._collections[t];if(!l(n)){n=new Ll({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};Tm.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};Tm.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};Tm.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};Tm.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};Tm.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};Tm.prototype.isDestroyed=function(){return!1};Tm.prototype.destroy=function(){return this.removeAll(),ue(this)};var W3=Tm;function YA(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new wt}YA.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};YA.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};YA.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};YA.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};YA.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):ct.FAILED};var XA=YA;var T7={},j3=new d,$ue=new d,Zue=new Le,Que=new Z;function KA(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),j3),d.multiplyByScalar(n,Math.sin(f),$ue),d.add(j3,$ue,j3);let h=Math.cos(e);h=h*h;let p=Math.sin(e);p=p*p;let m=r/Math.sqrt(s*h+o*p)/a;return Le.fromAxisAngle(j3,m,Zue),Z.fromQuaternion(Zue,Que),Z.multiplyByVector(Que,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var Jue=new d,efe=new d,b7=new d,l$e=new d;T7.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,p=f+2,g=d.fromArray(e,f,Jue);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,efe),x=i.geodeticSurfaceNormal(g,l$e),b=d.multiplyByScalar(x,o,b7);d.add(g,b,g),n&&(d.multiplyByScalar(x,r,b),d.add(m,b,m),a[f+u]=m.x,a[h+u]=m.y,a[p+u]=m.z),a[f]=g.x,a[h]=g.y,a[p]=g.z}return a};var u$e=new d,f$e=new d,d$e=new d;T7.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),p=d.normalize(s,u$e),g=d.cross(d.UNIT_Z,s,f$e);g=d.normalize(g,g);let m=d.cross(p,g,d$e),x=1+Math.ceil(P.PI_OVER_TWO/a),b=P.PI_OVER_TWO/(x-1),T=P.PI_OVER_TWO-x*b;T<0&&(x-=Math.ceil(Math.abs(T)/b));let C=2*(x*(x+2)),A=t?new Array(C*3):void 0,E=0,v=Jue,D=efe,R=x*4*3,O=R-1,M=0,N=n?new Array(R):void 0,_,S,w,I,L;for(T=P.PI_OVER_TWO,v=KA(T,r,m,g,c,f,u,h,p,v),t&&(A[E++]=v.x,A[E++]=v.y,A[E++]=v.z),n&&(N[O--]=v.z,N[O--]=v.y,N[O--]=v.x),T=P.PI_OVER_TWO-b,_=1;_<x+1;++_){if(v=KA(T,r,m,g,c,f,u,h,p,v),D=KA(Math.PI-T,r,m,g,c,f,u,h,p,D),t){for(A[E++]=v.x,A[E++]=v.y,A[E++]=v.z,w=2*_+2,S=1;S<w-1;++S)I=S/(w-1),L=d.lerp(v,D,I,b7),A[E++]=L.x,A[E++]=L.y,A[E++]=L.z;A[E++]=D.x,A[E++]=D.y,A[E++]=D.z}n&&(N[O--]=v.z,N[O--]=v.y,N[O--]=v.x,N[M++]=D.x,N[M++]=D.y,N[M++]=D.z),T=P.PI_OVER_TWO-(_+1)*b}for(_=x;_>1;--_){if(T=P.PI_OVER_TWO-(_-1)*b,v=KA(-T,r,m,g,c,f,u,h,p,v),D=KA(T+Math.PI,r,m,g,c,f,u,h,p,D),t){for(A[E++]=v.x,A[E++]=v.y,A[E++]=v.z,w=2*(_-1)+2,S=1;S<w-1;++S)I=S/(w-1),L=d.lerp(v,D,I,b7),A[E++]=L.x,A[E++]=L.y,A[E++]=L.z;A[E++]=D.x,A[E++]=D.y,A[E++]=D.z}n&&(N[O--]=v.z,N[O--]=v.y,N[O--]=v.x,N[M++]=D.x,N[M++]=D.y,N[M++]=D.z)}T=P.PI_OVER_TWO,v=KA(-T,r,m,g,c,f,u,h,p,v);let B={};return t&&(A[E++]=v.x,A[E++]=v.y,A[E++]=v.z,B.positions=A,B.numPts=x),n&&(N[O--]=v.z,N[O--]=v.y,N[O--]=v.x,B.outerPositions=N),B};var yu=T7;var $A=new d,C7=new d,A7=new d,tfe=new d,Ds=new U,nfe=new Z,h$e=new Z,E7=new Le,ife=new d,ofe=new d,rfe=new d,X3=new fe,sfe=new d,afe=new U,cfe=new U;function lfe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,p=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,x=f?new Float32Array(u*3):void 0,b=0,T=ife,C=ofe,A=rfe,E=new Ri(a),v=E.project(a.cartesianToCartographic(o,X3),sfe),D=a.scaleToGeodeticSurface(o,$A);a.geodeticSurfaceNormal(D,D);let R=nfe,O=h$e;if(c!==0){let L=Le.fromAxisAngle(D,c,E7);R=Z.fromQuaternion(L,R),L=Le.fromAxisAngle(D,-c,E7),O=Z.fromQuaternion(L,O)}else R=Z.clone(Z.IDENTITY,R),O=Z.clone(Z.IDENTITY,O);let M=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,afe),N=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,cfe),_=e.length,S=n?_:0,w=S/3*2;for(let L=0;L<_;L+=3){let B=L+1,H=L+2,V=d.fromArray(e,L,$A);if(i.st){let G=Z.multiplyByVector(R,V,C7),k=E.project(a.cartesianToCartographic(G,X3),A7);d.subtract(k,v,k),Ds.x=(k.x+r)/(2*r),Ds.y=(k.y+s)/(2*s),M.x=Math.min(Ds.x,M.x),M.y=Math.min(Ds.y,M.y),N.x=Math.max(Ds.x,N.x),N.y=Math.max(Ds.y,N.y),n&&(h[b+w]=Ds.x,h[b+1+w]=Ds.y),h[b++]=Ds.x,h[b++]=Ds.y}(i.normal||i.tangent||i.bitangent||f)&&(T=a.geodeticSurfaceNormal(V,T),f&&(x[L+S]=-T.x,x[B+S]=-T.y,x[H+S]=-T.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(C=d.normalize(d.cross(d.UNIT_Z,T,C),C),Z.multiplyByVector(O,C,C)),i.normal&&(p[L]=T.x,p[B]=T.y,p[H]=T.z,n&&(p[L+S]=-T.x,p[B+S]=-T.y,p[H+S]=-T.z)),i.tangent&&(g[L]=C.x,g[B]=C.y,g[H]=C.z,n&&(g[L+S]=-C.x,g[B+S]=-C.y,g[H+S]=-C.z)),i.bitangent&&(A=d.normalize(d.cross(T,C,A),A),m[L]=A.x,m[B]=A.y,m[H]=A.z,n&&(m[L+S]=A.x,m[B+S]=A.y,m[H+S]=A.z))))}if(i.st){_=h.length;for(let L=0;L<_;L+=2)h[L]=(h[L]-M.x)/(N.x-M.x),h[L+1]=(h[L+1]-M.y)/(N.y-M.y)}let I=new mn;if(i.position){let L=yu.raisePositionsToHeight(e,t,n);I.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:L})}if(i.st&&(I.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(I.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:p})),i.tangent&&(I.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(I.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:m})),f&&(I.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:x})),n&&l(t.offsetAttribute)){let L=new Uint8Array(u);if(t.offsetAttribute===rn.TOP)L=L.fill(1,0,u/2);else{let B=t.offsetAttribute===rn.NONE?0:1;L=L.fill(B)}I.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:L})}return I}function ufe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var ib=new d;function m$e(e){let t=e.center;ib=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,ib),e.height,ib),ib=d.add(t,ib,ib);let n=new ce(ib,e.semiMajorAxis),i=yu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=lfe(o,e,!1),a=ufe(r);return a=Be.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function p$e(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),p=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,x=n.bitangent?new Float32Array(f*3):void 0,b=t.shadowVolume,T=b?new Float32Array(f*3):void 0,C=0,A=ife,E=ofe,v=rfe,D=new Ri(s),R=D.project(s.cartesianToCartographic(i,X3),sfe),O=s.scaleToGeodeticSurface(i,$A);s.geodeticSurfaceNormal(O,O);let M=Le.fromAxisAngle(O,u,E7),N=Z.fromQuaternion(M,nfe),_=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,afe),S=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,cfe),w=e.length,I=w/3*2;for(let B=0;B<w;B+=3){let H=B+1,V=B+2,G=d.fromArray(e,B,$A),k;if(n.st){let q=Z.multiplyByVector(N,G,C7),J=D.project(s.cartesianToCartographic(q,X3),A7);d.subtract(J,R,J),Ds.x=(J.x+o)/(2*o),Ds.y=(J.y+r)/(2*r),_.x=Math.min(Ds.x,_.x),_.y=Math.min(Ds.y,_.y),S.x=Math.max(Ds.x,S.x),S.y=Math.max(Ds.y,S.y),p[C+I]=Ds.x,p[C+1+I]=Ds.y,p[C++]=Ds.x,p[C++]=Ds.y}G=s.scaleToGeodeticSurface(G,G),k=d.clone(G,C7),A=s.geodeticSurfaceNormal(G,A),b&&(T[B+w]=-A.x,T[H+w]=-A.y,T[V+w]=-A.z);let W=d.multiplyByScalar(A,a,tfe);if(G=d.add(G,W,G),W=d.multiplyByScalar(A,c,W),k=d.add(k,W,k),n.position&&(h[B+w]=k.x,h[H+w]=k.y,h[V+w]=k.z,h[B]=G.x,h[H]=G.y,h[V]=G.z),n.normal||n.tangent||n.bitangent){v=d.clone(A,v);let q=d.fromArray(e,(B+3)%w,tfe);d.subtract(q,G,q);let J=d.subtract(k,G,A7);A=d.normalize(d.cross(J,q,A),A),n.normal&&(g[B]=A.x,g[H]=A.y,g[V]=A.z,g[B+w]=A.x,g[H+w]=A.y,g[V+w]=A.z),n.tangent&&(E=d.normalize(d.cross(v,A,E),E),m[B]=E.x,m[H]=E.y,m[V]=E.z,m[B+w]=E.x,m[B+1+w]=E.y,m[B+2+w]=E.z),n.bitangent&&(x[B]=v.x,x[H]=v.y,x[V]=v.z,x[B+w]=v.x,x[H+w]=v.y,x[V+w]=v.z)}}if(n.st){w=p.length;for(let B=0;B<w;B+=2)p[B]=(p[B]-_.x)/(S.x-_.x),p[B+1]=(p[B+1]-_.y)/(S.y-_.y)}let L=new mn;if(n.position&&(L.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(L.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:p})),n.normal&&(L.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(L.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(L.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:x})),b&&(L.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:T})),l(t.offsetAttribute)){let B=new Uint8Array(f);if(t.offsetAttribute===rn.TOP)B=B.fill(1,0,f/2);else{let H=t.offsetAttribute===rn.NONE?0:1;B=B.fill(H)}L.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:B})}return L}function _$e(e){let t=e.length/3,n=Be.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var q3=new ce,Y3=new ce;function g$e(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,$A),e.height,$A);q3.center=d.add(t,o,q3.center),q3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),Y3.center=d.add(t,o,Y3.center),Y3.radius=i;let r=yu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=ce.union(q3,Y3),f=lfe(s,e,!0),h=ufe(a),p=h.length;h.length=p*2;let g=s.length/3;for(let E=0;E<p;E+=3)h[E+p]=h[E+2]+g,h[E+1+p]=h[E+1]+g,h[E+2+p]=h[E]+g;let m=Be.createTypedArray(g*2/3,h),x=new ut({attributes:f,indices:m,primitiveType:Ne.TRIANGLES}),b=p$e(c,e);h=_$e(c);let T=Be.createTypedArray(c.length*2/3,h),C=new ut({attributes:b,indices:T,primitiveType:Ne.TRIANGLES}),A=kn.combineInstances([new Dt({geometry:x}),new Dt({geometry:C})]);return{boundingSphere:u,attributes:A[0].attributes,indices:A[0].indices}}function ffe(e,t,n,i,o,r,s){let c=yu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let p=0;p<u;++p)f[p]=d.fromArray(c,p*3);let h=ae.fromCartesianArray(f,r,s);return h.width>P.PI&&(h.north=h.north>0?P.PI_OVER_TWO-P.EPSILON7:h.north,h.south=h.south<0?P.EPSILON7-P.PI_OVER_TWO:h.south,h.east=P.PI,h.west=-P.PI),h}function Am(e){e=y(e,y.EMPTY_OBJECT);let t=e.center,n=y(e.ellipsoid,ee.default),i=e.semiMajorAxis,o=e.semiMinorAxis,r=y(e.granularity,P.RADIANS_PER_DEGREE),s=y(e.vertexFormat,Ie.DEFAULT),a=y(e.height,0),c=y(e.extrudedHeight,a);this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ee.clone(n),this._rotation=y(e.rotation,0),this._stRotation=y(e.stRotation,0),this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Ie.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=y(e.shadowVolume,!1),this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}Am.packedLength=d.packedLength+ee.packedLength+Ie.packedLength+9;Am.pack=function(e,t,n){return n=y(n,0),d.pack(e._center,t,n),n+=d.packedLength,ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=y(e._offsetAttribute,-1),t};var dfe=new d,hfe=new ee,mfe=new Ie,Cm={center:dfe,ellipsoid:hfe,vertexFormat:mfe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Am.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,dfe);t+=d.packedLength;let o=ee.unpack(e,t,hfe);t+=ee.packedLength;let r=Ie.unpack(e,t,mfe);t+=Ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],p=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=ee.clone(o,n._ellipsoid),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=p,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(Cm.height=f,Cm.extrudedHeight=p,Cm.granularity=h,Cm.stRotation=u,Cm.rotation=c,Cm.semiMajorAxis=s,Cm.semiMinorAxis=a,Cm.shadowVolume=g,Cm.offsetAttribute=m===-1?void 0:m,new Am(Cm))};Am.computeRectangle=function(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.center,i=y(e.ellipsoid,ee.default),o=e.semiMajorAxis,r=e.semiMinorAxis,s=y(e.granularity,P.RADIANS_PER_DEGREE),a=y(e.rotation,0);return ffe(n,o,r,a,s,i,t)};Am.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!P.equalsEpsilon(t,n,0,P.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=g$e(o);else if(r=m$e(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===rn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ut({attributes:r.attributes,indices:r.indices,primitiveType:Ne.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};Am.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Am({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Ie.POSITION_ONLY,shadowVolume:!0})};function y$e(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=yu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ut._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(Am.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=ffe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=y$e(this)),this._textureCoordinateRotationPoints}}});var Nl=Am;var pfe=new d,ob=new d;function x$e(e){let t=e.center;ob=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,ob),e.height,ob),ob=d.add(t,ob,ob);let n=new ce(ob,e.semiMajorAxis),i=yu.computeEllipsePositions(e,!1,!0).outerPositions,o=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:yu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Be.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var K3=new ce,$3=new ce;function b$e(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,pfe),e.height,pfe);K3.center=d.add(t,o,K3.center),K3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),$3.center=d.add(t,o,$3.center),$3.radius=i;let r=yu.computeEllipsePositions(e,!1,!0).outerPositions,s=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:yu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=ce.union(K3,$3),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===rn.TOP)m=m.fill(1,0,c/2);else{let x=e.offsetAttribute===rn.NONE?0:1;m=m.fill(x)}s.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=y(e.numberOfVerticalLines,16);u=P.clamp(u,0,c/2);let f=Be.createTypedArray(c,c*2+u*2);c/=2;let h=0,p;for(p=0;p<c;++p)f[h++]=p,f[h++]=(p+1)%c,f[h++]=p+c,f[h++]=(p+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let x=Math.min(g*u,c);for(p=0;p<x;p+=g)f[h++]=p,f[h++]=p+c}return{boundingSphere:a,attributes:s,indices:f}}function ZA(e){e=y(e,y.EMPTY_OBJECT);let t=e.center,n=y(e.ellipsoid,ee.default),i=e.semiMajorAxis,o=e.semiMinorAxis,r=y(e.granularity,P.RADIANS_PER_DEGREE),s=y(e.height,0),a=y(e.extrudedHeight,s);this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ee.clone(n),this._rotation=y(e.rotation,0),this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(y(e.numberOfVerticalLines,16),0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}ZA.packedLength=d.packedLength+ee.packedLength+8;ZA.pack=function(e,t,n){return n=y(n,0),d.pack(e._center,t,n),n+=d.packedLength,ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=y(e._offsetAttribute,-1),t};var _fe=new d,gfe=new ee,f_={center:_fe,ellipsoid:gfe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};ZA.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,_fe);t+=d.packedLength;let o=ee.unpack(e,t,gfe);t+=ee.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],p=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=ee.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=p===-1?void 0:p,n):(f_.height=c,f_.extrudedHeight=f,f_.granularity=u,f_.rotation=a,f_.semiMajorAxis=r,f_.semiMinorAxis=s,f_.numberOfVerticalLines=h,f_.offsetAttribute=p===-1?void 0:p,new ZA(f_))};ZA.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!P.equalsEpsilon(t,n,0,P.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=b$e(o);else if(r=x$e(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===rn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ut({attributes:r.attributes,indices:r.indices,primitiveType:Ne.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var Vf=ZA;var yfe=new z,xfe=d.ZERO,bfe=new d,Tfe=new ae;function T$e(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function Wd(e,t){jn.call(this,{entity:e,scene:t,geometryOptions:new T$e(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(Wd.prototype=Object.create(jn.prototype),Wd.prototype.constructor=Wd);Wd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Un.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof zt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,yfe)),l(o)||(o=z.WHITE),i.color=Wt.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,xfe,bfe))),new Dt({id:t,geometry:new Nl(this._options),attributes:i})};Wd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,yfe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,xfe,bfe))),new Dt({id:t,geometry:new Vf(this._options),attributes:r})};Wd.prototype._computeCenter=function(e,t){return Y.getValueOrUndefined(this._entity.position,e,t)};Wd.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||si.prototype._isHidden.call(this,e,t)};Wd.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!Y.isConstant(t.rotation)||!Y.isConstant(t.height)||!Y.isConstant(t.extrudedHeight)||!Y.isConstant(t.granularity)||!Y.isConstant(t.stRotation)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.numberOfVerticalLines)||!Y.isConstant(t.zIndex)||this._onTerrain&&!Y.isConstant(this._materialProperty)&&!(this._materialProperty instanceof zt)};Wd.prototype._setStaticOptions=function(e,t){let n=Y.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),o=Y.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=Y.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,qe.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof zt?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(ze.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(ze.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(ze.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=Y.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),s.granularity=Y.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.stRotation=Y.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),s.numberOfVerticalLines=Y.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),s.offsetAttribute=jn.computeGeometryOffsetAttribute(n,i,o,r),s.height=jn.getGeometryHeight(n,i),o=jn.getGeometryExtrudedHeight(o,r),o===jn.CLAMP_TO_GROUND&&(o=di.getMinimumMaximumHeights(Nl.computeRectangle(s,Tfe)).minimumTerrainHeight),s.extrudedHeight=o};Wd.DynamicGeometryUpdater=QA;function QA(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(QA.prototype=Object.create(ri.prototype),QA.prototype.constructor=QA);QA.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||ri.prototype._isHidden.call(this,e,t,n)};QA.prototype._setOptions=function(e,t,n){let i=this._options,o=Y.getValueOrUndefined(t.height,n),r=Y.getValueOrDefault(t.heightReference,n,qe.NONE),s=Y.getValueOrUndefined(t.extrudedHeight,n),a=Y.getValueOrDefault(t.extrudedHeightReference,n,qe.NONE);l(s)&&!l(o)&&(o=0),i.center=Y.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=Y.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=Y.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=Y.getValueOrUndefined(t.rotation,n),i.granularity=Y.getValueOrUndefined(t.granularity,n),i.stRotation=Y.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=Y.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=jn.computeGeometryOffsetAttribute(o,r,s,a),i.height=jn.getGeometryHeight(o,r),s=jn.getGeometryExtrudedHeight(s,a),s===jn.CLAMP_TO_GROUND&&(s=di.getMinimumMaximumHeights(Nl.computeRectangle(i,Tfe)).minimumTerrainHeight),i.extrudedHeight=s};var Z3=Wd;var C$e=new d,A$e=new d,E$e=new d,S$e=new d,v$e=new d,w$e=new d(1,1,1),Cfe=Math.cos,Afe=Math.sin;function d_(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.radii,w$e),n=y(e.innerRadii,t),i=y(e.minimumClock,0),o=y(e.maximumClock,P.TWO_PI),r=y(e.minimumCone,0),s=y(e.maximumCone,P.PI),a=Math.round(y(e.stackPartitions,64)),c=Math.round(y(e.slicePartitions,64)),u=y(e.vertexFormat,Ie.DEFAULT);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Ie.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}d_.packedLength=2*d.packedLength+Ie.packedLength+7;d_.pack=function(e,t,n){return n=y(n,0),d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=y(e._offsetAttribute,-1),t};var Efe=new d,Sfe=new d,vfe=new Ie,Ay={radii:Efe,innerRadii:Sfe,vertexFormat:vfe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};d_.unpack=function(e,t,n){t=y(t,0);let i=d.unpack(e,t,Efe);t+=d.packedLength;let o=d.unpack(e,t,Sfe);t+=d.packedLength;let r=Ie.unpack(e,t,vfe);t+=Ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=p===-1?void 0:p,n):(Ay.minimumClock=s,Ay.maximumClock=a,Ay.minimumCone=c,Ay.maximumCone=u,Ay.stackPartitions=f,Ay.slicePartitions=h,Ay.offsetAttribute=p===-1?void 0:p,new d_(Ay))};d_.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/P.TWO_PI),u=Math.round(u*Math.abs(s-r)/P.PI),c<2&&(c=2),u<2&&(u=2);let f,h,p=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let x=g.length,b=m.length,T=0,C=1,A=n.x!==t.x||n.y!==t.y||n.z!==t.z,E=!1,v=!1,D=!1;A&&(C=2,r>0&&(E=!0,T+=c-1),s<Math.PI&&(v=!0,T+=c-1),(o-i)%P.TWO_PI?(D=!0,T+=(u-1)*2+1):T+=1);let R=b*x*C,O=new Float64Array(R*3),M=new Array(R).fill(!1),N=new Array(R).fill(!1),_=c*u*C,S=6*(_+T+1-(c+u)*C),w=Be.createTypedArray(_,S),I=a.normal?new Float32Array(R*3):void 0,L=a.tangent?new Float32Array(R*3):void 0,B=a.bitangent?new Float32Array(R*3):void 0,H=a.st?new Float32Array(R*2):void 0,V=new Array(x),G=new Array(x);for(f=0;f<x;f++)V[f]=Afe(g[f]),G[f]=Cfe(g[f]);let k=new Array(b),W=new Array(b);for(h=0;h<b;h++)W[h]=Cfe(m[h]),k[h]=Afe(m[h]);for(f=0;f<x;f++)for(h=0;h<b;h++)O[p++]=t.x*V[f]*W[h],O[p++]=t.y*V[f]*k[h],O[p++]=t.z*G[f];let q=R/2;if(A)for(f=0;f<x;f++)for(h=0;h<b;h++)O[p++]=n.x*V[f]*W[h],O[p++]=n.y*V[f]*k[h],O[p++]=n.z*G[f],M[q]=!0,f>0&&f!==x-1&&h!==0&&h!==b-1&&(N[q]=!0),q++;p=0;let J,j;for(f=1;f<x-2;f++)for(J=f*b,j=(f+1)*b,h=1;h<b-2;h++)w[p++]=j+h,w[p++]=j+h+1,w[p++]=J+h+1,w[p++]=j+h,w[p++]=J+h+1,w[p++]=J+h;if(A){let rt=x*b;for(f=1;f<x-2;f++)for(J=rt+f*b,j=rt+(f+1)*b,h=1;h<b-2;h++)w[p++]=j+h,w[p++]=J+h,w[p++]=J+h+1,w[p++]=j+h,w[p++]=J+h+1,w[p++]=j+h+1}let K,Q;if(A){if(E)for(Q=x*b,f=1;f<b-2;f++)w[p++]=f,w[p++]=f+1,w[p++]=Q+f+1,w[p++]=f,w[p++]=Q+f+1,w[p++]=Q+f;if(v)for(K=x*b-b,Q=x*b*C-b,f=1;f<b-2;f++)w[p++]=K+f+1,w[p++]=K+f,w[p++]=Q+f,w[p++]=K+f+1,w[p++]=Q+f,w[p++]=Q+f+1}if(D){for(f=1;f<x-2;f++)Q=b*x+b*f,K=b*f,w[p++]=Q,w[p++]=K+b,w[p++]=K,w[p++]=Q,w[p++]=Q+b,w[p++]=K+b;for(f=1;f<x-2;f++)Q=b*x+b*(f+1)-1,K=b*(f+1)-1,w[p++]=K+b,w[p++]=Q,w[p++]=K,w[p++]=K+b,w[p++]=Q+b,w[p++]=Q}let he=new mn;a.position&&(he.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:O}));let ye=0,re=0,_e=0,be=0,we=R/2,De,Me=ee.fromCartesian3(t),Re=ee.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<R;f++){De=M[f]?Re:Me;let rt=d.fromArray(O,f*3,C$e),Ye=De.geodeticSurfaceNormal(rt,A$e);if(N[f]&&d.negate(Ye,Ye),a.st){let dt=U.negate(Ye,v$e);H[ye++]=Math.atan2(dt.y,dt.x)/P.TWO_PI+.5,H[ye++]=Math.asin(Ye.z)/Math.PI+.5}if(a.normal&&(I[re++]=Ye.x,I[re++]=Ye.y,I[re++]=Ye.z),a.tangent||a.bitangent){let dt=E$e,Xe=0,_t;if(M[f]&&(Xe=we),!E&&f>=Xe&&f<Xe+b*2?_t=d.UNIT_X:_t=d.UNIT_Z,d.cross(_t,Ye,dt),d.normalize(dt,dt),a.tangent&&(L[_e++]=dt.x,L[_e++]=dt.y,L[_e++]=dt.z),a.bitangent){let ft=d.cross(Ye,dt,S$e);d.normalize(ft,ft),B[be++]=ft.x,B[be++]=ft.y,B[be++]=ft.z}}}a.st&&(he.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:H})),a.normal&&(he.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:I})),a.tangent&&(he.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:L})),a.bitangent&&(he.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:B}))}if(l(e._offsetAttribute)){let rt=O.length,Ye=e._offsetAttribute===rn.NONE?0:1,dt=new Uint8Array(rt/3).fill(Ye);he.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:dt})}return new ut({attributes:he,indices:w,primitiveType:Ne.TRIANGLES,boundingSphere:ce.fromEllipsoid(Me),offsetAttribute:e._offsetAttribute})};var S7;d_.getUnitEllipsoid=function(){return l(S7)||(S7=d_.createGeometry(new d_({radii:new d(1,1,1),vertexFormat:Ie.POSITION_ONLY}))),S7};var _a=d_;var D$e=new zt(z.WHITE),v7=d.ZERO,w7=new d,I$e=new d,P$e=new d,D7=new z,O$e=new d(1,1,1);function R$e(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function xu(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new R$e(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(xu.prototype=Object.create(si.prototype),xu.prototype.constructor=xu);Object.defineProperties(xu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});xu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new gn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Un.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof zt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,D7)),l(f)||(f=z.WHITE),r=Wt.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,v7,w7))),new Dt({id:i,geometry:new _a(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};xu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,D7),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new gn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(r),distanceDisplayCondition:Un.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,v7,w7))),new Dt({id:i,geometry:new Pf(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};xu.prototype._computeCenter=function(e,t){return Y.getValueOrUndefined(this._entity.position,e,t)};xu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||si.prototype._isHidden.call(this,e,t)};xu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!Y.isConstant(e.orientation)||!t.radii.isConstant||!Y.isConstant(t.innerRadii)||!Y.isConstant(t.stackPartitions)||!Y.isConstant(t.slicePartitions)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.minimumClock)||!Y.isConstant(t.maximumClock)||!Y.isConstant(t.minimumCone)||!Y.isConstant(t.maximumCone)||!Y.isConstant(t.subdivisions)};xu.prototype._setStaticOptions=function(e,t){let n=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof zt?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(ze.MINIMUM_VALUE,i.radii),i.innerRadii=Y.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=Y.getValueOrUndefined(t.minimumClock,ze.MINIMUM_VALUE),i.maximumClock=Y.getValueOrUndefined(t.maximumClock,ze.MINIMUM_VALUE),i.minimumCone=Y.getValueOrUndefined(t.minimumCone,ze.MINIMUM_VALUE),i.maximumCone=Y.getValueOrUndefined(t.maximumCone,ze.MINIMUM_VALUE),i.stackPartitions=Y.getValueOrUndefined(t.stackPartitions,ze.MINIMUM_VALUE),i.slicePartitions=Y.getValueOrUndefined(t.slicePartitions,ze.MINIMUM_VALUE),i.subdivisions=Y.getValueOrUndefined(t.subdivisions,ze.MINIMUM_VALUE),i.offsetAttribute=n!==qe.NONE?rn.ALL:void 0};xu.prototype._onEntityPropertyChanged=ag;xu.DynamicGeometryUpdater=$D;function $D(e,t,n){ri.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new F,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&($D.prototype=Object.create(ri.prototype),$D.prototype.constructor=$D);$D.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!Y.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=Y.getValueOrUndefined(n.radii,e,I$e),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=Y.getValueOrDefault(n.fill,e,!0),s=Y.getValueOrDefault(n.outline,e,!1),a=Y.getValueOrClonedDefault(n.outlineColor,e,z.BLACK,D7),c=sr.getValue(e,y(n.material,D$e),this._material),u=Y.getValueOrUndefined(n.innerRadii,e,P$e),f=Y.getValueOrUndefined(n.minimumClock,e),h=Y.getValueOrUndefined(n.maximumClock,e),p=Y.getValueOrUndefined(n.minimumCone,e),g=Y.getValueOrUndefined(n.maximumCone,e),m=Y.getValueOrUndefined(n.stackPartitions,e),x=Y.getValueOrUndefined(n.slicePartitions,e),b=Y.getValueOrUndefined(n.subdivisions,e),T=Y.getValueOrDefault(n.outlineWidth,e,1),C=Y.getValueOrDefault(n.heightReference,e,qe.NONE),A=C!==qe.NONE?rn.ALL:void 0,E=this._scene.mode,v=E===ne.SCENE3D&&C===qe.NONE,D=this._options,R=this._geometryUpdater.shadowsProperty.getValue(e),M=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),N=Y.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,v7,w7);if(!v||this._lastSceneMode!==E||!l(this._primitive)||D.stackPartitions!==m||D.slicePartitions!==x||l(u)&&!d.equals(D.innerRadii!==u)||D.minimumClock!==f||D.maximumClock!==h||D.minimumCone!==p||D.maximumCone!==g||D.subdivisions!==b||this._lastOutlineWidth!==T||D.offsetAttribute!==A){let S=this._primitives;S.removeAndDestroy(this._primitive),S.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=E,this._lastOutlineWidth=T,D.stackPartitions=m,D.slicePartitions=x,D.subdivisions=b,D.offsetAttribute=A,D.radii=d.clone(v?O$e:i,D.radii),l(u)?v?D.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,D.innerRadii):D.innerRadii=d.clone(u,D.innerRadii):D.innerRadii=void 0,D.minimumClock=f,D.maximumClock=h,D.minimumCone=p,D.maximumCone=g;let w=new uo({material:c,translucent:c.isTranslucent(),closed:!0});D.vertexFormat=w.vertexFormat;let I=this._geometryUpdater.createFillGeometryInstance(e,v,this._modelMatrix);this._primitive=S.add(new Pn({geometryInstances:I,appearance:w,asynchronous:!1,shadows:R}));let L=this._geometryUpdater.createOutlineGeometryInstance(e,v,this._modelMatrix);this._outlinePrimitive=S.add(new Pn({geometryInstances:L,appearance:new ln({flat:!0,translucent:L.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(T)}}),asynchronous:!1,shadows:R})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=z.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=M,this._lastOffset=d.clone(N,this._lastOffset)}else if(this._primitive.ready){let S=this._primitive,w=this._outlinePrimitive;S.show=!0,w.show=!0,S.appearance.material=c;let I=this._attributes;l(I)||(I=S.getGeometryInstanceAttributes(t),this._attributes=I),r!==this._lastShow&&(I.show=gn.toValue(r,I.show),this._lastShow=r);let L=this._outlineAttributes;l(L)||(L=w.getGeometryInstanceAttributes(t),this._outlineAttributes=L),s!==this._lastOutlineShow&&(L.show=gn.toValue(s,L.show),this._lastOutlineShow=s),z.equals(a,this._lastOutlineColor)||(L.color=Wt.toValue(a,L.color),z.clone(a,this._lastOutlineColor)),Lt.equals(M,this._lastDistanceDisplayCondition)||(I.distanceDisplayCondition=Un.toValue(M,I.distanceDisplayCondition),L.distanceDisplayCondition=Un.toValue(M,L.distanceDisplayCondition),Lt.clone(M,this._lastDistanceDisplayCondition)),d.equals(N,this._lastOffset)||(I.offset=to.toValue(N,I.offset),L.offset=to.toValue(N,I.offset),d.clone(N,this._lastOffset))}v&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=F.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var Q3=xu;function JA(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.vertexFormat,Ie.DEFAULT);this._vertexFormat=t,this._workerName="createPlaneGeometry"}JA.packedLength=Ie.packedLength;JA.pack=function(e,t,n){return n=y(n,0),Ie.pack(e._vertexFormat,t,n),t};var wfe=new Ie,M$e={vertexFormat:wfe};JA.unpack=function(e,t,n){t=y(t,0);let i=Ie.unpack(e,t,wfe);return l(n)?(n._vertexFormat=Ie.clone(i,n._vertexFormat),n):new JA(M$e)};var J3=new d(-.5,-.5,0),ek=new d(.5,.5,0);JA.createGeometry=function(e){let t=e._vertexFormat,n=new mn,i,o;if(t.position){if(o=new Float64Array(4*3),o[0]=J3.x,o[1]=J3.y,o[2]=0,o[3]=ek.x,o[4]=J3.y,o[5]=0,o[6]=ek.x,o[7]=ek.y,o[8]=0,o[9]=J3.x,o[10]=ek.y,o[11]=0,n.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(2*3),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ut({attributes:n,indices:i,primitiveType:Ne.TRIANGLES,boundingSphere:new ce(d.ZERO,Math.sqrt(2))})};var tk=JA;function eE(){this._workerName="createPlaneOutlineGeometry"}eE.packedLength=0;eE.pack=function(e,t){return t};eE.unpack=function(e,t,n){return l(n)?n:new eE};var Ey=new d(-.5,-.5,0),nk=new d(.5,.5,0);eE.createGeometry=function(){let e=new mn,t=new Uint16Array(4*2),n=new Float64Array(4*3);return n[0]=Ey.x,n[1]=Ey.y,n[2]=Ey.z,n[3]=nk.x,n[4]=Ey.y,n[5]=Ey.z,n[6]=nk.x,n[7]=nk.y,n[8]=Ey.z,n[9]=Ey.x,n[10]=nk.y,n[11]=Ey.z,e.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ut({attributes:e,indices:t,primitiveType:Ne.LINES,boundingSphere:new ce(d.ZERO,Math.sqrt(2))})};var ik=eE;var L$e=new d,Dfe=new z;function N$e(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function Uf(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new N$e(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(Uf.prototype=Object.create(si.prototype),Uf.prototype.constructor=Uf);Uf.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Un.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof zt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,Dfe)),l(g)||(g=z.WHITE),o=Wt.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=Y.getValueOrDefault(c.plane,e,u.plane),p=Y.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=p,f=I7(h,p,f,f),new Dt({id:t,geometry:new tk(this._options),modelMatrix:f,attributes:i})};Uf.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,Dfe),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=Y.getValueOrDefault(r.plane,e,s.plane),u=Y.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=I7(c,u,a,a),new Dt({id:t,geometry:new ik,modelMatrix:a,attributes:{show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o)}})};Uf.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||si.prototype._isHidden.call(this,e,t)};Uf.prototype._getIsClosed=function(e){return!1};Uf.prototype._isDynamic=function(e,t){return!e.position.isConstant||!Y.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!Y.isConstant(t.outlineWidth)};Uf.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof zt,i=this._options;i.vertexFormat=n?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(ze.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions)};Uf.DynamicGeometryUpdater=tE;function tE(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(tE.prototype=Object.create(ri.prototype),tE.prototype.constructor=tE);tE.prototype._isHidden=function(e,t,n){let i=this._options,o=Y.getValueOrUndefined(e.position,n,L$e);return!l(o)||!l(i.plane)||!l(i.dimensions)||ri.prototype._isHidden.call(this,e,t,n)};tE.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=Y.getValueOrDefault(t.plane,n,i.plane),i.dimensions=Y.getValueOrUndefined(t.dimensions,n,i.dimensions)};var F$e=new d,B$e=new d,k$e=new d,V$e=new d,U$e=new Z,z$e=new Z,H$e=new F;function I7(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,k$e),a=d.clone(d.UNIT_Z,B$e);P.equalsEpsilon(Math.abs(d.dot(a,o)),1,P.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,F$e);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=U$e;Z.setColumn(u,0,c,u),Z.setColumn(u,1,a,u),Z.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,V$e),h=Z.multiplyByScale(u,f,z$e),p=F.fromRotationTranslation(h,s,H$e);return F.multiplyTransformation(n,p,i)}Uf.createPrimitiveMatrix=I7;var ok=Uf;var G$e=new d,W$e=new je,j$e=new U,q$e=new U,Y$e=new d,X$e=new d,K$e=new d,ZD=new d,$$e=new d,Z$e=new d,Ife=new Le,Q$e=new Z,J$e=new Z,eZe=new d;function tZe(e,t,n,i,o,r,s,a,c){let u=e.positions,f=li.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Be.createTypedArray(u.length,f.length);h.set(f);let p=Q$e;if(i!==0){let _=Le.fromAxisAngle(s,i,Ife);if(p=Z.fromQuaternion(_,p),t.tangent||t.bitangent){_=Le.fromAxisAngle(s,-i,Ife);let S=Z.fromQuaternion(_,J$e);a=d.normalize(Z.multiplyByVector(S,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else p=Z.clone(Z.IDENTITY,p);let g=q$e;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,x=m*3,b=new Float64Array(x),T=t.normal?new Float32Array(x):void 0,C=t.tangent?new Float32Array(x):void 0,A=t.bitangent?new Float32Array(x):void 0,E=t.st?new Float32Array(m*2):void 0,v=0,D=0,R=0,O=0,M=0;for(let _=0;_<m;_++){let S=u[_];if(b[v++]=S.x,b[v++]=S.y,b[v++]=S.z,t.st)if(l(o)&&o.positions.length===m)E[M++]=o.positions[_].x,E[M++]=o.positions[_].y;else{let w=Z.multiplyByVector(p,S,G$e),I=r(w,j$e);U.subtract(I,g,I);let L=P.clamp(I.x/n.width,0,1),B=P.clamp(I.y/n.height,0,1);E[M++]=L,E[M++]=B}t.normal&&(T[D++]=s.x,T[D++]=s.y,T[D++]=s.z),t.tangent&&(C[O++]=a.x,C[O++]=a.y,C[O++]=a.z),t.bitangent&&(A[R++]=c.x,A[R++]=c.y,A[R++]=c.z)}let N=new mn;return t.position&&(N.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:b})),t.normal&&(N.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:T})),t.tangent&&(N.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:C})),t.bitangent&&(N.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:A})),t.st&&(N.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:E})),new ut({attributes:N,indices:h,primitiveType:Ne.TRIANGLES})}function rb(e){e=y(e,y.EMPTY_OBJECT);let t=e.polygonHierarchy,n=e.textureCoordinates,i=y(e.vertexFormat,Ie.DEFAULT);this._vertexFormat=Ie.clone(i),this._polygonHierarchy=t,this._stRotation=y(e.stRotation,0),this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=Gn.computeHierarchyPackedLength(t,d)+Ie.packedLength+ee.packedLength+(l(n)?Gn.computeHierarchyPackedLength(n,U):1)+2}rb.fromPositions=function(e){e=y(e,y.EMPTY_OBJECT);let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new rb(t)};rb.pack=function(e,t,n){return n=y(n,0),n=Gn.packPolygonHierarchy(e._polygonHierarchy,t,n,d),ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=Gn.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var nZe=ee.clone(ee.UNIT_SPHERE),iZe=new Ie,oZe={polygonHierarchy:{}};rb.unpack=function(e,t,n){t=y(t,0);let i=Gn.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=ee.unpack(e,t,nZe);t+=ee.packedLength;let r=Ie.unpack(e,t,iZe);t+=Ie.packedLength;let s=e[t++],a=e[t]===-1?void 0:Gn.unpackPolygonHierarchy(e,t,U);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new rb(oZe)),n._polygonHierarchy=i,n._ellipsoid=ee.clone(o,n._ellipsoid),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};rb.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=To(s,d.equalsEpsilon,!0),s.length<3)return;let a=Y$e,c=X$e,u=K$e,f=$$e,h=Z$e;if(!ny.computeProjectTo2DArguments(s,ZD,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon(ZD,d.ZERO,P.EPSILON6)){let M=e._ellipsoid.geodeticSurfaceNormal(ZD,eZe);d.dot(a,M)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=ny.createProjectPointsTo2DFunction(ZD,f,h),m=ny.createProjectPointTo2DFunction(ZD,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let x=Gn.polygonsFromHierarchy(n,r,g,!1),b=x.hierarchy,T=x.polygons,C=function(M){return M},A=r?Gn.polygonsFromHierarchy(o,!0,C,!1).polygons:void 0;if(b.length===0)return;s=b[0].outerRing;let E=ce.fromPoints(s),v=Gn.computeBoundingRectangle(a,m,s,i,W$e),D=[];for(let M=0;M<T.length;M++){let N=new Dt({geometry:tZe(T[M],t,v,i,r?A[M]:void 0,m,a,c,u)});D.push(N)}let R=kn.combineInstances(D)[0];R.attributes.position.values=new Float64Array(R.attributes.position.values),R.indices=Be.createTypedArray(R.attributes.position.values.length/3,R.indices);let O=R.attributes;return t.position||delete O.position,new ut({attributes:O,indices:R.indices,primitiveType:R.primitiveType,boundingSphere:E})};var rk=rb;var Pfe=[],sk=[];function rZe(e,t,n,i,o){let s=os.fromPoints(t,e).projectPointsOntoPlane(t,Pfe);li.computeWindingOrder2D(s)===Cs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],x=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=x.x,c[h++]=x.y,c[h++]=x.z}else{let m=0;if(o===en.GEODESIC)for(u=0;u<f;u++)m+=Gn.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===en.RHUMB)for(u=0;u<f;u++)m+=Gn.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let x;o===en.GEODESIC?x=Gn.subdivideLine(t[u],t[(u+1)%f],n,sk):o===en.RHUMB&&(x=Gn.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,sk));let b=x.length;for(let T=0;T<b;++T)c[h++]=x[T]}}f=c.length/3;let p=f*2,g=Be.createTypedArray(f,p);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Dt({geometry:new ut({attributes:new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Ne.LINES})})}function sZe(e,t,n,i,o){let s=os.fromPoints(t,e).projectPointsOntoPlane(t,Pfe);li.computeWindingOrder2D(s)===Cs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),p=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=p/3;let b=t[u],T=t[(u+1)%f];c[p++]=b.x,c[p++]=b.y,c[p++]=b.z,c[p++]=T.x,c[p++]=T.y,c[p++]=T.z}else{let b=0;if(o===en.GEODESIC)for(u=0;u<f;u++)b+=Gn.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===en.RHUMB)for(u=0;u<f;u++)b+=Gn.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(b*3*2),u=0;u<f;++u){h[u]=p/3;let T;o===en.GEODESIC?T=Gn.subdivideLine(t[u],t[(u+1)%f],n,sk):o===en.RHUMB&&(T=Gn.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,sk));let C=T.length;for(let A=0;A<C;++A)c[p++]=T[A]}}f=c.length/(3*2);let g=h.length,m=(f*2+g)*2,x=Be.createTypedArray(f+g,m);for(p=0,u=0;u<f;++u)x[p++]=u,x[p++]=(u+1)%f,x[p++]=u+f,x[p++]=(u+1)%f+f;for(u=0;u<g;u++){let b=h[u];x[p++]=b,x[p++]=b+f}return new Dt({geometry:new ut({attributes:new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:c})}),indices:x,primitiveType:Ne.LINES})})}function sb(e){let t=e.polygonHierarchy,n=y(e.ellipsoid,ee.default),i=y(e.granularity,P.RADIANS_PER_DEGREE),o=y(e.perPositionHeight,!1),r=o&&l(e.extrudedHeight),s=y(e.arcType,en.GEODESIC),a=y(e.height,0),c=y(e.extrudedHeight,a);if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=ee.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=Gn.computeHierarchyPackedLength(t,d)+ee.packedLength+8}sb.pack=function(e,t,n){return n=y(n,0),n=Gn.packPolygonHierarchy(e._polygonHierarchy,t,n,d),ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=y(e._offsetAttribute,-1),t[n]=e.packedLength,t};var aZe=ee.clone(ee.UNIT_SPHERE),cZe={polygonHierarchy:{}};sb.unpack=function(e,t,n){t=y(t,0);let i=Gn.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=ee.unpack(e,t,aZe);t+=ee.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],p=e[t];return l(n)||(n=new sb(cZe)),n._polygonHierarchy=i,n._ellipsoid=ee.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=p,n};sb.fromPositions=function(e){e=y(e,y.EMPTY_OBJECT);let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new sb(t)};sb.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=Gn.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=P.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,p=e._perPositionHeightExtrude||!P.equalsEpsilon(f,h,0,P.EPSILON2),g,m;if(p)for(m=0;m<s.length;m++){if(a=sZe(t,s[m],u,o,r),a.geometry=Gn.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let T=a.geometry.attributes.position.values.length/3,C=new Uint8Array(T);e._offsetAttribute===rn.TOP?C=C.fill(1,0,T/2):(g=e._offsetAttribute===rn.NONE?0:1,C=C.fill(g)),a.geometry.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:C})}c.push(a)}else for(m=0;m<s.length;m++){if(a=rZe(t,s[m],u,o,r),a.geometry.attributes.position.values=li.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let T=a.geometry.attributes.position.values.length;g=e._offsetAttribute===rn.NONE?0:1;let C=new Uint8Array(T/3).fill(g);a.geometry.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:C})}c.push(a)}let x=kn.combineInstances(c)[0],b=ce.fromVertices(x.attributes.position.values);return new ut({attributes:x.attributes,indices:x.indices,primitiveType:x.primitiveType,boundingSphere:b,offsetAttribute:e._offsetAttribute})};var ak=sb;var Ofe="Entity polygons cannot have both height and perPositionHeight. height will be ignored",Rfe="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",Mfe=new z,Lfe=d.ZERO,Nfe=new d,Ffe=new ae,lZe=[],uZe=new U;function fZe(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function bu(e,t){jn.call(this,{entity:e,scene:t,geometryOptions:new fZe(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(bu.prototype=Object.create(jn.prototype),bu.prototype.constructor=bu);bu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Un.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof zt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,Mfe)),l(s)||(s=z.WHITE),o.color=Wt.fromColor(s)}l(i.offsetAttribute)&&(o.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,Lfe,Nfe)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new rk(i):r=new Rg(i),new Dt({id:t,geometry:r,attributes:o})};bu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,Mfe),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(o),distanceDisplayCondition:Un.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,Lfe,Nfe)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new kd(i):a=new ak(i),new Dt({id:t,geometry:a,attributes:s})};bu.prototype._computeCenter=function(e,t){let n=Y.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=os.fromPoints(i,o),s=r.projectPointsOntoPlane(i,lZe),a=s.length,c=0,u=a-1,f=new U;for(let p=0;p<a;u=p++){let g=s[p],m=s[u],x=g.x*m.y-m.x*g.y,b=U.add(g,m,uZe);b=U.multiplyByScalar(b,x,b),f=U.add(f,b,f),c+=x}let h=1/(c*3);return f=U.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};bu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||si.prototype._isHidden.call(this,e,t)};bu.prototype._isOnTerrain=function(e,t){let n=jn.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(ze.MINIMUM_VALUE):!0);return n&&!o};bu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!Y.isConstant(t.height)||!Y.isConstant(t.extrudedHeight)||!Y.isConstant(t.granularity)||!Y.isConstant(t.stRotation)||!Y.isConstant(t.textureCoordinates)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.perPositionHeight)||!Y.isConstant(t.closeTop)||!Y.isConstant(t.closeBottom)||!Y.isConstant(t.zIndex)||!Y.isConstant(t.arcType)||this._onTerrain&&!Y.isConstant(this._materialProperty)&&!(this._materialProperty instanceof zt)};bu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof zt,i=this._options;i.vertexFormat=n?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(ze.MINIMUM_VALUE),r=Y.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),s=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),a=Y.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),c=Y.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,qe.NONE),u=Y.getValueOrDefault(t.perPositionHeight,ze.MINIMUM_VALUE,!1);r=jn.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,Ct(Ofe)),s!==qe.NONE&&u&&(r=void 0,Ct(Rfe))):(l(a)&&!l(r)&&(r=0),f=jn.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=Y.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),i.stRotation=Y.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=Y.getValueOrDefault(t.closeTop,ze.MINIMUM_VALUE,!0),i.closeBottom=Y.getValueOrDefault(t.closeBottom,ze.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=Y.getValueOrDefault(t.arcType,ze.MINIMUM_VALUE,en.GEODESIC),i.textureCoordinates=Y.getValueOrUndefined(t.textureCoordinates,ze.MINIMUM_VALUE),a=jn.getGeometryExtrudedHeight(a,c),a===jn.CLAMP_TO_GROUND){let h=Rg.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Ffe);a=di.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};bu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};bu.DynamicGeometryUpdater=nE;function nE(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(nE.prototype=Object.create(ri.prototype),nE.prototype.constructor=nE);nE.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||ri.prototype._isHidden.call(this,e,t,n)};nE.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=Y.getValueOrUndefined(t.hierarchy,n);let o=Y.getValueOrUndefined(t.height,n),r=Y.getValueOrDefault(t.heightReference,n,qe.NONE),s=Y.getValueOrDefault(t.extrudedHeightReference,n,qe.NONE),a=Y.getValueOrUndefined(t.extrudedHeight,n),c=Y.getValueOrUndefined(t.perPositionHeight,n);o=jn.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,Ct(Ofe)),r!==qe.NONE&&c&&(o=void 0,Ct(Rfe))):(l(a)&&!l(o)&&(o=0),u=jn.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=Y.getValueOrUndefined(t.granularity,n),i.stRotation=Y.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=Y.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=Y.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=Y.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=Y.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=Y.getValueOrDefault(t.arcType,n,en.GEODESIC),a=jn.getGeometryExtrudedHeight(a,s),a===jn.CLAMP_TO_GROUND){let f=Rg.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Ffe);a=di.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var ck=bu;function dZe(e,t,n,i){let o=new mn;i.position&&(o.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=li.triangulate(t),u=(a-1)*r*6+c.length*2,f=Be.createTypedArray(s,u),h,p,g,m,x,b,T=r*2,C=0;for(h=0;h<a-1;h++){for(p=0;p<r-1;p++)g=p*2+h*r*2,b=g+T,m=g+1,x=m+T,f[C++]=m,f[C++]=g,f[C++]=x,f[C++]=x,f[C++]=g,f[C++]=b;g=r*2-2+h*r*2,m=g+1,x=m+T,b=g+T,f[C++]=m,f[C++]=g,f[C++]=x,f[C++]=x,f[C++]=g,f[C++]=b}if(i.st||i.tangent||i.bitangent){let v=new Float32Array(s*2),D=1/(a-1),R=1/n.height,O=n.height/2,M,N,_=0;for(h=0;h<a;h++){for(M=h*D,N=R*(t[0].y+O),v[_++]=M,v[_++]=N,p=1;p<r;p++)N=R*(t[p].y+O),v[_++]=M,v[_++]=N,v[_++]=M,v[_++]=N;N=R*(t[0].y+O),v[_++]=M,v[_++]=N}for(p=0;p<r;p++)M=0,N=R*(t[p].y+O),v[_++]=M,v[_++]=N;for(p=0;p<r;p++)M=(a-1)*D,N=R*(t[p].y+O),v[_++]=M,v[_++]=N;o.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:new Float32Array(v)})}let A=s-r*2;for(h=0;h<c.length;h+=3){let v=c[h]+A,D=c[h+1]+A,R=c[h+2]+A;f[C++]=v,f[C++]=D,f[C++]=R,f[C++]=R+r,f[C++]=D+r,f[C++]=v+r}let E=new ut({attributes:o,indices:f,boundingSphere:ce.fromVertices(e),primitiveType:Ne.TRIANGLES});if(i.normal&&(E=kn.computeNormal(E)),i.tangent||i.bitangent){try{E=kn.computeTangentAndBitangent(E)}catch{Ct("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(E.attributes.tangent=void 0),i.bitangent||(E.attributes.bitangent=void 0),i.st||(E.attributes.st=void 0)}return E}function JD(e){e=y(e,y.EMPTY_OBJECT);let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._cornerType=y(e.cornerType,ki.ROUNDED),this._vertexFormat=Ie.clone(y(e.vertexFormat,Ie.DEFAULT)),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+ee.packedLength+Ie.packedLength+2}JD.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Bfe=ee.clone(ee.UNIT_SPHERE),kfe=new Ie,QD={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Bfe,vertexFormat:kfe,cornerType:void 0,granularity:void 0};JD.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ee.unpack(e,t,Bfe);t+=ee.packedLength;let c=Ie.unpack(e,t,kfe);t+=Ie.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ee.clone(a,n._ellipsoid),n._vertexFormat=Ie.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(QD.polylinePositions=r,QD.shapePositions=s,QD.cornerType=u,QD.granularity=f,new JD(QD))};var hZe=new je;JD.createGeometry=function(e){let t=e._positions,n=To(t,d.equalsEpsilon),i=e._shape;if(i=_m.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;li.computeWindingOrder2D(i)===Cs.CLOCKWISE&&i.reverse();let o=je.fromPoints(i,hZe),r=_m.computePositions(n,i,o,e,!0);return dZe(r,i,o,e._vertexFormat)};var lk=JD;function mZe(e,t){let n=new mn;n.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Be.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ut({attributes:n,indices:Be.createTypedArray(o,a),boundingSphere:ce.fromVertices(e),primitiveType:Ne.LINES})}function tI(e){e=y(e,y.EMPTY_OBJECT);let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._cornerType=y(e.cornerType,ki.ROUNDED),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+ee.packedLength+2}tI.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Vfe=ee.clone(ee.UNIT_SPHERE),eI={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Vfe,height:void 0,cornerType:void 0,granularity:void 0};tI.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ee.unpack(e,t,Vfe);t+=ee.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ee.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(eI.polylinePositions=r,eI.shapePositions=s,eI.cornerType=c,eI.granularity=u,new tI(eI))};var pZe=new je;tI.createGeometry=function(e){let t=e._positions,n=To(t,d.equalsEpsilon),i=e._shape;if(i=_m.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;li.computeWindingOrder2D(i)===Cs.CLOCKWISE&&i.reverse();let o=je.fromPoints(i,pZe),r=_m.computePositions(n,i,o,e,!1);return mZe(r,i)};var uk=tI;var Ufe=new z;function _Ze(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function Em(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new _Ze(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(Em.prototype=Object.create(si.prototype),Em.prototype.constructor=Em);Em.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Un.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof zt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Ufe)),l(c)||(c=z.WHITE),o=Wt.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Dt({id:t,geometry:new lk(this._options),attributes:i})};Em.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,Ufe),o=this._distanceDisplayConditionProperty.getValue(e);return new Dt({id:t,geometry:new uk(this._options),attributes:{show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o)}})};Em.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||si.prototype._isHidden.call(this,e,t)};Em.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!Y.isConstant(t.granularity)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.cornerType)};Em.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof zt;o.vertexFormat=r?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(ze.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(ze.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(ze.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(ze.MINIMUM_VALUE):void 0};Em.DynamicGeometryUpdater=iE;function iE(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(iE.prototype=Object.create(ri.prototype),iE.prototype.constructor=iE);iE.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||ri.prototype._isHidden.call(this,e,t,n)};iE.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=Y.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=Y.getValueOrUndefined(t.shape,n),i.granularity=Y.getValueOrUndefined(t.granularity,n),i.cornerType=Y.getValueOrUndefined(t.cornerType,n)};var fk=Em;var P7=new d,Gfe=new d,Wfe=new d,jfe=new d,qfe=new ae,gZe=new U,yZe=new ce,xZe=new ce;function Yfe(e,t){let n=new ut({attributes:new mn,primitiveType:Ne.TRIANGLES});return n.attributes.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function bZe(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=jfe,f=Wfe,h=Gfe;if(t.normal||t.tangent||t.bitangent)for(let p=0;p<o;p+=3){let g=d.fromArray(e,p,P7),m=c+1,x=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),Z.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[x]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[x]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[x]=u.z),c+=3}return Yfe(t,{positions:e,normals:r,tangents:s,bitangents:a})}var O7=new d,Xfe=new d;function TZe(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=jfe,p=Wfe,g=Gfe;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let x=d.fromArray(e,m,P7),b=d.fromArray(e,(m+6)%i,O7);if(f){let T=d.fromArray(e,(m+3)%i,Xfe);d.subtract(b,x,b),d.subtract(T,x,T),g=d.normalize(d.cross(T,b,g),g),f=!1}d.equalsEpsilon(b,x,P.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(x,h),t.tangent&&(p=d.normalize(d.cross(h,g,p),p))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=p.x,r[c++]=p.y,r[c++]=p.z,r[c++]=p.x,r[c++]=p.y,r[c++]=p.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return Yfe(t,{positions:e,normals:o,tangents:r,bitangents:s})}function Kfe(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let p=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,x=0,b=P7,T=gZe,C=Number.MAX_VALUE,A=Number.MAX_VALUE,E=-Number.MAX_VALUE,v=-Number.MAX_VALUE;for(let S=c;S<u;++S)for(let w=0;w<r;++w)qs.computePosition(t,i,n.st,S,w,b,T),p[m++]=b.x,p[m++]=b.y,p[m++]=b.z,n.st&&(g[x++]=T.x,g[x++]=T.y,C=Math.min(C,T.x),A=Math.min(A,T.y),E=Math.max(E,T.x),v=Math.max(v,T.y));if(s&&(qs.computePosition(t,i,n.st,0,0,b,T),p[m++]=b.x,p[m++]=b.y,p[m++]=b.z,n.st&&(g[x++]=T.x,g[x++]=T.y,C=T.x,A=T.y,E=T.x,v=T.y)),a&&(qs.computePosition(t,i,n.st,o-1,0,b,T),p[m++]=b.x,p[m++]=b.y,p[m]=b.z,n.st&&(g[x++]=T.x,g[x]=T.y,C=Math.min(C,T.x),A=Math.min(A,T.y),E=Math.max(E,T.x),v=Math.max(v,T.y))),n.st&&(C<0||A<0||E>1||v>1))for(let S=0;S<g.length;S+=2)g[S]=(g[S]-C)/(E-C),g[S+1]=(g[S+1]-A)/(v-A);let D=bZe(p,n,i,t.tangentRotationMatrix),R=6*(r-1)*(f-1);s&&(R+=3*(r-1)),a&&(R+=3*(r-1));let O=Be.createTypedArray(h,R),M=0,N=0,_;for(_=0;_<f-1;++_){for(let S=0;S<r-1;++S){let w=M,I=w+r,L=I+1,B=w+1;O[N++]=w,O[N++]=I,O[N++]=B,O[N++]=B,O[N++]=I,O[N++]=L,++M}++M}if(s||a){let S=h-1,w=h-1;s&&a&&(S=h-2);let I,L;if(M=0,s)for(_=0;_<r-1;_++)I=M,L=I+1,O[N++]=S,O[N++]=I,O[N++]=L,++M;if(a)for(M=(f-1)*r,_=0;_<r-1;_++)I=M,L=I+1,O[N++]=I,O[N++]=w,O[N++]=L,++M}return D.indices=O,n.st&&(D.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:g})),D}function oE(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function rE(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var R7=new Ie;function CZe(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let Xe=Ie.clone(o,R7);Xe.normal=!0,e._vertexFormat=Xe}let h=Kfe(e,t);n&&(e._vertexFormat=o);let p=li.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);p=new Float64Array(p);let g=p.length,m=g*2,x=new Float64Array(m);x.set(p);let b=li.scaleToGeodeticHeight(h.attributes.position.values,r,a);x.set(b,g),h.attributes.position.values=x;let T=o.normal?new Float32Array(m):void 0,C=o.tangent?new Float32Array(m):void 0,A=o.bitangent?new Float32Array(m):void 0,E=o.st?new Float32Array(m/3*2):void 0,v,D;if(o.normal){for(D=h.attributes.normal.values,T.set(D),f=0;f<g;f++)D[f]=-D[f];T.set(D,g),h.attributes.normal.values=T}if(n){D=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let Xe=new Float32Array(m);for(f=0;f<g;f++)D[f]=-D[f];Xe.set(D,g),h.attributes.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:Xe})}let R,O=l(i);if(O){let Xe=g/3*2,_t=new Uint8Array(Xe);i===rn.TOP?_t=_t.fill(1,0,Xe/2):(R=i===rn.NONE?0:1,_t=_t.fill(R)),h.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:_t})}if(o.tangent){let Xe=h.attributes.tangent.values;for(C.set(Xe),f=0;f<g;f++)Xe[f]=-Xe[f];C.set(Xe,g),h.attributes.tangent.values=C}if(o.bitangent){let Xe=h.attributes.bitangent.values;A.set(Xe),A.set(Xe,g),h.attributes.bitangent.values=A}o.st&&(v=h.attributes.st.values,E.set(v),E.set(v,g/3*2),h.attributes.st.values=E);let M=h.indices,N=M.length,_=g/3,S=Be.createTypedArray(m/3,N*2);for(S.set(M),f=0;f<N;f+=3)S[f+N]=M[f+2]+_,S[f+1+N]=M[f+1]+_,S[f+2+N]=M[f]+_;h.indices=S;let w=t.northCap,I=t.southCap,L=c,B=2,H=0,V=4,G=4;w&&(B-=1,L-=1,H+=1,V-=2,G-=1),I&&(B-=1,L-=1,H+=1,V-=2,G-=1),H+=B*u+2*L-V;let k=(H+G)*2,W=new Float64Array(k*3),q=n?new Float32Array(k*3):void 0,J=O?new Uint8Array(k):void 0,j=o.st?new Float32Array(k*2):void 0,K=i===rn.TOP;O&&!K&&(R=i===rn.ALL?1:0,J=J.fill(R));let Q=0,he=0,ye=0,re=0,_e=u*L,be;for(f=0;f<_e;f+=u)be=f*3,W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,f*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1);if(I){let Xe=w?_e+1:_e;for(be=Xe*3,f=0;f<2;f++)W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,Xe*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1)}else for(f=_e-u;f<_e;f++)be=f*3,W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,f*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1);for(f=_e-1;f>0;f-=u)be=f*3,W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,f*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1);if(w){let Xe=_e;for(be=Xe*3,f=0;f<2;f++)W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,Xe*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1)}else for(f=u-1;f>=0;f--)be=f*3,W=oE(W,Q,be,p,b),Q+=6,o.st&&(j=rE(j,he,f*2,v),he+=4),n&&(ye+=3,q[ye++]=D[be],q[ye++]=D[be+1],q[ye++]=D[be+2]),K&&(J[re++]=1,re+=1);let we=TZe(W,o,a);o.st&&(we.attributes.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:j})),n&&(we.attributes.extrudeDirection=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:q})),O&&(we.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:J}));let De=Be.createTypedArray(k,H*6),Me,Re,rt,Ye;g=W.length/3;let dt=0;for(f=0;f<g-1;f+=2){Me=f,Ye=(Me+2)%g;let Xe=d.fromArray(W,Me*3,O7),_t=d.fromArray(W,Ye*3,Xfe);d.equalsEpsilon(Xe,_t,P.EPSILON10)||(Re=(Me+1)%g,rt=(Re+2)%g,De[dt++]=Me,De[dt++]=Re,De[dt++]=Ye,De[dt++]=Ye,De[dt++]=Re,De[dt++]=rt)}return we.indices=De,we=kn.combineInstances([new Dt({geometry:h}),new Dt({geometry:we})]),we[0]}var AZe=[new d,new d,new d,new d],$fe=new fe,EZe=new fe;function M7(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=qs.computeOptions(e,t,n,0,qfe,$fe),s=r.height,a=r.width,c=AZe;return qs.computePosition(r,i,!1,0,0,c[0]),qs.computePosition(r,i,!1,0,a-1,c[1]),qs.computePosition(r,i,!1,s-1,0,c[2]),qs.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function Sm(e){e=y(e,y.EMPTY_OBJECT);let t=e.rectangle,n=y(e.height,0),i=y(e.extrudedHeight,n);this._rectangle=ae.clone(t),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._surfaceHeight=Math.max(n,i),this._rotation=y(e.rotation,0),this._stRotation=y(e.stRotation,0),this._vertexFormat=Ie.clone(y(e.vertexFormat,Ie.DEFAULT)),this._extrudedHeight=Math.min(n,i),this._shadowVolume=y(e.shadowVolume,!1),this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}Sm.packedLength=ae.packedLength+ee.packedLength+Ie.packedLength+7;Sm.pack=function(e,t,n){return n=y(n,0),ae.pack(e._rectangle,t,n),n+=ae.packedLength,ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=y(e._offsetAttribute,-1),t};var Zfe=new ae,Qfe=ee.clone(ee.UNIT_SPHERE),Sy={rectangle:Zfe,ellipsoid:Qfe,vertexFormat:R7,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Sm.unpack=function(e,t,n){t=y(t,0);let i=ae.unpack(e,t,Zfe);t+=ae.packedLength;let o=ee.unpack(e,t,Qfe);t+=ee.packedLength;let r=Ie.unpack(e,t,R7);t+=Ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,p=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=ee.clone(o,n._ellipsoid),n._vertexFormat=Ie.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=p===-1?void 0:p,n):(Sy.granularity=s,Sy.height=a,Sy.rotation=c,Sy.stRotation=u,Sy.extrudedHeight=f,Sy.shadowVolume=h,Sy.offsetAttribute=p===-1?void 0:p,new Sm(Sy))};Sm.computeRectangle=function(e,t){e=y(e,y.EMPTY_OBJECT);let n=e.rectangle,i=y(e.granularity,P.RADIANS_PER_DEGREE),o=y(e.ellipsoid,ee.default),r=y(e.rotation,0);return M7(n,i,r,o,t)};var SZe=new Z,zfe=new Le,vZe=new fe;Sm.createGeometry=function(e){if(P.equalsEpsilon(e._rectangle.north,e._rectangle.south,P.EPSILON10)||P.equalsEpsilon(e._rectangle.east,e._rectangle.west,P.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=qs.computeOptions(t,e._granularity,i,o,qfe,$fe,EZe),a=SZe;if(o!==0||i!==0){let g=ae.center(t,vZe),m=n.geodeticSurfaceNormalCartographic(g,O7);Le.fromAxisAngle(m,-o,zfe),Z.fromQuaternion(zfe,a)}else Z.clone(Z.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!P.equalsEpsilon(c,u,0,P.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,p;if(t=e._rectangle,f){h=CZe(e,s);let g=ce.fromRectangle3D(t,n,c,xZe),m=ce.fromRectangle3D(t,n,u,yZe);p=ce.union(g,m)}else{if(h=Kfe(e,s),h.attributes.position.values=li.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===rn.NONE?0:1,x=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}p=ce.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ut({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:p,offsetAttribute:e._offsetAttribute})};Sm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Sm({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Ie.POSITION_ONLY,shadowVolume:!0})};var Hfe=new ae,wZe=[new U,new U,new U],DZe=new Mi,IZe=new fe;function PZe(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,Hfe),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=M7(t,n,o,i,Hfe),s=wZe;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Mi.fromRotation(e._stRotation,DZe),u=ae.center(a,IZe);for(let m=0;m<3;++m){let x=s[m];x.x-=u.longitude,x.y-=u.latitude,Mi.multiplyByVector(c,x,x),x.x+=u.longitude,x.y+=u.latitude,x.x=(x.x-a.west)/a.width,x.y=(x.y-a.south)/a.height}let f=s[0],h=s[1],p=s[2],g=new Array(6);return U.pack(f,g),U.pack(h,g,2),U.pack(p,g,4),g}Object.defineProperties(Sm.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=M7(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=PZe(this)),this._textureCoordinateRotationPoints}}});var sE=Sm;var Jfe=new z,ede=d.ZERO,tde=new d,nde=new ae,OZe=new ae,RZe=new fe;function MZe(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function jd(e,t){jn.call(this,{entity:e,scene:t,geometryOptions:new MZe(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(jd.prototype=Object.create(jn.prototype),jd.prototype.constructor=jd);jd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Un.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof zt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Jfe)),l(o)||(o=z.WHITE),i.color=Wt.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,ede,tde))),new Dt({id:t,geometry:new sE(this._options),attributes:i})};jd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,Jfe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=to.fromCartesian3(Y.getValueOrDefault(this._terrainOffsetProperty,e,ede,tde))),new Dt({id:t,geometry:new _A(this._options),attributes:r})};jd.prototype._computeCenter=function(e,t){let n=Y.getValueOrUndefined(this._entity.rectangle.coordinates,e,OZe);if(!l(n))return;let i=ae.center(n,RZe);return fe.toCartesian(i,ee.default,t)};jd.prototype._isHidden=function(e,t){return!l(t.coordinates)||si.prototype._isHidden.call(this,e,t)};jd.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!Y.isConstant(t.height)||!Y.isConstant(t.extrudedHeight)||!Y.isConstant(t.granularity)||!Y.isConstant(t.stRotation)||!Y.isConstant(t.rotation)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.zIndex)||this._onTerrain&&!Y.isConstant(this._materialProperty)&&!(this._materialProperty instanceof zt)};jd.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof zt,i=Y.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),o=Y.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,qe.NONE),r=Y.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),s=Y.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,qe.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(ze.MINIMUM_VALUE,a.rectangle),a.granularity=Y.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),a.stRotation=Y.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),a.rotation=Y.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),a.offsetAttribute=jn.computeGeometryOffsetAttribute(i,o,r,s),a.height=jn.getGeometryHeight(i,o),r=jn.getGeometryExtrudedHeight(r,s),r===jn.CLAMP_TO_GROUND&&(r=di.getMinimumMaximumHeights(sE.computeRectangle(a,nde)).minimumTerrainHeight),a.extrudedHeight=r};jd.DynamicGeometryUpdater=aE;function aE(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(aE.prototype=Object.create(ri.prototype),aE.prototype.constructor=aE);aE.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||ri.prototype._isHidden.call(this,e,t,n)};aE.prototype._setOptions=function(e,t,n){let i=this._options,o=Y.getValueOrUndefined(t.height,n),r=Y.getValueOrDefault(t.heightReference,n,qe.NONE),s=Y.getValueOrUndefined(t.extrudedHeight,n),a=Y.getValueOrDefault(t.extrudedHeightReference,n,qe.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=Y.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=Y.getValueOrUndefined(t.granularity,n),i.stRotation=Y.getValueOrUndefined(t.stRotation,n),i.rotation=Y.getValueOrUndefined(t.rotation,n),i.offsetAttribute=jn.computeGeometryOffsetAttribute(o,r,s,a),i.height=jn.getGeometryHeight(o,r),s=jn.getGeometryExtrudedHeight(s,a),s===jn.CLAMP_TO_GROUND&&(s=di.getMinimumMaximumHeights(sE.computeRectangle(i,nde)).minimumTerrainHeight),i.extrudedHeight=s};var dk=jd;var ide={};function LZe(e,t){return P.equalsEpsilon(e.latitude,t.latitude,P.EPSILON10)&&P.equalsEpsilon(e.longitude,t.longitude,P.EPSILON10)}var NZe=new fe,FZe=new fe;function BZe(e,t,n,i){t=To(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,NZe);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let p=c[0],g=u[0],m=p===g,x=1;for(let b=1;b<o;++b){let T=t[b],C=e.cartesianToCartographic(T,FZe);s&&(C.height=n[b]),m=m&&C.height===0,LZe(h,C)?h.height<C.height&&(c[x-1]=C.height):(a[x]=T,c[x]=C.height,r?u[x]=i[b]:u[x]=0,m=m&&c[x]===u[x],fe.clone(C,h),++x)}if(!(m||x<2))return a.length=x,c.length=x,u.length=x,{positions:a,topHeights:c,bottomHeights:u}}var kZe=new Array(2),VZe=new Array(2),UZe={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};ide.computePositions=function(e,t,n,i,o,r){let s=BZe(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=P.chordLength(o,e.maximumRadius),p=UZe;if(p.minDistance=h,p.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Bi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let x=kZe,b=VZe;p.positions=x,p.height=b;let T=0;for(m=0;m<a-1;m++){x[0]=t[m],x[1]=t[m+1],b[0]=n[m],b[1]=n[m+1];let C=Bi.generateArc(p);u.set(C,T),b[0]=i[m],b[1]=i[m+1],f.set(Bi.generateArc(p),T),T+=C.length}}else p.positions=t,p.height=n,u=new Float64Array(Bi.generateArc(p)),p.height=i,f=new Float64Array(Bi.generateArc(p));return{bottomPositions:f,topPositions:u,numCorners:c}};var cE=ide;var L7=new d,hk=new d,zZe=new d,ode=new d,HZe=new d,GZe=new d,WZe=new d;function ab(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=y(e.vertexFormat,Ie.DEFAULT),r=y(e.granularity,P.RADIANS_PER_DEGREE),s=y(e.ellipsoid,ee.default);this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Ie.clone(o),this._granularity=r,this._ellipsoid=ee.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+ee.packedLength+Ie.packedLength+1}ab.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n]=e._granularity,t};var rde=ee.clone(ee.UNIT_SPHERE),sde=new Ie,nI={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:rde,vertexFormat:sde,granularity:void 0};ab.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ee.unpack(e,t,rde);t+=ee.packedLength;let u=Ie.unpack(e,t,sde);t+=Ie.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ee.clone(c,n._ellipsoid),n._vertexFormat=Ie.clone(u,n._vertexFormat),n._granularity=f,n):(nI.positions=r,nI.minimumHeights=s,nI.maximumHeights=a,nI.granularity=f,new ab(nI))};ab.fromConstantHeights=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new ab(c)};ab.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=cE.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,p=h*2,g=o.position?new Float64Array(p):void 0,m=o.normal?new Float32Array(p):void 0,x=o.tangent?new Float32Array(p):void 0,b=o.bitangent?new Float32Array(p):void 0,T=o.st?new Float32Array(p/3*2):void 0,C=0,A=0,E=0,v=0,D=0,R=WZe,O=GZe,M=HZe,N=!0;h/=3;let _,S=0,w=1/(h-f-1);for(_=0;_<h;++_){let V=_*3,G=d.fromArray(u,V,L7),k=d.fromArray(c,V,hk);if(o.position&&(g[C++]=k.x,g[C++]=k.y,g[C++]=k.z,g[C++]=G.x,g[C++]=G.y,g[C++]=G.z),o.st&&(T[D++]=S,T[D++]=0,T[D++]=S,T[D++]=1),o.normal||o.tangent||o.bitangent){let W=d.clone(d.ZERO,ode),q=d.subtract(G,s.geodeticSurfaceNormal(G,hk),hk);if(_+1<h&&(W=d.fromArray(u,V+3,ode)),N){let J=d.subtract(W,G,zZe),j=d.subtract(q,G,L7);R=d.normalize(d.cross(j,J,R),R),N=!1}d.equalsEpsilon(G,W,P.EPSILON10)?N=!0:(S+=w,o.tangent&&(O=d.normalize(d.subtract(W,G,O),O)),o.bitangent&&(M=d.normalize(d.cross(R,O,M),M))),o.normal&&(m[A++]=R.x,m[A++]=R.y,m[A++]=R.z,m[A++]=R.x,m[A++]=R.y,m[A++]=R.z),o.tangent&&(x[v++]=O.x,x[v++]=O.y,x[v++]=O.z,x[v++]=O.x,x[v++]=O.y,x[v++]=O.z),o.bitangent&&(b[E++]=M.x,b[E++]=M.y,b[E++]=M.z,b[E++]=M.x,b[E++]=M.y,b[E++]=M.z)}}let I=new mn;o.position&&(I.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(I.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(I.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:x})),o.bitangent&&(I.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:b})),o.st&&(I.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:T}));let L=p/3;p-=6*(f+1);let B=Be.createTypedArray(L,p),H=0;for(_=0;_<L-2;_+=2){let V=_,G=_+2,k=d.fromArray(g,V*3,L7),W=d.fromArray(g,G*3,hk);if(d.equalsEpsilon(k,W,P.EPSILON10))continue;let q=_+1,J=_+3;B[H++]=q,B[H++]=V,B[H++]=J,B[H++]=J,B[H++]=V,B[H++]=G}return new ut({attributes:I,indices:B,primitiveType:Ne.TRIANGLES,boundingSphere:new ce.fromVertices(g)})};var mk=ab;var ade=new d,cde=new d;function cb(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=y(e.granularity,P.RADIANS_PER_DEGREE),r=y(e.ellipsoid,ee.default);this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=ee.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+ee.packedLength+1}cb.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n]=e._granularity,t};var lde=ee.clone(ee.UNIT_SPHERE),iI={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:lde,granularity:void 0};cb.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ee.unpack(e,t,lde);t+=ee.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ee.clone(c,n._ellipsoid),n._granularity=u,n):(iI.positions=r,iI.minimumHeights=s,iI.maximumHeights=a,iI.granularity=u,new cb(iI))};cb.fromConstantHeights=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new cb(c)};cb.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=cE.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),p=0;u/=3;let g;for(g=0;g<u;++g){let C=g*3,A=d.fromArray(c,C,ade),E=d.fromArray(a,C,cde);h[p++]=E.x,h[p++]=E.y,h[p++]=E.z,h[p++]=A.x,h[p++]=A.y,h[p++]=A.z}let m=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:h})}),x=f/3;f=2*x-4+x;let b=Be.createTypedArray(x,f),T=0;for(g=0;g<x-2;g+=2){let C=g,A=g+2,E=d.fromArray(h,C*3,ade),v=d.fromArray(h,A*3,cde);if(d.equalsEpsilon(E,v,P.EPSILON10))continue;let D=g+1,R=g+3;b[T++]=D,b[T++]=C,b[T++]=D,b[T++]=R,b[T++]=C,b[T++]=A}return b[T++]=x-2,b[T++]=x-1,new ut({attributes:m,indices:b,primitiveType:Ne.LINES,boundingSphere:new ce.fromVertices(h)})};var pk=cb;var ude=new z;function jZe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function qd(e,t){si.call(this,{entity:e,scene:t,geometryOptions:new jZe(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(qd.prototype=Object.create(si.prototype),qd.prototype.constructor=qd);qd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Un.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof zt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,ude)),l(c)||(c=z.WHITE),o=Wt.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Dt({id:t,geometry:new mk(this._options),attributes:i})};qd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=Y.getValueOrDefault(this._outlineColorProperty,e,z.BLACK,ude),o=this._distanceDisplayConditionProperty.getValue(e);return new Dt({id:t,geometry:new pk(this._options),attributes:{show:new gn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:Wt.fromColor(i),distanceDisplayCondition:Un.fromDistanceDisplayCondition(o)}})};qd.prototype._isHidden=function(e,t){return!l(t.positions)||si.prototype._isHidden.call(this,e,t)};qd.prototype._getIsClosed=function(e){return!1};qd.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!Y.isConstant(t.minimumHeights)||!Y.isConstant(t.maximumHeights)||!Y.isConstant(t.outlineWidth)||!Y.isConstant(t.granularity)};qd.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof zt,s=this._options;s.vertexFormat=r?ln.VERTEX_FORMAT:uo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(ze.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(ze.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(ze.MINIMUM_VALUE):void 0};qd.DynamicGeometryUpdater=lE;function lE(e,t,n){ri.call(this,e,t,n)}l(Object.create)&&(lE.prototype=Object.create(ri.prototype),lE.prototype.constructor=lE);lE.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||ri.prototype._isHidden.call(this,e,t,n)};lE.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=Y.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=Y.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=Y.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=Y.getValueOrUndefined(t.granularity,n)};var _k=qd;var lb=[eN,I3,T3,Z3,Q3,ok,ck,fk,dk,_k];function ub(e,t){this.entity=e,this.scene=t;let n=new Array(lb.length),i=new me,o=new xr;for(let r=0;r<n.length;r++){let s=new lb[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(ub.prototype._onEntityPropertyChanged,this)}ub.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};ub.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};ub.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};ub.registerUpdater=function(e){lb.includes(e)||lb.push(e)};ub.unregisterUpdater=function(e){if(lb.includes(e)){let t=lb.indexOf(e);lb.splice(t,1)}};var uE=ub;var fde=new z,qZe=new Lt,YZe=new Lt,XZe=d.ZERO,KZe=new d;function Yd(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.updaters=new wt,this.updatersWithAttributes=new wt,this.attributes=new wt,this.subscriptions=new wt,this.showsUpdated=new wt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(Yd.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}Yd.prototype.onMaterialChanged=function(){this.invalidated=!0};Yd.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};Yd.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!Y.isConstant(e.distanceDisplayConditionProperty)||!Y.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Yd.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Yd.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=sr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Pn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof zt)&&(this.depthFailMaterial=sr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let b=u.fillMaterialProperty.color,T=Y.getValueOrDefault(b,e,z.WHITE,fde);z.equals(h._lastColor,T)||(h._lastColor=z.clone(T,h._lastColor),h.color=Wt.toValue(T,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof zt&&(!u.depthFailMaterialProperty.isConstant||c)){let b=u.depthFailMaterialProperty.color,T=Y.getValueOrDefault(b,e,z.WHITE,fde);z.equals(h._lastDepthFailColor,T)||(h._lastDepthFailColor=z.clone(T,h._lastDepthFailColor),h.depthFailColor=Wt.toValue(T,h.depthFailColor))}let p=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=u.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let b=Y.getValueOrDefault(m,e,YZe,qZe);Lt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(b,h.distanceDisplayCondition))}let x=u.terrainOffsetProperty;if(!Y.isConstant(x)){let b=Y.getValueOrDefault(x,e,XZe,KZe);d.equals(b,h._lastOffset)||(h._lastOffset=d.clone(b,h._lastOffset),h.offset=to.toValue(b,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Yd.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=gn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Yd.prototype.contains=function(e){return this.updaters.contains(e.id)};Yd.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?ct.FAILED:(i.boundingSphere.clone(t),ct.DONE)};Yd.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function fE(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}fE.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new Yd(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function dde(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}fE.prototype.remove=function(e){dde(this._solidItems,e)||dde(this._translucentItems,e)};function hde(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function gk(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}fE.prototype.update=function(e){let t=gk(this,this._solidItems,e,!0);t=gk(this,this._translucentItems,e,t)&&t;let n=hde(this,this._solidItems,e),i=hde(this,this._translucentItems,e);return(n||i)&&(t=gk(this,this._solidItems,e,t)&&t,t=gk(this,this._translucentItems,e,t)&&t),t};function mde(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return ct.FAILED}fE.prototype.getBoundingSphere=function(e,t){let n=mde(this._solidItems,e,t);return n===ct.FAILED?mde(this._translucentItems,e,t):n};function pde(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}fE.prototype.removeAllPrimitives=function(){pde(this._solidItems),pde(this._translucentItems)};var Xd=fE;var $Ze=new Lt,ZZe=new Lt,QZe=d.ZERO,JZe=new d;function Kd(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new wt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new wt,this.attributes=new wt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Kd.prototype.onMaterialChanged,this),this.subscriptions=new wt,this.showsUpdated=new wt}Kd.prototype.onMaterialChanged=function(){this.invalidated=!0};Kd.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};Kd.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!Y.isConstant(t.distanceDisplayConditionProperty)||!Y.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Kd.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var eQe=new z;Kd.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=sr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=sr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Pn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=sr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof zt)&&(this.depthFailMaterial=sr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof zt&&!c.depthFailMaterialProperty.isConstant){let b=c.depthFailMaterialProperty.color,T=Y.getValueOrDefault(b,e,z.WHITE,eQe);z.equals(h._lastDepthFailColor,T)||(h._lastDepthFailColor=z.clone(T,h._lastDepthFailColor),h.depthFailColor=Wt.toValue(T,h.depthFailColor))}let p=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=c.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let b=Y.getValueOrDefault(m,e,ZZe,$Ze);Lt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(b,h.distanceDisplayCondition))}let x=c.terrainOffsetProperty;if(!Y.isConstant(x)){let b=Y.getValueOrDefault(x,e,QZe,JZe);d.equals(b,h._lastOffset)||(h._lastOffset=d.clone(b,h._lastOffset),h.offset=to.toValue(b,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Kd.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=gn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Kd.prototype.contains=function(e){return this.updaters.contains(e.id)};Kd.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?ct.FAILED:(i.boundingSphere.clone(t),ct.DONE)};Kd.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function dE(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}dE.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new Kd(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};dE.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};dE.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};dE.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return ct.FAILED};dE.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var $d=dE;var gde=Hr(_de(),1);function yk(){this._tree=new gde.default}function fb(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}fb.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};yk.prototype.insert=function(e,t){let n=fb.fromRectangleAndId(e,t,new fb);this._tree.insert(n)};function tQe(e,t){return e.id===t.id}var nQe=new fb;yk.prototype.remove=function(e,t){let n=fb.fromRectangleAndId(e,t,nQe);this._tree.remove(n,tQe)};var iQe=new fb;yk.prototype.collides=function(e){let t=fb.fromRectangleAndId("",e,iQe);return this._tree.collides(t)};var hE=yk;var oQe=new z,rQe=new Lt,sQe=new Lt;function h_(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.updaters=new wt,this.updatersWithAttributes=new wt,this.attributes=new wt,this.subscriptions=new wt,this.showsUpdated=new wt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new hE}h_.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};h_.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!Y.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};h_.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};h_.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new pl({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let x=u.fillMaterialProperty.color,b=Y.getValueOrDefault(x,e,z.WHITE,oQe);z.equals(h._lastColor,b)||(h._lastColor=z.clone(b,h._lastColor),h.color=Wt.toValue(b,h.color))}let p=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=u.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let x=Y.getValueOrDefault(m,e,sQe,rQe);Lt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(x,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};h_.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=gn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};h_.prototype.contains=function(e){return this.updaters.contains(e.id)};h_.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),ct.DONE):ct.FAILED};h_.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function mE(e,t){this._batches=[],this._primitives=e,this._classificationType=t}mE.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=Y.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new h_(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};mE.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};mE.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};mE.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return ct.FAILED};mE.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var oI=mE;var aQe=new Lt,cQe=new Lt;function zf(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new wt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.material=void 0,this.updatersWithAttributes=new wt,this.attributes=new wt,this.invalidated=!1,this.removeMaterialSubscription=i.definitionChanged.addEventListener(zf.prototype.onMaterialChanged,this),this.subscriptions=new wt,this.showsUpdated=new wt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new hE}zf.prototype.onMaterialChanged=function(){this.invalidated=!0};zf.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};zf.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof zt&&t instanceof zt?!0:l(t)&&t.equals(n)};zf.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!Y.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};zf.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};zf.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=sr.getValue(e,this.materialProperty,this.material),n=new pl({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=sr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let p=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=c.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let x=Y.getValueOrDefault(m,e,cQe,aQe);Lt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(x,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};zf.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=gn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};zf.prototype.contains=function(e){return this.updaters.contains(e.id)};zf.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?ct.FAILED:(i.boundingSphere.clone(t),ct.DONE)};zf.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function pE(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}pE.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=of.shouldUseSphericalCoordinates(o.geometry.rectangle),s=Y.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new zf(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};pE.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};pE.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};pE.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return ct.FAILED};pE.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var xk=pE;var lQe=new z,uQe=new Lt,fQe=new Lt,dQe=d.ZERO,hQe=new d;function m_(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.updaters=new wt,this.updatersWithAttributes=new wt,this.attributes=new wt,this.itemsToRemove=[],this.subscriptions=new wt,this.showsUpdated=new wt}m_.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!Y.isConstant(e.distanceDisplayConditionProperty)||!Y.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};m_.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};m_.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Pn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new ln({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let b=u.outlineColorProperty,T=Y.getValueOrDefault(b,e,z.WHITE,lQe);z.equals(h._lastColor,T)||(h._lastColor=z.clone(T,h._lastColor),h.color=Wt.toValue(T,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let p=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=u.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let b=Y.getValueOrDefault(m,e,fQe,uQe);Lt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(b,h.distanceDisplayCondition))}let x=u.terrainOffsetProperty;if(!Y.isConstant(x)){let b=Y.getValueOrDefault(x,e,dQe,hQe);d.equals(b,h._lastOffset)||(h._lastOffset=d.clone(b,h._lastOffset),h.offset=to.toValue(b,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};m_.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=gn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};m_.prototype.contains=function(e){return this.updaters.contains(e.id)};m_.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?ct.FAILED:(i.boundingSphere.clone(t),ct.DONE)};m_.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function _E(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new wt,this._translucentBatches=new wt}_E.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new m_(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new m_(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};_E.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};_E.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let p=u.length;if(p>0)for(h=!0,t=0;t<p;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let p=u.length;if(p>0)for(h=!0,t=0;t<p;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};_E.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return ct.FAILED};_E.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var rI=_E;var mQe=[];function Fl(e,t,n,i){n=y(n,e.primitives),i=y(i,e.groundPrimitives),this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new wt,this._removedObjects=new wt,this._changedObjects=new wt;let o=yn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=ar.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new rI(n,e,s,!1),this._outlineBatches[o+s]=new rI(n,e,s,!0),this._closedColorBatches[s]=new Xd(n,ln,void 0,!0,s,!0),this._closedColorBatches[o+s]=new Xd(n,ln,void 0,!0,s,!1),this._closedMaterialBatches[s]=new $d(n,uo,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new $d(n,uo,void 0,!0,s,!1),this._openColorBatches[s]=new Xd(n,ln,void 0,!1,s,!0),this._openColorBatches[o+s]=new Xd(n,ln,void 0,!1,s,!1),this._openMaterialBatches[s]=new $d(n,uo,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new $d(n,uo,void 0,!1,s,!1);let a=zn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new xk(i,s,uo)),c[s]=new oI(i,s);else for(s=0;s<a;++s)c[s]=new oI(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new XA(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new wt,this._updaterSets=new wt,this._entityCollection=t,t.collectionChanged.addEventListener(Fl.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,mQe)}Fl.registerUpdater=function(e){uE.registerUpdater(e)};Fl.unregisterUpdater=function(e){uE.unregisterUpdater(e)};Fl.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(x){h._removeUpdater(x),h._insertUpdaterIntoBatch(e,x)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new uE(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(x){h._insertUpdaterIntoBatch(e,x)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(Fl._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let p=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)p=g[a].update(e)&&p;return p};var pQe=[],_Qe=new ce;Fl.prototype.getBoundingSphere=function(e,t){let n=pQe,i=_Qe,o=0,r=ct.DONE,s=this._batches,a=s.length,c=e.id;if(!this._updaterSets.get(c))return ct.FAILED;let u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let p=0;p<a;p++){if(r=s[p].getBoundingSphere(h,i),r===ct.PENDING)return ct.PENDING;r===ct.DONE&&(n[o]=ce.clone(i,n[o]),o++)}}return o===0?ct.FAILED:(n.length=o,ce.fromBoundingSpheres(n,t),ct.DONE)};Fl.prototype.isDestroyed=function(){return!1};Fl.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Fl.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};Fl.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};Fl.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=yn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof zt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof zt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof zt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};Fl._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Fl.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var bk=Fl;var gQe=1,yQe="30px sans-serif",xQe=Zo.FILL,bQe=z.WHITE,TQe=z.BLACK,CQe=1,AQe=!1,EQe=new z(.165,.165,.165,.8),SQe=new U(7,5),vQe=U.ZERO,wQe=d.ZERO,DQe=qe.NONE,IQe=yi.CENTER,PQe=Fn.CENTER,OQe=new d,RQe=new z,MQe=new z,LQe=new z,NQe=new U,FQe=new d,BQe=new U,kQe=new Vt,VQe=new Vt,UQe=new Vt,zQe=new Lt;function yde(e){this.entity=e,this.label=void 0,this.index=void 0}function vy(e,t){t.collectionChanged.addEventListener(vy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new wt,this._onCollectionChanged(t,t.values,[],[])}vy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&Y.getValueOrDefault(a._show,e,!0),h;if(f&&(h=Y.getValueOrUndefined(s._position,e,OQe),c=Y.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){B7(r,s,n);continue}Y.isConstant(s._position)||(n._clusterDirty=!0);let p=!1,g=Y.getValueOrDefault(a._heightReference,e,DQe);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,p=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=Y.getValueOrDefault(a._scale,e,gQe),u.font=Y.getValueOrDefault(a._font,e,yQe),u.style=Y.getValueOrDefault(a._style,e,xQe),u.fillColor=Y.getValueOrDefault(a._fillColor,e,bQe,RQe),u.outlineColor=Y.getValueOrDefault(a._outlineColor,e,TQe,MQe),u.outlineWidth=Y.getValueOrDefault(a._outlineWidth,e,CQe),u.showBackground=Y.getValueOrDefault(a._showBackground,e,AQe),u.backgroundColor=Y.getValueOrDefault(a._backgroundColor,e,EQe,LQe),u.backgroundPadding=Y.getValueOrDefault(a._backgroundPadding,e,SQe,NQe),u.pixelOffset=Y.getValueOrDefault(a._pixelOffset,e,vQe,BQe),u.eyeOffset=Y.getValueOrDefault(a._eyeOffset,e,wQe,FQe),u.heightReference=g,u.horizontalOrigin=Y.getValueOrDefault(a._horizontalOrigin,e,IQe),u.verticalOrigin=Y.getValueOrDefault(a._verticalOrigin,e,PQe),u.translucencyByDistance=Y.getValueOrUndefined(a._translucencyByDistance,e,kQe),u.pixelOffsetScaleByDistance=Y.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,VQe),u.scaleByDistance=Y.getValueOrUndefined(a._scaleByDistance,e,UQe),u.distanceDisplayCondition=Y.getValueOrUndefined(a._distanceDisplayCondition,e,zQe),u.disableDepthTestDistance=Y.getValueOrUndefined(a._disableDepthTestDistance,e),p&&u._updateClamping()}return!0};vy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return ct.FAILED;let i=n.label;return t.center=d.clone(y(i._clampedPosition,i.position),t.center),t.radius=0,ct.DONE};vy.prototype.isDestroyed=function(){return!1};vy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(vy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};vy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new yde(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new yde(r)):(B7(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],B7(s.get(r.id),r,a),s.remove(r.id)};function B7(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var Tk=vy;var HQe=1,GQe=!0,WQe=0,jQe=!0,qQe=!0,YQe=yn.ENABLED,XQe=qe.NONE,KQe=z.RED,$Qe=0,ZQe=z.WHITE,QQe=Vc.HIGHLIGHT,JQe=.5,eJe=new U(1,1),xde={maximumPositionEpsilon:Number.POSITIVE_INFINITY},tJe=new F,nJe=new F,bde=new z,Tde=new Array(4),iJe=new d;function wy(e,t){t.collectionChanged.addEventListener(wy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new wt,this._onCollectionChanged(t,t.values,[],[])}async function oJe(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await cm.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}wy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&Y.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,tJe),c=Ee.createIfNeeded(Y.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u==null?void 0:u.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...xde}},n[s.id]=u;let m=Y.getValueOrDefault(a._incrementallyLoadTextures,e,jQe),x=Y.getValueOrDefault(a._environmentMapOptions,e,xde,u.environmentMapOptionsScratch);oJe(this,s,c,m,x)}let p=u.modelPrimitive;if(!l(p))continue;p.show=!0,p.scale=Y.getValueOrDefault(a._scale,e,HQe),p.enableVerticalExaggeration=Y.getValueOrDefault(a._enableVerticalExaggeration,e,GQe),p.minimumPixelSize=Y.getValueOrDefault(a._minimumPixelSize,e,WQe),p.maximumScale=Y.getValueOrUndefined(a._maximumScale,e),p.modelMatrix=F.clone(h,p.modelMatrix),p.shadows=Y.getValueOrDefault(a._shadows,e,YQe),p.heightReference=Y.getValueOrDefault(a._heightReference,e,XQe),p.distanceDisplayCondition=Y.getValueOrUndefined(a._distanceDisplayCondition,e),p.silhouetteColor=Y.getValueOrDefault(a._silhouetteColor,e,KQe,bde),p.silhouetteSize=Y.getValueOrDefault(a._silhouetteSize,e,$Qe),p.color=Y.getValueOrDefault(a._color,e,ZQe,bde),p.colorBlendMode=Y.getValueOrDefault(a._colorBlendMode,e,QQe),p.colorBlendAmount=Y.getValueOrDefault(a._colorBlendAmount,e,JQe),p.clippingPlanes=Y.getValueOrUndefined(a._clippingPlanes,e),p.clampAnimations=Y.getValueOrDefault(a._clampAnimations,e,qQe),p.imageBasedLighting.imageBasedLightingFactor=Y.getValueOrDefault(a._imageBasedLightingFactor,e,eJe);let g=Y.getValueOrUndefined(a._lightColor,e);if(l(g)&&(z.pack(g,Tde,0),g=d.unpack(Tde,0,iJe)),p.lightColor=g,p.customShader=Y.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,p.ready){!a._readyOk&&a._marsOptions&&a._marsOptions.callback&&(a._marsOptions.callback(s,p),a._readyOk=!0);let m=Y.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?p.activeAnimations.addAll({loop:lu.REPEAT}):p.activeAnimations.removeAll(),u.animationsRunning=m);let x=Y.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(x)){let C=Object.keys(x);for(let A=0,E=C.length;A<E;++A){let v=C[A],D=x[v];if(!l(D))continue;let R=p.getNode(v);if(!l(R))continue;let O=F.fromTranslationRotationScale(D,nJe);R.matrix=F.multiply(R.originalMatrix,O,O)}}let b=!1,T=Y.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(T)){let C=Object.keys(T);for(let A=0,E=C.length;A<E;++A){let v=C[A],D=T[v];l(D)&&(b=!0,p.setArticulationStage(v,D))}}b&&p.applyArticulations()}}return!0};wy.prototype.isDestroyed=function(){return!1};wy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(wy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)k7(this,e[i],t,n);return ue(this)};var Ck=new d,rJe=new fe;wy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return ct.FAILED;if(n.loadFailed)return ct.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return ct.PENDING;if(!i.ready||!n.modelUpdated)return ct.PENDING;let o=this._scene,r=y(o.ellipsoid,ee.default);if(i.heightReference!==qe.NONE){let a=i.modelMatrix;Ck.x=a[12],Ck.y=a[13],Ck.z=a[14];let c=r.cartesianToCartographic(Ck,rJe),u=o.getHeight(c,i.heightReference);return l(u)&&(Qu(i.heightReference)?c.height=u:c.height+=u),ce.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),ct.DONE}return ce.clone(i.boundingSphere,t),ct.DONE};wy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(sJe(r,a),s.set(r.id,r)):(k7(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],k7(this,r,a,c),s.remove(r.id)};function k7(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function sJe(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var Ak=wy;function Dy(e){this._definitionChanged=new me,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(Dy.prototype,{isConstant:{get:function(){return Y.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:Gi.FIXED}}});var aJe=new $;Dy.prototype.getValue=function(e,t){return l(e)||(e=$.now(aJe)),this.getValueInReferenceFrame(e,Gi.FIXED,t)};Dy.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};Dy.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?ee.default.scaleToGeodeticSurface(n,n):void 0};Dy.prototype.equals=function(e){return this===e||e instanceof Dy&&this._value===e._value};Dy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var p_=Dy;var cJe=60,lJe=1,Ade=new An,V7=new An,U7=new An;function Cde(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function uJe(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||$.lessThanOrEquals(o,t)||$.greaterThanOrEquals(o,n),p=0,g=i.length,m=i[p],x=n,b=!1,T,C,A;for(;p<g;){if(!h&&$.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),$.greaterThan(m,t)&&$.lessThan(m,x)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),p<g-1){if(s>0&&!b){let E=i[p+1],v=$.secondsDifference(E,m);b=v>s,b&&(T=Math.ceil(v/s),C=0,A=v/Math.max(T,2),T=Math.max(T-1,1))}if(b&&C<T){m=$.addSeconds(m,A,new $),C++;continue}}b=!1,p++,m=i[p]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function fJe(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,p=!l(i)||$.lessThanOrEquals(i,t)||$.greaterThanOrEquals(i,n);for(;$.lessThan(h,n);)!p&&$.greaterThanOrEquals(h,i)&&(p=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=$.addSeconds(t,r*u,new $);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function dJe(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,p=Math.max(r,60),g=!l(i)||$.lessThanOrEquals(i,t)||$.greaterThanOrEquals(i,n);for(;$.lessThan(h,n);)!g&&$.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=$.addSeconds(t,p*u,new $);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function hJe(e,t,n,i,o,r,s,a){U7.start=t,U7.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!An.intersect(h,U7,Ade).isEmpty){let p=h.start;h.isStartIncluded||(h.isStopIncluded?p=h.stop:p=$.addSeconds(h.start,$.secondsDifference(h.stop,h.start)/2,new $));let g=e.getValueInReferenceFrame(p,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function mJe(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function pJe(e,t,n,i,o,r,s,a){V7.start=t,V7.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!An.intersect(h,V7,Ade).isEmpty){let p=h.start,g=h.stop,m=t;$.greaterThan(p,m)&&(m=p);let x=n;$.lessThan(g,x)&&(x=g),c=Ede(h.data,m,x,i,o,r,c,a)}}return c}function Ede(e,t,n,i,o,r,s,a){for(;e instanceof gy;)e=e.resolvedProperty;if(e instanceof Ra){let c=e._property._times;s=uJe(e,t,n,c,i,o,r,s,a)}else e instanceof tN?s=fJe(e,t,n,i,o,r,s,a):e instanceof Oa?s=pJe(e,t,n,i,o,r,s,a):e instanceof xy?s=hJe(e,t,n,i,o,r,s,a):e instanceof _l||e instanceof p_&&Y.isConstant(e)?s=mJe(e,t,n,i,o,r,s,a):s=dJe(e,t,n,i,o,r,s,a);return s}function Sde(e,t,n,i,o,r,s){l(s)||(s=[]);let a=Ede(e,t,n,i,o,r,0,s);return s.length=a,s}var _Je=new Z;function sI(e,t){this._unusedIndexes=[],this._polylineCollection=new dm,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}sI.prototype.update=function(e){if(this._referenceFrame===Gi.INERTIAL){let t=Mt.computeIcrfToCentralBodyFixedMatrix(e,_Je);F.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};sI.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=Y.getValueOrUndefined(i._leadTime,e),p=Y.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),x=l(h),b=l(p);if(u=m||x&&b,u){if(b&&(r=$.addSeconds(e,-p,new $)),x&&(s=$.addSeconds(e,h,new $)),m){let T=g.start,C=g.stop;(!b||$.greaterThan(T,r))&&(r=T),(!x||$.lessThan(C,s))&&(s=C)}u=$.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=Y.getValueOrDefault(i._resolution,e,cJe);c.show=!0,c.positions=Sde(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=sr.getValue(e,i._material,c.material),c.width=Y.getValueOrDefault(i._width,e,lJe),c.distanceDisplayCondition=Y.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};sI.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};sI.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function Iy(e,t){t.collectionChanged.addEventListener(Iy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new wt,this._onCollectionChanged(t,t.values,[],[])}Iy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=Gi.FIXED;this._scene.mode===ne.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new sI(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};Iy.prototype.isDestroyed=function(){return!1};Iy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Iy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};Iy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new Cde(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new Cde(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};Iy._subSample=Sde;var Ek=Iy;var vde=z.WHITE,wde=z.BLACK,Dde=0,Ide=1,Pde=0,Ode=Gr.NONE,Rde=new z,gJe=new d,Mde=new z,Lde=new Vt,Nde=new Vt,Fde=new Lt;function Bde(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function Py(e,t){t.collectionChanged.addEventListener(Py.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new wt,this._onCollectionChanged(t,t.values,[],[])}Py.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=Y.getValueOrDefault(a._heightReference,e,qe.NONE),h=s.isShowing&&s.isAvailable(e)&&Y.getValueOrDefault(a._show,e,!0),p;if(h&&(p=Y.getValueOrUndefined(s._position,e,gJe),h=l(p)),!h){aI(r,s,n);continue}Y.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==qe.NONE&&!l(u)?(l(c)&&(aI(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,p)&&u.heightReference===f):f===qe.NONE&&!l(c)&&(l(u)&&(aI(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=p,c.scaleByDistance=Y.getValueOrUndefined(a._scaleByDistance,e,Lde),c.translucencyByDistance=Y.getValueOrUndefined(a._translucencyByDistance,e,Nde),c.color=Y.getValueOrDefault(a._color,e,vde,Rde),c.outlineColor=Y.getValueOrDefault(a._outlineColor,e,wde,Mde),c.outlineWidth=Y.getValueOrDefault(a._outlineWidth,e,Dde),c.pixelSize=Y.getValueOrDefault(a._pixelSize,e,Ide),c.distanceDisplayCondition=Y.getValueOrUndefined(a._distanceDisplayCondition,e,Fde),c.disableDepthTestDistance=Y.getValueOrDefault(a._disableDepthTestDistance,e,Pde),c.splitDirection=Y.getValueOrDefault(a._splitDirection,e,Ode);else if(l(u)){u.show=!0,u.position=p,u.scaleByDistance=Y.getValueOrUndefined(a._scaleByDistance,e,Lde),u.translucencyByDistance=Y.getValueOrUndefined(a._translucencyByDistance,e,Nde),u.distanceDisplayCondition=Y.getValueOrUndefined(a._distanceDisplayCondition,e,Fde),u.disableDepthTestDistance=Y.getValueOrDefault(a._disableDepthTestDistance,e,Pde),u.splitDirection=Y.getValueOrDefault(a._splitDirection,e,Ode),u.heightReference=f;let x=Y.getValueOrDefault(a._color,e,vde,Rde),b=Y.getValueOrDefault(a._outlineColor,e,wde,Mde),T=Math.round(Y.getValueOrDefault(a._outlineWidth,e,Dde)),C=Math.max(1,Math.round(Y.getValueOrDefault(a._pixelSize,e,Ide)));if(T>0?(u.scale=1,g=g||T!==r.outlineWidth||C!==r.pixelSize||!z.equals(x,r.color)||!z.equals(b,r.outlineColor)):(u.scale=C/50,C=50,g=g||T!==r.outlineWidth||!z.equals(x,r.color)||!z.equals(b,r.outlineColor)),g){r.color=z.clone(x,r.color),r.outlineColor=z.clone(b,r.outlineColor),r.pixelSize=C,r.outlineWidth=T;let A=x.alpha,E=x.toCssColorString(),v=b.toCssColorString(),D=JSON.stringify([E,C,v,T]);u.setImage(D,rA(A,E,v,T,C))}m&&u._updateClamping()}}return!0};Py.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return ct.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return ct.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,ct.DONE};Py.prototype.isDestroyed=function(){return!1};Py.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Py.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};Py.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new Bde(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Bde(r)):(aI(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],aI(s.get(r.id),r,a),s.remove(r.id)};function aI(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var Sk=Py;var Hde=[];function yJe(e,t,n,i,o){let r=Hde;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,p=i.green,g=i.blue,m=i.alpha;if(z.equals(n,i)){for(s=0;s<o;s++)r[s]=z.clone(n);return r}let x=(h-a)/o,b=(p-c)/o,T=(g-u)/o,C=(m-f)/o;for(s=0;s<o;s++)r[s]=new z(a+s*x,c+s*b,u+s*T,f+s*C);return r}function cI(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.colors,i=y(e.width,1),o=y(e.colorsPerVertex,!1);this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Ie.clone(y(e.vertexFormat,Ie.DEFAULT)),this._arcType=y(e.arcType,en.GEODESIC),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._ellipsoid=ee.clone(y(e.ellipsoid,ee.default)),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*z.packedLength:1,this.packedLength=r+ee.packedLength+Ie.packedLength+4}cI.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=z.packedLength)z.pack(s[i],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var Gde=ee.clone(ee.UNIT_SPHERE),Wde=new Ie,db={positions:void 0,colors:void 0,ellipsoid:Gde,vertexFormat:Wde,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};cI.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=z.packedLength)s[i]=z.unpack(e,t);let a=ee.unpack(e,t,Gde);t+=ee.packedLength;let c=Ie.unpack(e,t,Wde);t+=Ie.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],p=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=ee.clone(a,n._ellipsoid),n._vertexFormat=Ie.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=p,n):(db.positions=r,db.colors=s,db.width=u,db.colorsPerVertex=f,db.arcType=h,db.granularity=p,new cI(db))};var kde=new d,Vde=new d,Ude=new d,zde=new d;cI.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],p=To(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let L=0,B=h[0];i=i.filter(function(H,V){let G=!1;return o?G=V===B||V===0&&B===1:G=V+1===B,G?(L++,B=h[L],!1):!0})}let g=p.length;if(g<2||t<=0)return;if(r===en.GEODESIC||r===en.RHUMB){let L,B;r===en.GEODESIC?(L=P.chordLength(s,a.maximumRadius),B=Bi.numberOfPoints):(L=s,B=Bi.numberOfPointsRhumbLine);let H=Bi.extractHeights(p,a);if(l(i)){let V=1;for(c=0;c<g-1;++c)V+=B(p[c],p[c+1],L);let G=new Array(V),k=0;for(c=0;c<g-1;++c){let W=p[c],q=p[c+1],J=i[c],j=B(W,q,L);if(o&&c<V){let K=i[c+1],Q=yJe(W,q,J,K,j),he=Q.length;for(u=0;u<he;++u)G[k++]=Q[u]}else for(u=0;u<j;++u)G[k++]=z.clone(J)}G[k]=z.clone(i[i.length-1]),i=G,Hde.length=0}r===en.GEODESIC?p=Bi.generateCartesianArc({positions:p,minDistance:L,ellipsoid:a,height:H}):p=Bi.generateCartesianRhumbArc({positions:p,granularity:L,ellipsoid:a,height:H})}g=p.length;let m=g*4-4,x=new Float64Array(m*3),b=new Float64Array(m*3),T=new Float64Array(m*3),C=new Float32Array(m*2),A=n.st?new Float32Array(m*2):void 0,E=l(i)?new Uint8Array(m*4):void 0,v=0,D=0,R=0,O=0,M;for(u=0;u<g;++u){u===0?(M=kde,d.subtract(p[0],p[1],M),d.add(p[0],M,M)):M=p[u-1],d.clone(M,Ude),d.clone(p[u],Vde),u===g-1?(M=kde,d.subtract(p[g-1],p[g-2],M),d.add(p[g-1],M,M)):M=p[u+1],d.clone(M,zde);let L,B;l(E)&&(u!==0&&!o?L=i[u-1]:L=i[u],u!==g-1&&(B=i[u]));let H=u===0?2:0,V=u===g-1?2:4;for(f=H;f<V;++f){d.pack(Vde,x,v),d.pack(Ude,b,v),d.pack(zde,T,v),v+=3;let G=f-2<0?-1:1;if(C[D++]=2*(f%2)-1,C[D++]=G*t,n.st&&(A[R++]=u/(g-1),A[R++]=Math.max(C[D-2],0)),l(E)){let k=f<2?L:B;E[O++]=z.floatToByte(k.red),E[O++]=z.floatToByte(k.green),E[O++]=z.floatToByte(k.blue),E[O++]=z.floatToByte(k.alpha)}}}let N=new mn;N.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:x}),N.prevPosition=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:b}),N.nextPosition=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:T}),N.expandAndWidth=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:C}),n.st&&(N.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:A})),l(E)&&(N.color=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:4,values:E,normalize:!0}));let _=Be.createTypedArray(m,g*6-6),S=0,w=0,I=g-1;for(u=0;u<I;++u)_[w++]=S,_[w++]=S+2,_[w++]=S+1,_[w++]=S+1,_[w++]=S+2,_[w++]=S+3,S+=4;return new ut({attributes:N,indices:_,primitiveType:Ne.TRIANGLES,boundingSphere:ce.fromPoints(p),geometryType:md.POLYLINES})};var Oy=cI;var xJe=new $n(0),vk={},jde=new z,bJe=new zt(z.WHITE),TJe=new $n(!0),CJe=new $n(yn.DISABLED),AJe=new $n(new Lt),EJe=new $n(zn.BOTH);function SJe(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function vJe(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function Zd(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(Zd.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new me,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new SJe,this._groundGeometryOptions=new vJe,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=ar.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(Zd.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&Y.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});Zd.prototype.isOutlineVisible=function(e){return!1};Zd.prototype.isFilled=function(e){let t=this._entity,n=this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e);return y(n,!1)};Zd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new gn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Un.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof zt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,jde)),l(a)||(a=z.WHITE),s.color=Wt.fromColor(a)),this.clampToGround?new Dt({id:t,geometry:new ZT(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof zt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,jde)),l(a)||(a=z.WHITE),s.depthFailColor=Wt.fromColor(a)),new Dt({id:t,geometry:new Oy(this._geometryOptions),attributes:s}))};Zd.prototype.createOutlineGeometryInstance=function(e){};Zd.prototype.isDestroyed=function(){return!1};Zd.prototype.destroy=function(){this._entitySubscription(),ue(this)};Zd.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(ze.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=y(o.material,bJe),u=c instanceof zt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=y(s,TJe),this._shadowsProperty=y(o.shadows,CJe),this._distanceDisplayConditionProperty=y(o.distanceDisplayCondition,AJe),this._classificationTypeProperty=y(o.classificationType,EJe),this._fillEnabled=!0,this._zIndex=y(a,xJe);let f=o.width,h=o.arcType,p=o.clampToGround,g=o.granularity;if(!r.isConstant||!Y.isConstant(f)||!Y.isConstant(h)||!Y.isConstant(g)||!Y.isConstant(p)||!Y.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,x=r.getValue(ze.MINIMUM_VALUE,m.positions);if(!l(x)||x.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let b;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof zt)?b=rs.VERTEX_FORMAT:b=wa.VERTEX_FORMAT,m.vertexFormat=b,m.positions=x,m.width=l(f)?f.getValue(ze.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(ze.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(ze.MINIMUM_VALUE):void 0;let T=this._groundGeometryOptions;T.positions=x,T.width=m.width,T.arcType=m.arcType,T.granularity=m.granularity,this._clampToGround=l(p)?p.getValue(ze.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&Ct("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};Zd.prototype.createDynamicUpdater=function(e,t){return new lI(e,t,this)};var gE={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function lI(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function qde(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=vk[n];!l(i)||i.isDestroyed()?(i=new dm,vk[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}lI.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=Y.getValueOrUndefined(o,e,this._positions);t._clampToGround=Y.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=Y.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=Y.getValueOrDefault(i._arcType,e,en.GEODESIC),t._groundGeometryOptions.granularity=Y.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!Y.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,p;if(h instanceof zt)p=new rs;else{let g=sr.getValue(e,h,this._material);p=new wa({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new kh({geometryInstances:t.createFillGeometryInstance(e),appearance:p,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),Y.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=qde(this);if(!n.isShowing||!n.isAvailable(e)||!Y.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=en.GEODESIC;c=Y.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==en.NONE&&l(u)&&(gE.ellipsoid=f,gE.positions=r,gE.granularity=Y.getValueOrUndefined(i._granularity,e),gE.height=Bi.extractHeights(r,f),c===en.GEODESIC?r=Bi.generateCartesianArc(gE):r=Bi.generateCartesianRhumbArc(gE)),a.show=!0,a.positions=r.slice(),a.material=sr.getValue(e,t.fillMaterialProperty,a.material),a.width=Y.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=Y.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};lI.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return ce.clone(n.boundingSphere,e),ct.DONE}return l(t)&&!t.ready?ct.PENDING:ct.DONE}else{let t=qde(this);if(t.show&&t.positions.length>0)return ce.fromPoints(t.positions,e),ct.DONE}return ct.FAILED};lI.prototype.isDestroyed=function(){return!1};lI.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=vk[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete vk[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var wk=Zd;var wJe=new z,DJe=new Lt,IJe=new Lt;function Qd(e,t,n,i,o){let r;n instanceof zt?r=rs:r=wa,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new wt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new wt,this.material=void 0,this.updatersWithAttributes=new wt,this.attributes=new wt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Qd.prototype.onMaterialChanged,this),this.subscriptions=new wt,this.showsUpdated=new wt,this.zIndex=i,this._asynchronous=o}Qd.prototype.onMaterialChanged=function(){this.invalidated=!0};Qd.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof zt&&t instanceof zt?!0:l(t)&&t.equals(n)};Qd.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!Y.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Qd.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};Qd.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new kh({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===wa&&(this.material=sr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===wa&&(this.material=sr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let x=c.fillMaterialProperty.color,b=Y.getValueOrDefault(x,e,z.WHITE,wJe);z.equals(h._lastColor,b)||(h._lastColor=z.clone(b,h._lastColor),h.color=Wt.toValue(b,h.color))}let p=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=gn.toValue(p,h.show));let m=c.distanceDisplayConditionProperty;if(!Y.isConstant(m)){let x=Y.getValueOrDefault(m,e,IJe,DJe);Lt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Lt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Un.toValue(x,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Qd.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id);if(!s)continue;let a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=gn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Qd.prototype.contains=function(e){return this.updaters.contains(e.id)};Qd.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return ct.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?ct.FAILED:(i.boundingSphere.clone(t),ct.DONE)};Qd.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function yE(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=y(n,!0)}yE.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=Y.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new Qd(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};yE.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};yE.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};yE.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return ct.FAILED};yE.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var Dk=yE;var PJe=[];function Yde(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function Xde(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof zt?1:2);let r;l(i)&&(r=i+o*yn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof zt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function vm(e,t,n,i){i=y(i,e.groundPrimitives),n=y(n,e.primitives),this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new wt,this._removedObjects=new wt,this._changedObjects=new wt;let o,r=yn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new Xd(n,rs,void 0,!1,o),this._materialBatches[o]=new $d(n,wa,void 0,!1,o),this._colorBatches[o+r]=new Xd(n,rs,rs,!1,o),this._materialBatches[o+r]=new $d(n,wa,rs,!1,o),this._colorBatches[o+r*2]=new Xd(n,rs,wa,!1,o),this._materialBatches[o+r*2]=new $d(n,wa,wa,!1,o);this._dynamicBatch=new XA(n,i);let s=zn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new Dk(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new wt,this._updaters=new wt,this._entityCollection=t,t.collectionChanged.addEventListener(vm.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,PJe)}vm.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(Yde(this,f),Xde(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),Yde(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new wk(c,this._scene),this._updaters.set(u,f),Xde(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(vm._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,p=this._batches,g=p.length;for(a=0;a<g;a++)h=p[a].update(e)&&h;return h};var OJe=[],RJe=new ce;vm.prototype.getBoundingSphere=function(e,t){let n=OJe,i=RJe,o=0,r=ct.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);if(!c)return ct.FAILED;for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===ct.PENDING)return ct.PENDING;r===ct.DONE&&(n[o]=ce.clone(i,n[o]),o++)}return o===0?ct.FAILED:(n.length=o,ce.fromBoundingSpheres(n,t),ct.DONE)};vm.prototype.isDestroyed=function(){return!1};vm.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(vm.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};vm._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};vm.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var Ik=vm;function Bl(e){pl.initializeTerrainHeights(),kh.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new xr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=y(e.visualizersCallback,Bl.defaultVisualizersCallback);let i=!1,o=new Ll,r=new Ll;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new v3;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var xE=[];Bl.registerVisualizer=function(e){xE.includes(e)||xE.push(e)};Bl.unregisterVisualizer=function(e){if(xE.includes(e)){let t=xE.indexOf(e);xE.splice(t,1)}};Bl.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new iO(t,i),new bk(e,i,n._primitives,n._groundPrimitives),new Tk(t,i),new Ak(e,i),new f3(e,i),new Sk(t,i),new Ek(e,i),new Ik(e,i,n._primitives,n._groundPrimitives),...xE.map(o=>new o(e,i))]};Object.defineProperties(Bl.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});Bl.prototype.isDestroyed=function(){return!1};Bl.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};Bl.prototype.update=function(e){if(!di.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};Bl.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var MJe=[],LJe=new ce;Bl.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return ct.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let p=this._dataSourceCollection;for(o=p.length,i=0;i<o;i++){let g=p.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return ct.FAILED;let s=MJe,a=LJe,c=0,u=ct.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let p=f[i];if(l(p.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===ct.PENDING)return ct.PENDING;u===ct.DONE&&(s[c]=ce.clone(a,s[c]),c++)}}return c===0?ct.FAILED:(s.length=c,ce.fromBoundingSpheres(s,n),ct.DONE)};Bl.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new Ll),s=o.add(new W3);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};Bl.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};Bl.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var Pk=Bl;function z7(e,t,n){this.heading=y(e,0),this.pitch=y(t,0),this.range=y(n,0)}z7.clone=function(e,t){if(l(e))return l(t)||(t=new z7),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Jd=z7;var Kde=new Z,$de=new Z,Zde=new Z,NJe=new F,Ok=new d,Qde=new d,H7=new d,G7=new d,Jde=new d,ehe=new d,FJe=new Le,BJe=new d,kJe=new Z,bE=new $,VJe=1.25;function UJe(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let p=!1,g=!1,m,x,b;if(f===ne.SCENE3D){$.addSeconds(c,.001,bE);let R=o.getValue(bE,Ok);if(l(R)||($.addSeconds(c,-.001,bE),R=o.getValue(bE,Ok),g=!0),l(R)){let O=Mt.computeFixedToIcrfMatrix(c,Kde),M=Mt.computeFixedToIcrfMatrix(bE,$de),N;!l(O)||!l(M)?(N=Mt.computeTemeToPseudoFixedMatrix(c,Zde),O=Z.transpose(N,Kde),M=Mt.computeTemeToPseudoFixedMatrix(bE,$de),Z.transpose(M,M)):N=Z.transpose(O,Zde);let _=Z.multiplyByVector(O,h,Jde),S=Z.multiplyByVector(M,R,ehe);d.subtract(_,S,G7);let w=d.magnitude(G7)*1e3,I=P.GRAVITATIONALPARAMETER,L=-I/(w*w-2*I/d.magnitude(_));L<0||L>VJe*u.maximumRadius?(m=Qde,d.normalize(h,m),d.negate(m,m),b=d.clone(d.UNIT_Z,H7),x=d.cross(b,m,Ok),d.magnitude(x)>P.EPSILON7&&(d.normalize(m,m),d.normalize(x,x),b=d.cross(m,x,H7),d.normalize(b,b),p=!0)):d.equalsEpsilon(h,R,P.EPSILON7)||(b=Qde,d.normalize(_,b),d.normalize(S,S),x=d.cross(b,S,H7),g&&(x=d.multiplyByScalar(x,-1,x)),d.equalsEpsilon(x,d.ZERO,P.EPSILON7)||(m=d.cross(x,b,Ok),Z.multiplyByVector(N,m,m),Z.multiplyByVector(N,x,x),Z.multiplyByVector(N,b,b),d.normalize(m,m),d.normalize(x,x),d.normalize(b,b),p=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let T,C,A;i&&(T=d.clone(t.position,G7),C=d.clone(t.direction,Jde),A=d.clone(t.up,ehe));let E=NJe,v;l(s)&&(v=s.getValue(c,FJe));let D=r.getValue(c,BJe);if(a===eg.INERTIAL&&l(v))F.fromTranslationQuaternionRotationScale(h,v,d.ONE,E);else if(a===eg.VELOCITY&&l(D)){let R=Mt.rotationMatrixFromPositionVelocity(h,D,u,kJe);F.fromRotationTranslation(R,h,E)}else a===eg.ENU||!p?Mt.eastNorthUpToFixedFrame(h,u,E):(E[0]=m.x,E[1]=m.y,E[2]=m.z,E[3]=0,E[4]=x.x,E[5]=x.y,E[6]=x.z,E[7]=0,E[8]=b.x,E[9]=b.y,E[10]=b.z,E[11]=0,E[12]=h.x,E[13]=h.y,E[14]=h.z,E[15]=0);t._setTransform(E),i&&(d.clone(T,t.position),d.clone(C,t.direction),d.clone(A,t.up),d.cross(C,A,t.right))}if(n){let p=f===ne.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,p)}}function uI(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=y(n,ee.default),this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Ty(e.position,!0),this._offset3D=new d}Object.defineProperties(uI,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});uI.defaultOffset3D=new d(-14e3,3500,3500);var Rk=new Jd,zJe=new d;uI.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ne.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,p=n.camera,g=f||h,m=!0;if(f){let x=r.viewFrom,b=l(x);if(l(t)){//!hasViewFrom &&
let T=a.getValue(e,zJe);l(T)&&(Rk.heading=p.heading,Rk.pitch=p.pitch,Rk.range=p.getCameraDistance?p.getCameraDistance():300,p.viewBoundingSphere(t,Rk)),this.boundingSphere=t,g=!1,m=!1}else(!b||!l(x.getValue(e,this._offset3D)))&&d.clone(uI._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ne.SCENE2D&&d.clone(p.position,this._offset3D);this._lastEntity=r,this._mode=o,UJe(this,p,g,m,a,c,u,s,e,i)};var Mk=uI;function Uk(e){return zk(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function zk(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?zk(n):n),[])}var the=[0,1,2,3].concat(...Uk([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function fr(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,p,g,m,x,b=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,b++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),x=r[h*2],o.opt_len+=x*(g+m),s&&(o.static_len+=x*(s[h*2+1]+m)));if(b!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,b-=2}while(b>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)p=o.heap[--f],!(p>e.max_code)&&(r[p*2+1]!=g&&(o.opt_len+=(g-r[p*2+1])*r[p*2],r[p*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}fr._length_code=[0,1,2,3,4,5,6,7].concat(...Uk([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));fr.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];fr.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];fr.d_code=function(e){return e<256?the[e]:the[256+(e>>>7)]};fr.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];fr.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];fr.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];fr.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function Ma(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var HJe=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],GJe=Uk([[144,8],[112,9],[24,7],[8,8]]);Ma.static_ltree=zk(HJe.map((e,t)=>[e,GJe[t]]));var WJe=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],jJe=Uk([[30,5]]);Ma.static_dtree=zk(WJe.map((e,t)=>[e,jJe[t]]));Ma.static_l_desc=new Ma(Ma.static_ltree,fr.extra_lbits,257,286,15);Ma.static_d_desc=new Ma(Ma.static_dtree,fr.extra_dbits,0,30,15);Ma.static_bl_desc=new Ma(null,fr.extra_blbits,0,19,7);var qJe=9,YJe=8;function wm(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var ihe=0,kk=1,hb=2,eh=[new wm(0,0,0,0,ihe),new wm(4,4,8,4,kk),new wm(4,5,16,8,kk),new wm(4,6,32,32,kk),new wm(4,4,16,16,hb),new wm(8,16,32,32,hb),new wm(8,16,128,128,hb),new wm(8,32,128,256,hb),new wm(32,128,258,1024,hb),new wm(32,258,258,4096,hb)],Lk=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Hf=0,Nk=1,fI=2,Fk=3,XJe=32,W7=42,Bk=113,dI=666,j7=8,KJe=0,q7=1,$Je=2,Tr=3,Vk=258,Tu=Vk+Tr+1;function nhe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function ZJe(){let e=this,t,n,i,o,r,s,a,c,u,f,h,p,g,m,x,b,T,C,A,E,v,D,R,O,M,N,_,S,w,I,L,B,H,V=new fr,G=new fr,k=new fr;e.depth=[];let W,q,J,j,K,Q;e.bl_count=[],e.heap=[],L=[],B=[],H=[];function he(){u=2*r,h[g-1]=0;for(let Fe=0;Fe<g-1;Fe++)h[Fe]=0;N=eh[_].max_lazy,w=eh[_].good_length,I=eh[_].nice_length,M=eh[_].max_chain,v=0,T=0,R=0,C=O=Tr-1,E=0,p=0}function ye(){let Fe;for(Fe=0;Fe<286;Fe++)L[Fe*2]=0;for(Fe=0;Fe<30;Fe++)B[Fe*2]=0;for(Fe=0;Fe<19;Fe++)H[Fe*2]=0;L[256*2]=1,e.opt_len=e.static_len=0,q=J=0}function re(){V.dyn_tree=L,V.stat_desc=Ma.static_l_desc,G.dyn_tree=B,G.stat_desc=Ma.static_d_desc,k.dyn_tree=H,k.stat_desc=Ma.static_bl_desc,K=0,Q=0,j=8,ye()}e.pqdownheap=function(Fe,st){let tt=e.heap,$e=tt[st],St=st<<1;for(;St<=e.heap_len&&(St<e.heap_len&&nhe(Fe,tt[St+1],tt[St],e.depth)&&St++,!nhe(Fe,$e,tt[St],e.depth));)tt[st]=tt[St],st=St,St<<=1;tt[st]=$e};function _e(Fe,st){let tt=-1,$e,St=Fe[0*2+1],Gt=0,Tn=7,Mo=4;St===0&&(Tn=138,Mo=3),Fe[(st+1)*2+1]=65535;for(let So=0;So<=st;So++)$e=St,St=Fe[(So+1)*2+1],!(++Gt<Tn&&$e==St)&&(Gt<Mo?H[$e*2]+=Gt:$e!==0?($e!=tt&&H[$e*2]++,H[16*2]++):Gt<=10?H[17*2]++:H[18*2]++,Gt=0,tt=$e,St===0?(Tn=138,Mo=3):$e==St?(Tn=6,Mo=3):(Tn=7,Mo=4))}function be(){let Fe;for(_e(L,V.max_code),_e(B,G.max_code),k.build_tree(e),Fe=18;Fe>=3&&H[fr.bl_order[Fe]*2+1]===0;Fe--);return e.opt_len+=3*(Fe+1)+5+5+4,Fe}function we(Fe){e.pending_buf[e.pending++]=Fe}function De(Fe){we(Fe&255),we(Fe>>>8&255)}function Me(Fe){we(Fe>>8&255),we(Fe&255&255)}function Re(Fe,st){let tt,$e=st;Q>16-$e?(tt=Fe,K|=tt<<Q&65535,De(K),K=tt>>>16-Q,Q+=$e-16):(K|=Fe<<Q&65535,Q+=$e)}function rt(Fe,st){let tt=Fe*2;Re(st[tt]&65535,st[tt+1]&65535)}function Ye(Fe,st){let tt,$e=-1,St,Gt=Fe[0*2+1],Tn=0,Mo=7,So=4;for(Gt===0&&(Mo=138,So=3),tt=0;tt<=st;tt++)if(St=Gt,Gt=Fe[(tt+1)*2+1],!(++Tn<Mo&&St==Gt)){if(Tn<So)do rt(St,H);while(--Tn!==0);else St!==0?(St!=$e&&(rt(St,H),Tn--),rt(16,H),Re(Tn-3,2)):Tn<=10?(rt(17,H),Re(Tn-3,3)):(rt(18,H),Re(Tn-11,7));Tn=0,$e=St,Gt===0?(Mo=138,So=3):St==Gt?(Mo=6,So=3):(Mo=7,So=4)}}function dt(Fe,st,tt){let $e;for(Re(Fe-257,5),Re(st-1,5),Re(tt-4,4),$e=0;$e<tt;$e++)Re(H[fr.bl_order[$e]*2+1],3);Ye(L,Fe-1),Ye(B,st-1)}function Xe(){Q==16?(De(K),K=0,Q=0):Q>=8&&(we(K&255),K>>>=8,Q-=8)}function _t(){Re(q7<<1,3),rt(256,Ma.static_ltree),Xe(),1+j+10-Q<9&&(Re(q7<<1,3),rt(256,Ma.static_ltree),Xe()),j=7}function ft(Fe,st){let tt,$e,St;if(e.dist_buf[q]=Fe,e.lc_buf[q]=st&255,q++,Fe===0?L[st*2]++:(J++,Fe--,L[(fr._length_code[st]+256+1)*2]++,B[fr.d_code(Fe)*2]++),(q&8191)===0&&_>2){for(tt=q*8,$e=v-T,St=0;St<30;St++)tt+=B[St*2]*(5+fr.extra_dbits[St]);if(tt>>>=3,J<Math.floor(q/2)&&tt<Math.floor($e/2))return!0}return q==W-1}function ht(Fe,st){let tt,$e,St=0,Gt,Tn;if(q!==0)do tt=e.dist_buf[St],$e=e.lc_buf[St],St++,tt===0?rt($e,Fe):(Gt=fr._length_code[$e],rt(Gt+256+1,Fe),Tn=fr.extra_lbits[Gt],Tn!==0&&($e-=fr.base_length[Gt],Re($e,Tn)),tt--,Gt=fr.d_code(tt),rt(Gt,st),Tn=fr.extra_dbits[Gt],Tn!==0&&(tt-=fr.base_dist[Gt],Re(tt,Tn)));while(St<q);rt(256,Fe),j=Fe[256*2+1]}function vn(){Q>8?De(K):Q>0&&we(K&255),K=0,Q=0}function tn(Fe,st,tt){vn(),j=8,tt&&(De(st),De(~st)),e.pending_buf.set(c.subarray(Fe,Fe+st),e.pending),e.pending+=st}function Te(Fe,st,tt){Re((KJe<<1)+(tt?1:0),3),tn(Fe,st,!0)}function Ae(Fe,st,tt){let $e,St,Gt=0;_>0?(V.build_tree(e),G.build_tree(e),Gt=be(),$e=e.opt_len+3+7>>>3,St=e.static_len+3+7>>>3,St<=$e&&($e=St)):$e=St=st+5,st+4<=$e&&Fe!=-1?Te(Fe,st,tt):St==$e?(Re((q7<<1)+(tt?1:0),3),ht(Ma.static_ltree,Ma.static_dtree)):(Re(($Je<<1)+(tt?1:0),3),dt(V.max_code+1,G.max_code+1,Gt+1),ht(L,B)),ye(),tt&&vn()}function Mn(Fe){Ae(T>=0?T:-1,v-T,Fe),T=v,t.flush_pending()}function Ro(){let Fe,st,tt,$e;do{if($e=u-R-v,$e===0&&v===0&&R===0)$e=r;else if($e==-1)$e--;else if(v>=r+r-Tu){c.set(c.subarray(r,r+r),0),D-=r,v-=r,T-=r,Fe=g,tt=Fe;do st=h[--tt]&65535,h[tt]=st>=r?st-r:0;while(--Fe!==0);Fe=r,tt=Fe;do st=f[--tt]&65535,f[tt]=st>=r?st-r:0;while(--Fe!==0);$e+=r}if(t.avail_in===0)return;Fe=t.read_buf(c,v+R,$e),R+=Fe,R>=Tr&&(p=c[v]&255,p=(p<<b^c[v+1]&255)&x)}while(R<Tu&&t.avail_in!==0)}function Wo(Fe){let st=65535,tt;for(st>i-5&&(st=i-5);;){if(R<=1){if(Ro(),R===0&&Fe==0)return Hf;if(R===0)break}if(v+=R,R=0,tt=T+st,(v===0||v>=tt)&&(R=v-tt,v=tt,Mn(!1),t.avail_out===0)||v-T>=r-Tu&&(Mn(!1),t.avail_out===0))return Hf}return Mn(Fe==4),t.avail_out===0?Fe==4?fI:Hf:Fe==4?Fk:Nk}function Sr(Fe){let st=M,tt=v,$e,St,Gt=O,Tn=v>r-Tu?v-(r-Tu):0,Mo=I,So=a,Tc=v+Vk,Cc=c[tt+Gt-1],Si=c[tt+Gt];O>=w&&(st>>=2),Mo>R&&(Mo=R);do if($e=Fe,!(c[$e+Gt]!=Si||c[$e+Gt-1]!=Cc||c[$e]!=c[tt]||c[++$e]!=c[tt+1])){tt+=2,$e++;do;while(c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&c[++tt]==c[++$e]&&tt<Tc);if(St=Vk-(Tc-tt),tt=Tc-Vk,St>Gt){if(D=Fe,Gt=St,St>=Mo)break;Cc=c[tt+Gt-1],Si=c[tt+Gt]}}while((Fe=f[Fe&So]&65535)>Tn&&--st!==0);return Gt<=R?Gt:R}function ea(Fe){let st=0,tt;for(;;){if(R<Tu){if(Ro(),R<Tu&&Fe==0)return Hf;if(R===0)break}if(R>=Tr&&(p=(p<<b^c[v+(Tr-1)]&255)&x,st=h[p]&65535,f[v&a]=h[p],h[p]=v),st!==0&&(v-st&65535)<=r-Tu&&S!=2&&(C=Sr(st)),C>=Tr)if(tt=ft(v-D,C-Tr),R-=C,C<=N&&R>=Tr){C--;do v++,p=(p<<b^c[v+(Tr-1)]&255)&x,st=h[p]&65535,f[v&a]=h[p],h[p]=v;while(--C!==0);v++}else v+=C,C=0,p=c[v]&255,p=(p<<b^c[v+1]&255)&x;else tt=ft(0,c[v]&255),R--,v++;if(tt&&(Mn(!1),t.avail_out===0))return Hf}return Mn(Fe==4),t.avail_out===0?Fe==4?fI:Hf:Fe==4?Fk:Nk}function ys(Fe){let st=0,tt,$e;for(;;){if(R<Tu){if(Ro(),R<Tu&&Fe==0)return Hf;if(R===0)break}if(R>=Tr&&(p=(p<<b^c[v+(Tr-1)]&255)&x,st=h[p]&65535,f[v&a]=h[p],h[p]=v),O=C,A=D,C=Tr-1,st!==0&&O<N&&(v-st&65535)<=r-Tu&&(S!=2&&(C=Sr(st)),C<=5&&(S==1||C==Tr&&v-D>4096)&&(C=Tr-1)),O>=Tr&&C<=O){$e=v+R-Tr,tt=ft(v-1-A,O-Tr),R-=O-1,O-=2;do++v<=$e&&(p=(p<<b^c[v+(Tr-1)]&255)&x,st=h[p]&65535,f[v&a]=h[p],h[p]=v);while(--O!==0);if(E=0,C=Tr-1,v++,tt&&(Mn(!1),t.avail_out===0))return Hf}else if(E!==0){if(tt=ft(0,c[v-1]&255),tt&&Mn(!1),v++,R--,t.avail_out===0)return Hf}else E=1,v++,R--}return E!==0&&(tt=ft(0,c[v-1]&255),E=0),Mn(Fe==4),t.avail_out===0?Fe==4?fI:Hf:Fe==4?Fk:Nk}function ta(Fe){return Fe.total_in=Fe.total_out=0,Fe.msg=null,e.pending=0,e.pending_out=0,n=Bk,o=0,re(),he(),0}e.deflateInit=function(Fe,st,tt,$e,St,Gt){return $e||($e=j7),St||(St=YJe),Gt||(Gt=0),Fe.msg=null,st==-1&&(st=6),St<1||St>qJe||$e!=j7||tt<9||tt>15||st<0||st>9||Gt<0||Gt>2?-2:(Fe.dstate=e,s=tt,r=1<<s,a=r-1,m=St+7,g=1<<m,x=g-1,b=Math.floor((m+Tr-1)/Tr),c=new Uint8Array(r*2),f=[],h=[],W=1<<St+6,e.pending_buf=new Uint8Array(W*4),i=W*4,e.dist_buf=new Uint16Array(W),e.lc_buf=new Uint8Array(W),_=st,S=Gt,ta(Fe))},e.deflateEnd=function(){return n!=W7&&n!=Bk&&n!=dI?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==Bk?-3:0)},e.deflateParams=function(Fe,st,tt){let $e=0;return st==-1&&(st=6),st<0||st>9||tt<0||tt>2?-2:(eh[_].func!=eh[st].func&&Fe.total_in!==0&&($e=Fe.deflate(1)),_!=st&&(_=st,N=eh[_].max_lazy,w=eh[_].good_length,I=eh[_].nice_length,M=eh[_].max_chain),S=tt,$e)},e.deflateSetDictionary=function(Fe,st,tt){let $e=tt,St,Gt=0;if(!st||n!=W7)return-2;if($e<Tr)return 0;for($e>r-Tu&&($e=r-Tu,Gt=tt-$e),c.set(st.subarray(Gt,Gt+$e),0),v=$e,T=$e,p=c[0]&255,p=(p<<b^c[1]&255)&x,St=0;St<=$e-Tr;St++)p=(p<<b^c[St+(Tr-1)]&255)&x,f[St&a]=h[p],h[p]=St;return 0},e.deflate=function(Fe,st){let tt,$e,St,Gt,Tn;if(st>4||st<0)return-2;if(!Fe.next_out||!Fe.next_in&&Fe.avail_in!==0||n==dI&&st!=4)return Fe.msg=Lk[4],-2;if(Fe.avail_out===0)return Fe.msg=Lk[7],-5;if(t=Fe,Gt=o,o=st,n==W7&&($e=j7+(s-8<<4)<<8,St=(_-1&255)>>1,St>3&&(St=3),$e|=St<<6,v!==0&&($e|=XJe),$e+=31-$e%31,n=Bk,Me($e)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&&st<=Gt&&st!=4)return t.msg=Lk[7],-5;if(n==dI&&t.avail_in!==0)return Fe.msg=Lk[7],-5;if(t.avail_in!==0||R!==0||st!=0&&n!=dI){switch(Tn=-1,eh[_].func){case ihe:Tn=Wo(st);break;case kk:Tn=ea(st);break;case hb:Tn=ys(st);break;default:}if((Tn==fI||Tn==Fk)&&(n=dI),Tn==Hf||Tn==fI)return t.avail_out===0&&(o=-1),0;if(Tn==Nk){if(st==1)_t();else if(Te(0,0,!1),st==3)for(tt=0;tt<g;tt++)h[tt]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return st!=4?0:1}}function ohe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}ohe.prototype={deflateInit(e,t){let n=this;return n.dstate=new ZJe,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function rhe(e){let t=this,n=new ohe,i=QJe(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,p=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(x){f.set(x,p),p+=x.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(p){c.set(p,u),u+=p.length}),c}}function QJe(e){return e+5*(Math.floor(e/16383)+1)}var Cu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],She=1440,JJe=0,eet=4,tet=9,net=5,iet=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],oet=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],ret=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],set=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],aet=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],cet=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Ry=15;function $7(){let e=this,t,n,i,o,r,s;function a(u,f,h,p,g,m,x,b,T,C,A){let E,v,D,R,O,M,N,_,S,w,I,L,B,H,V;w=0,O=h;do i[u[f+w]]++,w++,O--;while(O!==0);if(i[0]==h)return x[0]=-1,b[0]=0,0;for(_=b[0],M=1;M<=Ry&&i[M]===0;M++);for(N=M,_<M&&(_=M),O=Ry;O!==0&&i[O]===0;O--);for(D=O,_>O&&(_=O),b[0]=_,H=1<<M;M<O;M++,H<<=1)if((H-=i[M])<0)return-3;if((H-=i[O])<0)return-3;for(i[O]+=H,s[1]=M=0,w=1,B=2;--O!==0;)s[B]=M+=i[w],B++,w++;O=0,w=0;do(M=u[f+w])!==0&&(A[s[M]++]=O),w++;while(++O<h);for(h=s[D],s[0]=O=0,w=0,R=-1,L=-_,r[0]=0,I=0,V=0;N<=D;N++)for(E=i[N];E--!==0;){for(;N>L+_;){if(R++,L+=_,V=D-L,V=V>_?_:V,(v=1<<(M=N-L))>E+1&&(v-=E+1,B=N,M<V))for(;++M<V&&!((v<<=1)<=i[++B]);)v-=i[B];if(V=1<<M,C[0]+V>She)return-3;r[R]=I=C[0],C[0]+=V,R!==0?(s[R]=O,o[0]=M,o[1]=_,M=O>>>L-_,o[2]=I-r[R-1]-M,T.set(o,(r[R-1]+M)*3)):x[0]=I}for(o[1]=N-L,w>=h?o[0]=192:A[w]<p?(o[0]=A[w]<256?0:96,o[2]=A[w++]):(o[0]=m[A[w]-p]+16+64,o[2]=g[A[w++]-p]),v=1<<N-L,M=O>>>L;M<V;M+=v)T.set(o,(I+M)*3);for(M=1<<N-1;(O&M)!==0;M>>>=1)O^=M;for(O^=M,S=(1<<L)-1;(O&S)!=s[R];)R--,L-=_,S=(1<<L)-1}return H!==0&&D!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(Ry+1),o=[],r=new Int32Array(Ry),s=new Int32Array(Ry+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<Ry+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,Ry),0),s.set(i.subarray(0,Ry+1),0)}e.inflate_trees_bits=function(u,f,h,p,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,p,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,p,g,m,x,b,T){let C;return c(288),t[0]=0,C=a(h,0,u,257,ret,set,m,p,b,t,n),C!=0||p[0]===0?(C==-3?T.msg="oversubscribed literal/length tree":C!=-4&&(T.msg="incomplete literal/length tree",C=-3),C):(c(288),C=a(h,u,f,0,aet,cet,x,g,b,t,n),C!=0||g[0]===0&&u>257?(C==-3?T.msg="oversubscribed distance tree":C==-5?(T.msg="incomplete distance tree",C=-3):C!=-4&&(T.msg="empty distance tree with lengths",C=-3),C):0)}}$7.inflate_trees_fixed=function(e,t,n,i){return e[0]=tet,t[0]=net,n[0]=iet,i[0]=oet,0};var Hk=0,she=1,ahe=2,che=3,lhe=4,uhe=5,fhe=6,Y7=7,dhe=8,Gk=9;function uet(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,p=0,g,m=0;function x(b,T,C,A,E,v,D,R){let O,M,N,_,S,w,I,L,B,H,V,G,k,W,q,J;I=R.next_in_index,L=R.avail_in,S=D.bitb,w=D.bitk,B=D.write,H=B<D.read?D.read-B-1:D.end-B,V=Cu[b],G=Cu[T];do{for(;w<20;)L--,S|=(R.read_byte(I++)&255)<<w,w+=8;if(O=S&V,M=C,N=A,J=(N+O)*3,(_=M[J])===0){S>>=M[J+1],w-=M[J+1],D.win[B++]=M[J+2],H--;continue}do{if(S>>=M[J+1],w-=M[J+1],(_&16)!==0){for(_&=15,k=M[J+2]+(S&Cu[_]),S>>=_,w-=_;w<15;)L--,S|=(R.read_byte(I++)&255)<<w,w+=8;O=S&G,M=E,N=v,J=(N+O)*3,_=M[J];do if(S>>=M[J+1],w-=M[J+1],(_&16)!==0){for(_&=15;w<_;)L--,S|=(R.read_byte(I++)&255)<<w,w+=8;if(W=M[J+2]+(S&Cu[_]),S>>=_,w-=_,H-=k,B>=W)q=B-W,B-q>0&&2>B-q?(D.win[B++]=D.win[q++],D.win[B++]=D.win[q++],k-=2):(D.win.set(D.win.subarray(q,q+2),B),B+=2,q+=2,k-=2);else{q=B-W;do q+=D.end;while(q<0);if(_=D.end-q,k>_){if(k-=_,B-q>0&&_>B-q)do D.win[B++]=D.win[q++];while(--_!==0);else D.win.set(D.win.subarray(q,q+_),B),B+=_,q+=_,_=0;q=0}}if(B-q>0&&k>B-q)do D.win[B++]=D.win[q++];while(--k!==0);else D.win.set(D.win.subarray(q,q+k),B),B+=k,q+=k,k=0;break}else if((_&64)===0)O+=M[J+2],O+=S&Cu[_],J=(N+O)*3,_=M[J];else return R.msg="invalid distance code",k=R.avail_in-L,k=w>>3<k?w>>3:k,L+=k,I-=k,w-=k<<3,D.bitb=S,D.bitk=w,R.avail_in=L,R.total_in+=I-R.next_in_index,R.next_in_index=I,D.write=B,-3;while(!0);break}if((_&64)===0){if(O+=M[J+2],O+=S&Cu[_],J=(N+O)*3,(_=M[J])===0){S>>=M[J+1],w-=M[J+1],D.win[B++]=M[J+2],H--;break}}else return(_&32)!==0?(k=R.avail_in-L,k=w>>3<k?w>>3:k,L+=k,I-=k,w-=k<<3,D.bitb=S,D.bitk=w,R.avail_in=L,R.total_in+=I-R.next_in_index,R.next_in_index=I,D.write=B,1):(R.msg="invalid literal/length code",k=R.avail_in-L,k=w>>3<k?w>>3:k,L+=k,I-=k,w-=k<<3,D.bitb=S,D.bitk=w,R.avail_in=L,R.total_in+=I-R.next_in_index,R.next_in_index=I,D.write=B,-3)}while(!0)}while(H>=258&&L>=10);return k=R.avail_in-L,k=w>>3<k?w>>3:k,L+=k,I-=k,w-=k<<3,D.bitb=S,D.bitk=w,R.avail_in=L,R.total_in+=I-R.next_in_index,R.next_in_index=I,D.write=B,0}e.init=function(b,T,C,A,E,v){t=Hk,u=b,f=T,h=C,p=A,g=E,m=v,i=null},e.proc=function(b,T,C){let A,E,v,D=0,R=0,O=0,M,N,_,S;for(O=T.next_in_index,M=T.avail_in,D=b.bitb,R=b.bitk,N=b.write,_=N<b.read?b.read-N-1:b.end-N;;)switch(t){case Hk:if(_>=258&&M>=10&&(b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,C=x(u,f,h,p,g,m,b,T),O=T.next_in_index,M=T.avail_in,D=b.bitb,R=b.bitk,N=b.write,_=N<b.read?b.read-N-1:b.end-N,C!=0)){t=C==1?Y7:Gk;break}r=u,i=h,o=p,t=she;case she:for(A=r;R<A;){if(M!==0)C=0;else return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);M--,D|=(T.read_byte(O++)&255)<<R,R+=8}if(E=(o+(D&Cu[A]))*3,D>>>=i[E+1],R-=i[E+1],v=i[E],v===0){s=i[E+2],t=fhe;break}if((v&16)!==0){a=v&15,n=i[E+2],t=ahe;break}if((v&64)===0){r=v,o=E/3+i[E+2];break}if((v&32)!==0){t=Y7;break}return t=Gk,T.msg="invalid literal/length code",C=-3,b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);case ahe:for(A=a;R<A;){if(M!==0)C=0;else return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);M--,D|=(T.read_byte(O++)&255)<<R,R+=8}n+=D&Cu[A],D>>=A,R-=A,r=f,i=g,o=m,t=che;case che:for(A=r;R<A;){if(M!==0)C=0;else return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);M--,D|=(T.read_byte(O++)&255)<<R,R+=8}if(E=(o+(D&Cu[A]))*3,D>>=i[E+1],R-=i[E+1],v=i[E],(v&16)!==0){a=v&15,c=i[E+2],t=lhe;break}if((v&64)===0){r=v,o=E/3+i[E+2];break}return t=Gk,T.msg="invalid distance code",C=-3,b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);case lhe:for(A=a;R<A;){if(M!==0)C=0;else return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);M--,D|=(T.read_byte(O++)&255)<<R,R+=8}c+=D&Cu[A],D>>=A,R-=A,t=uhe;case uhe:for(S=N-c;S<0;)S+=b.end;for(;n!==0;){if(_===0&&(N==b.end&&b.read!==0&&(N=0,_=N<b.read?b.read-N-1:b.end-N),_===0&&(b.write=N,C=b.inflate_flush(T,C),N=b.write,_=N<b.read?b.read-N-1:b.end-N,N==b.end&&b.read!==0&&(N=0,_=N<b.read?b.read-N-1:b.end-N),_===0)))return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);b.win[N++]=b.win[S++],_--,S==b.end&&(S=0),n--}t=Hk;break;case fhe:if(_===0&&(N==b.end&&b.read!==0&&(N=0,_=N<b.read?b.read-N-1:b.end-N),_===0&&(b.write=N,C=b.inflate_flush(T,C),N=b.write,_=N<b.read?b.read-N-1:b.end-N,N==b.end&&b.read!==0&&(N=0,_=N<b.read?b.read-N-1:b.end-N),_===0)))return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);C=0,b.win[N++]=s,_--,t=Hk;break;case Y7:if(R>7&&(R-=8,M++,O--),b.write=N,C=b.inflate_flush(T,C),N=b.write,_=N<b.read?b.read-N-1:b.end-N,b.read!=b.write)return b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);t=dhe;case dhe:return C=1,b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);case Gk:return C=-3,b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C);default:return C=-2,b.bitb=D,b.bitk=R,T.avail_in=M,T.total_in+=O-T.next_in_index,T.next_in_index=O,b.write=N,b.inflate_flush(T,C)}},e.free=function(){}}var hhe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],TE=0,X7=1,mhe=2,phe=3,_he=4,ghe=5,Wk=6,jk=7,yhe=8,mb=9;function fet(e,t){let n=this,i=TE,o=0,r=0,s=0,a,c=[0],u=[0],f=new uet,h=0,p=new Int32Array(She*3),g=0,m=new $7;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(x,b){b&&(b[0]=g),i==Wk&&f.free(x),i=TE,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(x,b){let T,C,A;return C=x.next_out_index,A=n.read,T=(A<=n.write?n.write:n.end)-A,T>x.avail_out&&(T=x.avail_out),T!==0&&b==-5&&(b=0),x.avail_out-=T,x.total_out+=T,x.next_out.set(n.win.subarray(A,A+T),C),C+=T,A+=T,A==n.end&&(A=0,n.write==n.end&&(n.write=0),T=n.write-A,T>x.avail_out&&(T=x.avail_out),T!==0&&b==-5&&(b=0),x.avail_out-=T,x.total_out+=T,x.next_out.set(n.win.subarray(A,A+T),C),C+=T,A+=T),x.next_out_index=C,n.read=A,b},n.proc=function(x,b){let T,C,A,E,v,D,R,O;for(E=x.next_in_index,v=x.avail_in,C=n.bitb,A=n.bitk,D=n.write,R=D<n.read?n.read-D-1:n.end-D;;){let M,N,_,S,w,I,L,B;switch(i){case TE:for(;A<3;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}switch(T=C&7,h=T&1,T>>>1){case 0:C>>>=3,A-=3,T=A&7,C>>>=T,A-=T,i=X7;break;case 1:M=[],N=[],_=[[]],S=[[]],$7.inflate_trees_fixed(M,N,_,S),f.init(M[0],N[0],_[0],0,S[0],0),C>>>=3,A-=3,i=Wk;break;case 2:C>>>=3,A-=3,i=phe;break;case 3:return C>>>=3,A-=3,i=mb,x.msg="invalid block type",b=-3,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b)}break;case X7:for(;A<32;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}if((~C>>>16&65535)!=(C&65535))return i=mb,x.msg="invalid stored block lengths",b=-3,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);o=C&65535,C=A=0,i=o!==0?mhe:h!==0?jk:TE;break;case mhe:if(v===0||R===0&&(D==n.end&&n.read!==0&&(D=0,R=D<n.read?n.read-D-1:n.end-D),R===0&&(n.write=D,b=n.inflate_flush(x,b),D=n.write,R=D<n.read?n.read-D-1:n.end-D,D==n.end&&n.read!==0&&(D=0,R=D<n.read?n.read-D-1:n.end-D),R===0)))return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);if(b=0,T=o,T>v&&(T=v),T>R&&(T=R),n.win.set(x.read_buf(E,T),D),E+=T,v-=T,D+=T,R-=T,(o-=T)!==0)break;i=h!==0?jk:TE;break;case phe:for(;A<14;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}if(r=T=C&16383,(T&31)>29||(T>>5&31)>29)return i=mb,x.msg="too many length or distance symbols",b=-3,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);if(T=258+(T&31)+(T>>5&31),!a||a.length<T)a=[];else for(O=0;O<T;O++)a[O]=0;C>>>=14,A-=14,s=0,i=_he;case _he:for(;s<4+(r>>>10);){for(;A<3;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}a[hhe[s++]]=C&7,C>>>=3,A-=3}for(;s<19;)a[hhe[s++]]=0;if(c[0]=7,T=m.inflate_trees_bits(a,c,u,p,x),T!=0)return b=T,b==-3&&(a=null,i=mb),n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);s=0,i=ghe;case ghe:for(;T=r,!(s>=258+(T&31)+(T>>5&31));){let H,V;for(T=c[0];A<T;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}if(T=p[(u[0]+(C&Cu[T]))*3+1],V=p[(u[0]+(C&Cu[T]))*3+2],V<16)C>>>=T,A-=T,a[s++]=V;else{for(O=V==18?7:V-14,H=V==18?11:3;A<T+O;){if(v!==0)b=0;else return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);v--,C|=(x.read_byte(E++)&255)<<A,A+=8}if(C>>>=T,A-=T,H+=C&Cu[O],C>>>=O,A-=O,O=s,T=r,O+H>258+(T&31)+(T>>5&31)||V==16&&O<1)return a=null,i=mb,x.msg="invalid bit length repeat",b=-3,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);V=V==16?a[O-1]:0;do a[O++]=V;while(--H!==0);s=O}}if(u[0]=-1,w=[],I=[],L=[],B=[],w[0]=9,I[0]=6,T=r,T=m.inflate_trees_dynamic(257+(T&31),1+(T>>5&31),a,w,I,L,B,p,x),T!=0)return T==-3&&(a=null,i=mb),b=T,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);f.init(w[0],I[0],p,L[0],p,B[0]),i=Wk;case Wk:if(n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,(b=f.proc(n,x,b))!=1)return n.inflate_flush(x,b);if(b=0,f.free(x),E=x.next_in_index,v=x.avail_in,C=n.bitb,A=n.bitk,D=n.write,R=D<n.read?n.read-D-1:n.end-D,h===0){i=TE;break}i=jk;case jk:if(n.write=D,b=n.inflate_flush(x,b),D=n.write,R=D<n.read?n.read-D-1:n.end-D,n.read!=n.write)return n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);i=yhe;case yhe:return b=1,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);case mb:return b=-3,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b);default:return b=-2,n.bitb=C,n.bitk=A,x.avail_in=v,x.total_in+=E-x.next_in_index,x.next_in_index=E,n.write=D,n.inflate_flush(x,b)}}},n.free=function(x){n.reset(x,null),n.win=null,p=null},n.set_dictionary=function(x,b,T){n.win.set(x.subarray(b,b+T),0),n.read=n.write=T},n.sync_point=function(){return i==X7?1:0}}var det=32,het=8,met=0,xhe=1,bhe=2,The=3,Che=4,Ahe=5,K7=6,hI=7,Ehe=12,My=13,pet=[0,0,255,255];function _et(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=hI,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new fet(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==eet?-5:0,o=-5;;)switch(s.mode){case met:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=het){s.mode=My,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=My,n.msg="invalid win size",s.marker=5;break}s.mode=xhe;case xhe:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=My,n.msg="incorrect header check",s.marker=5;break}if((r&det)===0){s.mode=hI;break}s.mode=bhe;case bhe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=The;case The:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=Che;case Che:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Ahe;case Ahe:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=K7,2);case K7:return s.mode=My,n.msg="need dictionary",s.marker=0,-2;case hI:if(o=s.blocks.proc(n,o),o==-3){s.mode=My,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Ehe;case Ehe:return n.avail_in=0,1;case My:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=K7)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=hI,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=My&&(c.mode=My,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==pet[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=hI,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function vhe(){}vhe.prototype={inflateInit(e){let t=this;return t.istate=new _et,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function whe(e){let t=this,n=new vhe,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=JJe,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,p=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=p&&(c(n.next_in_index),p=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(x){h.set(x,g),g+=x.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var pb="/",Z7=new Date(2107,11,31),Q7=new Date(1980,0,1),Ei=void 0,Au="undefined",__="function";var mI=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var get=64,Dhe=2;try{typeof navigator!=Au&&navigator.hardwareConcurrency&&(Dhe=navigator.hardwareConcurrency)}catch{}var yet={chunkSize:512*1024,maxWorkers:Dhe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:Ei,CompressionStreamNative:typeof CompressionStream!=Au&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=Au&&DecompressionStream},Ny=Object.assign({},yet);function pI(){return Ny}function qk(e){return Math.max(e.chunkSize,get)}function CE(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(Ly("baseURL",t),Ly("chunkSize",n),Ly("maxWorkers",i),Ly("terminateWorkerTimeout",o),Ly("useCompressionStream",r),Ly("useWebWorkers",s),a&&(Ny.CompressionStream=new mI(a)),c&&(Ny.DecompressionStream=new mI(c)),Ly("CompressionStream",u),Ly("DecompressionStream",f),h!==Ei){let{deflate:p,inflate:g}=h;if((p||g)&&(Ny.workerScripts||(Ny.workerScripts={})),p){if(!Array.isArray(p))throw new Error("workerScripts.deflate must be an array");Ny.workerScripts.deflate=p}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");Ny.workerScripts.inflate=g}}}function Ly(e,t){t!==Ei&&(Ny[e]=t)}var Ihe=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;Ihe[e]=t}var g_=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^Ihe[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var _I=class extends TransformStream{constructor(){let t,n=new g_;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function AE(e){if(typeof TextEncoder==Au){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var $c={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=$c.getPartial(n);return i===32?e.concat(t):$c._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+$c.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=$c.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=$c.getPartial(o);return i.push($c.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},gI={bytes:{fromBits(e){let n=$c.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push($c.partial(8*(n&3),i)),t}}},Phe={};Phe.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=gI.utf8String.toBits(e));let n=t._buffer=$c.concat(t._buffer,e),i=t._length,o=t._length=i+$c.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=$c.concat(t,[$c.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var J7={};J7.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let p=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=p=p<<24^p>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],p=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],x=4,b,T,C;for(let A=0;A<i;A++)b=s[h>>>24]^a[p>>16&255]^c[g>>8&255]^u[m&255]^n[x],T=s[p>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[x+1],C=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[p&255]^n[x+2],m=s[m>>>24]^a[h>>16&255]^c[p>>8&255]^u[g&255]^n[x+3],x+=4,h=b,p=T,g=C;for(let A=0;A<4;A++)o[t?3&-A:A]=f[h>>>24]<<24^f[p>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[x++],b=h,h=p,p=g,g=m,m=b;return o}};var Ohe={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},eq={};eq.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=$c.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return $c.clamp(t,o)}};var Fy={importKey(e){return new Fy.hmacSha1(gI.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),p=0,g=$c;for(t=gI.bytes.toBits(t),u=1;p<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;p<(o||1)&&a<r.length;a++)h.setInt32(p,r[a]),p+=4}return f.slice(0,i/8)}};Fy.hmacSha1=class{constructor(e){let t=this,n=t._hash=Phe.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var xet=typeof crypto!=Au&&typeof crypto.getRandomValues==__,By="Invalid password",_b="Invalid signature",y_="zipjs-abort-check-password";function Yk(e){return xet?crypto.getRandomValues(e):Ohe.getRandomValues(e)}var EE=16,bet="raw",Lhe={name:"PBKDF2"},Tet={name:"HMAC"},Cet="SHA-1",Aet=Object.assign({hash:Tet},Lhe),tq=Object.assign({iterations:1e3,hash:{name:Cet}},Lhe),Eet=["deriveBits"],xI=[8,12,16],yI=[16,24,32],ky=10,vet=[0,0,0,0],$k=typeof crypto!=Au,CI=$k&&crypto.subtle,Nhe=$k&&typeof CI!=Au,Dm=gI.bytes,wet=J7.aes,Det=eq.ctrGladman,Iet=Fy.hmacSha1,Rhe=$k&&Nhe&&typeof CI.importKey==__,Mhe=$k&&Nhe&&typeof CI.deriveBits==__,Xk=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:khe(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:p}=c;u?(await Pet(c,f,u,Gf(s,0,xI[f]+2)),s=Gf(s,xI[f]+2),r?a.error(new Error(y_)):h()):await p;let g=new Uint8Array(s.length-ky-(s.length-ky)%EE);a.enqueue(Fhe(c,s,g,0,ky,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let p=Gf(f,0,f.length-ky),g=Gf(f,f.length-ky),m=new Uint8Array;if(p.length){let x=TI(Dm,p);u.update(x);let b=c.update(x);m=bI(Dm,b)}if(a){let x=Gf(bI(Dm,u.digest()),0,ky);for(let b=0;b<ky;b++)if(x[b]!=g[b])throw new Error(_b)}s.enqueue(m)}}})}},Kk=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:khe(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,p=new Uint8Array;c?(p=await Oet(a,u,c),f()):await h;let g=new Uint8Array(p.length+r.length-r.length%EE);g.set(p,0),s.enqueue(Fhe(a,r,g,p.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(TI(Dm,c));a.update(h),f=bI(Dm,h)}o.signature=bI(Dm,a.digest()).slice(0,ky),r.enqueue(nq(f,o.signature))}}}),o=this}};function Fhe(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=nq(c,t),n=Let(n,u-u%EE));let f;for(f=0;f<=u-EE;f+=EE){let h=TI(Dm,Gf(t,f,f+EE));r&&a.update(h);let p=s.update(h);r||a.update(p),n.set(bI(Dm,p),f+i)}return e.pending=Gf(t,f),n}async function Pet(e,t,n,i){let o=await Bhe(e,t,n,Gf(i,0,xI[t])),r=Gf(i,xI[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(By)}async function Oet(e,t,n){let i=Yk(new Uint8Array(xI[t])),o=await Bhe(e,t,n,i);return nq(i,o)}async function Bhe(e,t,n,i){e.password=null;let o=await Ret(bet,n,Aet,!1,Eet),r=await Met(Object.assign({salt:i},tq),o,8*(yI[t]*2+2)),s=new Uint8Array(r),a=TI(Dm,Gf(s,0,yI[t])),c=TI(Dm,Gf(s,yI[t],yI[t]*2)),u=Gf(s,yI[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new Det(new wet(a),Array.from(vet)),hmac:new Iet(c)}),u}async function Ret(e,t,n,i,o){if(Rhe)try{return await CI.importKey(e,t,n,i,o)}catch{return Rhe=!1,Fy.importKey(t)}else return Fy.importKey(t)}async function Met(e,t,n){if(Mhe)try{return await CI.deriveBits(e,t,n)}catch{return Mhe=!1,Fy.pbkdf2(t,e.salt,tq.iterations,n)}else return Fy.pbkdf2(t,e.salt,tq.iterations,n)}function khe(e,t){return t===Ei?AE(e):t}function nq(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Let(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function Gf(e,t,n){return e.subarray(t,n)}function bI(e,t){return e.fromBits(t)}function TI(e,t){return e.toBits(t)}var SE=12,Zk=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Hhe(this,t)},transform(o,r){let s=this;if(s.password){let a=Vhe(s,o.subarray(0,SE));if(s.password=null,a[SE-1]!=s.passwordVerification)throw new Error(By);o=o.subarray(SE)}i?r.error(new Error(y_)):r.enqueue(Vhe(s,o))}})}},Qk=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Hhe(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=Yk(new Uint8Array(SE));c[SE-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(Uhe(r,c),0),a=SE}else s=new Uint8Array(i.length),a=0;s.set(Uhe(r,i),a),o.enqueue(s)}})}};function Vhe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Ghe(e)^t[i],iq(e,n[i]);return n}function Uhe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Ghe(e)^t[i],iq(e,t[i]);return n}function Hhe(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new g_(n[0]),crcKey2:new g_(n[2])});for(let i=0;i<t.length;i++)iq(e,t.charCodeAt(i))}function iq(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=zhe(Math.imul(zhe(i+Whe(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function Ghe(e){let t=e.keys[2]|2;return Whe(Math.imul(t,t^1)>>>8)}function Whe(e){return e&255}function zhe(e){return e&4294967295}var jhe="deflate-raw",Jk=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,p,g,m=qhe(super.readable);(!s||c)&&u&&(p=new _I,m=Im(m,p)),r&&(m=Xhe(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=Im(m,new Qk(t)):(g=new Kk(t),m=Im(m,g))),Yhe(h,m,()=>{let x;s&&!c&&(x=g.signature),(!s||c)&&u&&(x=new DataView(p.value.buffer).getUint32(0)),h.signature=x})}},eV=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,p,g=qhe(super.readable);s&&(r?g=Im(g,new Zk(t)):(p=new Xk(t),g=Im(g,p))),u&&(g=Xhe(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new _I,g=Im(g,h)),Yhe(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(_b)}})}};function qhe(e){return Im(e,new TransformStream({transform(t,n){t&&t.length&&n.enqueue(t)}}))}function Yhe(e,t,n){t=Im(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function Xhe(e,t,n,i,o){try{let r=t&&i?i:o;e=Im(e,new r(jhe,n))}catch{if(t)try{e=Im(e,new o(jhe,n))}catch{return e}else return e}return e}function Im(e,t){return e.pipeThrough(t)}var Khe="message",$he="start",Zhe="pull",oq="data",Qhe="ack",rq="close",iV="deflate",oV="inflate";var tV=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(iV)?r=Jk:o.startsWith(oV)&&(r=eV);let s=0,a=0,c=new r(t,n),u=super.readable,f=new TransformStream({transform(p,g){p&&p.length&&(a+=p.length,g.enqueue(p))},flush(){Object.assign(i,{inputSize:a})}}),h=new TransformStream({transform(p,g){p&&p.length&&(s+=p.length,g.enqueue(p))},flush(){let{signature:p}=c;Object.assign(i,{signature:p,outputSize:s,inputSize:a})}});Object.defineProperty(i,"readable",{get(){return u.pipeThrough(f).pipeThrough(c).pipeThrough(h)}})}},nV=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var tme=typeof Worker!=Au;var vE=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new nV(r.chunkSize)).pipeThrough(new aq(n,s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(p=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=p:(g.terminate(),p()),t.interface=null):p()})},onTaskFinished(){let{resolveTerminated:p}=t;p&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),p()),t.busy=!1,f(t)}}),(a&&tme?Net:nme)(t,r)}},aq=class extends TransformStream{constructor(t,{onstart:n,onprogress:i,size:o,onend:r}){let s=0;super({async start(){n&&await sq(n,o)},async transform(a,c){s+=a.length,i&&await sq(i,s,o),c.enqueue(a)},async flush(){t.size=s,r&&await sq(r,s)}})}};async function sq(e,...t){try{await e(...t)}catch{}}function nme(e,t){return{run:()=>Fet(e,t)}}function Net(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Vet(e.scripts[0],n,e)}catch{return tme=!1,nme(e,t)}Object.assign(e,{worker:o,interface:{run:()=>Bet(e,{chunkSize:i})}})}return e.interface}async function Fet({options:e,readable:t,writable:n,onTaskFinished:i},o){try{let r=new tV(e,o);await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}finally{i()}}async function Bet(e,t){let n,i,o=new Promise((p,g)=>{n=p,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=ket(e.writable),f=rV({type:$he,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function ket(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var Jhe=!0,eme=!0;function Vet(e,t,n){let i={type:"module"},o,r;typeof e==__&&(e=e());try{o=new URL(e,t)}catch{o=e}if(Jhe)try{r=new Worker(o)}catch{Jhe=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(Khe,s=>Uet(s,n)),r}function rV(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&eme?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{eme=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Uet({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:x,name:b}=s,T=new Error(g);Object.assign(T,{stack:m,code:x,name:b}),p(T)}else{if(n==Zhe){let{value:g,done:m}=await a.read();rV({type:oq,value:g,done:m,messageId:o},t)}n==oq&&(await c.ready,await c.write(new Uint8Array(i)),rV({type:Qhe,messageId:o},t)),n==rq&&p(null,r)}}catch(g){rV({type:rq,messageId:o},t),p(g)}function p(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var gb=[],cq=[];var ime=0;async function sV(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:p}=i;t.transferStreams=o||o===Ei;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===Ei&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===Ei&&i.useCompressionStream,(await m()).run();async function m(){let b=gb.find(T=>!T.busy);if(b)return ome(b),new vE(b,e,t,x);if(gb.length<p){let T={indexWorker:ime};return ime++,gb.push(T),new vE(T,e,t,x)}else return new Promise(T=>cq.push({resolve:T,stream:e,workerOptions:t}))}function x(b){if(cq.length){let[{resolve:T,stream:C,workerOptions:A}]=cq.splice(0,1);T(new vE(b,C,A,x))}else b.worker?(ome(b),zet(b,t)):gb=gb.filter(T=>T!=b)}}function zet(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{gb=gb.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function ome(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var Het="Writer iterator completed too soon",Get="text/plain";var Wet="Content-Type";var jet=64*1024,fq="writable",wE=class{constructor(){this.size=0}init(){this.initialized=!0}},aV=class extends wE{get readable(){let t=this,{chunkSize:n=jet}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this;o.enqueue(await La(t,r+c,Math.min(n,s-c),a)),c+n>s?o.close():this.chunkOffset+=n}});return i}},lq=class extends wE{constructor(){super();let t=this,n=new WritableStream({write(i){return t.writeUint8Array(i)}});Object.defineProperty(t,fq,{get(){return n}})}writeUint8Array(){}};var cV=class extends lq{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length>2?n.data+=btoa(o):n.pending=o}getData(){return this.data+btoa(this.pending)}},x_=class extends aV{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},AI=class extends wE{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Wet,t]),Object.defineProperty(n,fq,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},lV=class extends x_{constructor(t){super(new Blob([t],{type:Get}))}},uV=class extends AI{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var uq=class extends aV{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;c>=r[a].size;)c-=r[a].size,a++;let u=r[a],f=u.size;if(c+n<=f)s=await La(u,c,n);else{let h=f-c;s=new Uint8Array(n),s.set(await La(u,c,h)),s.set(await o.readUint8Array(t+h,n-h,i),h)}return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},fV=class extends wE{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.slice(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.slice(h))):await c(f);else{let{value:p,done:g}=await t.next();if(g&&!p)throw new Error(Het);o=p,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await Om(o),r=p.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,fq,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){r.size=o.size,await s.close()}}};async function Om(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function dV(e){return Array.isArray(e)&&(e=new uq(e)),e instanceof ReadableStream&&(e={readable:e}),e}function hV(e){e.writable===Ei&&typeof e.next==__&&(e=new fV(e)),e instanceof WritableStream&&(e={writable:e});let{writable:t}=e;return t.size===Ei&&(t.size=0),e instanceof fV||Object.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}function La(e,t,n,i){return e.readUint8Array(t,n,i)}var rme="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),qet=rme.length==256;function sme(e){if(qet){let t="";for(let n=0;n<e.length;n++)t+=rme[e[n]];return t}else return new TextDecoder().decode(e)}function EI(e,t){return t&&t.trim().toLowerCase()=="cp437"?sme(e):new TextDecoder(t).decode(e)}var dq="filename",hq="rawFilename",mq="comment",pq="rawComment",_q="uncompressedSize",gq="compressedSize",yq="offset",mV="diskNumberStart",DE="lastModDate",pV="rawLastModDate",SI="lastAccessDate",ame="rawLastAccessDate",vI="creationDate",cme="rawCreationDate",xq="internalFileAttribute",bq="internalFileAttributes",Tq="externalFileAttribute",Cq="externalFileAttributes",Aq="msDosCompatible",_V="zip64",Eq="encrypted",Sq="version",vq="versionMadeBy",wq="zipCrypto",Dq="directory",Iq="executable",Yet=[dq,hq,gq,_q,DE,pV,mq,pq,SI,vI,yq,mV,mV,xq,bq,Tq,Cq,Aq,_V,Eq,Sq,vq,wq,Dq,Iq,"bitFlag","signature","filenameUTF8","commentUTF8","compressionMethod","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],Vy=class{constructor(t){Yet.forEach(n=>this[n]=t[n])}};var Pq="File format is not recognized",Zet="End of central directory not found",Qet="End of Zip64 central directory locator not found",Jet="Central directory header not found",ett="Local file header not found",ttt="Zip64 extra field not found",ntt="File contains encrypted entry",itt="Encryption method not supported",lme="Compression method not supported",ume="Split zip file",fme="utf-8",dme="cp437",ott=[[_q,4294967295],[gq,4294967295],[yq,4294967295],[mV,65535]],rtt={[65535]:{getValue:ds,bytes:4},[4294967295]:{getValue:gV,bytes:8}},vV=class{constructor(t,n={}){Object.assign(this,{reader:dV(t),options:n,config:pI()})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await Om(i),(i.size===Ei||!i.readUint8Array)&&(i=new x_(await new Response(i.readable).blob()),await Om(i)),i.size<22)throw new Error(Pq);i.chunkSize=qk(o);let r=await utt(i,101010256,i.size,22,65535*16);if(!r){let N=await La(i,0,4),_=ya(N);throw ds(_)==134695760?new Error(ume):new Error(Zet)}let s=ya(r),a=ds(s,12),c=ds(s,16),u=r.offset,f=ga(s,20),h=u+22+f,p=ga(s,4),g=i.lastDiskNumber||0,m=ga(s,6),x=ga(s,8),b=0,T=0;if(c==4294967295||a==4294967295||x==65535||m==65535){let N=await La(i,r.offset-20,20),_=ya(N);if(ds(_,0)==117853008){c=gV(_,8);let S=await La(i,c,56,-1),w=ya(S),I=r.offset-20-56;if(ds(w,0)!=101075792&&c!=I){let L=c;c=I,b=c-L,S=await La(i,c,56,-1),w=ya(S)}if(ds(w,0)!=101075792)throw new Error(Qet);p==65535&&(p=ds(w,16)),m==65535&&(m=ds(w,20)),x==65535&&(x=gV(w,32)),a==4294967295&&(a=gV(w,40)),c-=a}}if(c>=i.size&&(b=i.size-c-a-22,c=i.size-a-22),g!=p)throw new Error(ume);if(c<0)throw new Error(Pq);let C=0,A=await La(i,c,a,m),E=ya(A);if(a){let N=r.offset-a;if(ds(E,C)!=33639248&&c!=N){let _=c;c=N,b+=c-_,A=await La(i,c,a,m),E=ya(A)}}let v=r.offset-c-(i.lastDiskOffset||0);if(a!=v&&v>=0&&(a=v,A=await La(i,c,a,m),E=ya(A)),c<0||c>=i.size)throw new Error(Pq);let D=Zc(n,t,"filenameEncoding"),R=Zc(n,t,"commentEncoding");for(let N=0;N<x;N++){let _=new Rq(i,o,n.options);if(ds(E,C)!=33639248)throw new Error(Jet);mme(_,E,C+6);let S=!!_.bitFlag.languageEncodingFlag,w=C+46,I=w+_.filenameLength,L=I+_.extraFieldLength,B=ga(E,C+4),H=B>>8==0,V=B>>8==3,G=A.subarray(w,I),k=ga(E,C+32),W=L+k,q=A.subarray(L,W),J=S,j=S,K=ds(E,C+38),Q=H&&(IE(E,C+38)&16)==16||V&&(K>>16&16384)==16384||G.length&&G[G.length-1]==pb.charCodeAt(0),he=V&&(K>>16&73)==73,ye=ds(E,C+42)+b;Object.assign(_,{versionMadeBy:B,msDosCompatible:H,compressedSize:0,uncompressedSize:0,commentLength:k,directory:Q,offset:ye,diskNumberStart:ga(E,C+34),internalFileAttributes:ga(E,C+36),externalFileAttributes:K,rawFilename:G,filenameUTF8:J,commentUTF8:j,rawExtraField:A.subarray(I,L),executable:he}),_.internalFileAttribute=_.internalFileAttributes,_.externalFileAttribute=_.externalFileAttributes;let re=Zc(n,t,"decodeText")||EI,_e=J?fme:D||dme,be=j?fme:R||dme,we=re(G,_e);we===Ei&&(we=EI(G,_e));let De=re(q,be);De===Ei&&(De=EI(q,be)),Object.assign(_,{rawComment:q,filename:we,comment:De,directory:Q||we.endsWith(pb)}),T=Math.max(ye,T),pme(_,_,E,C+6),_.zipCrypto=_.encrypted&&!_.extraFieldAES;let Me=new Vy(_);Me.getData=(rt,Ye)=>_.getData(rt,Me,Ye),C=W;let{onprogress:Re}=t;if(Re)try{await Re(N+1,x,new Vy(_))}catch{}yield Me}let O=Zc(n,t,"extractPrependedData"),M=Zc(n,t,"extractAppendedData");return O&&(n.prependedData=T>0?await La(i,0,T):new Uint8Array),n.comment=f?await La(i,u+22,f):new Uint8Array,M&&(n.appendedData=h<i.size?await La(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var Rq=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i={}){let o=this,{reader:r,offset:s,diskNumberStart:a,extraFieldAES:c,compressionMethod:u,config:f,bitFlag:h,signature:p,rawLastModDate:g,uncompressedSize:m,compressedSize:x}=o,b=n.localDirectory={},T=await La(r,s,30,a),C=ya(T),A=Zc(o,i,"password"),E=Zc(o,i,"rawPassword"),v=Zc(o,i,"passThrough");if(A=A&&A.length&&A,E=E&&E.length&&E,c&&c.originalCompressionMethod!=99)throw new Error(lme);if(u!=0&&u!=8&&!v)throw new Error(lme);if(ds(C,0)!=67324752)throw new Error(ett);mme(b,C,4),b.rawExtraField=b.extraFieldLength?await La(r,s+30+b.filenameLength,b.extraFieldLength,a):new Uint8Array,pme(o,b,C,4,!0),Object.assign(n,{lastAccessDate:b.lastAccessDate,creationDate:b.creationDate});let D=o.encrypted&&b.encrypted&&!v,R=D&&!c;if(v||(n.zipCrypto=R),D){if(!R&&c.strength===Ei)throw new Error(itt);if(!A&&!E)throw new Error(ntt)}let O=s+30+b.filenameLength+b.extraFieldLength,M=x,N=r.readable;Object.assign(N,{diskNumberStart:a,offset:O,size:M});let _=Zc(o,i,"signal"),S=Zc(o,i,"checkPasswordOnly");S&&(t=new WritableStream),t=hV(t),await Om(t,v?x:m);let{writable:w}=t,{onstart:I,onprogress:L,onend:B}=i,H={options:{codecType:oV,password:A,rawPassword:E,zipCrypto:R,encryptionStrength:c&&c.strength,signed:Zc(o,i,"checkSignature")&&!v,passwordVerification:R&&(h.dataDescriptor?g>>>8&255:p>>>24&255),signature:p,compressed:u!=0&&!v,encrypted:o.encrypted&&!v,useWebWorkers:Zc(o,i,"useWebWorkers"),useCompressionStream:Zc(o,i,"useCompressionStream"),transferStreams:Zc(o,i,"transferStreams"),checkPasswordOnly:S},config:f,streamOptions:{signal:_,size:M,onstart:I,onprogress:L,onend:B}},V=0;try{({outputSize:V}=await sV({readable:N,writable:w},H))}catch(G){if(!S||G.message!=y_)throw G}finally{let G=Zc(o,i,"preventClose");w.size+=V,!G&&!w.locked&&await w.getWriter().close()}return S?Ei:t.getData?t.getData():w}};function mme(e,t,n){let i=e.rawBitFlag=ga(t,n+2),o=(i&1)==1,r=ds(t,n+6);Object.assign(e,{encrypted:o,version:ga(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:ftt(r),filenameLength:ga(t,n+22),extraFieldLength:ga(t,n+24)})}function pme(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=ya(new Uint8Array(r)),c=0;try{for(;c<r.length;){let T=ga(a,c),C=ga(a,c+2);s.set(T,{type:T,data:r.slice(c+4,c+4+C)}),c+=4+C}}catch{}let u=ga(n,i+4);Object.assign(t,{signature:ds(n,i+10),uncompressedSize:ds(n,i+18),compressedSize:ds(n,i+14)});let f=s.get(1);f&&(stt(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(hme(h,dq,hq,t,e),t.extraFieldUnicodePath=h);let p=s.get(25461);p&&(hme(p,mq,pq,t,e),t.extraFieldUnicodeComment=p);let g=s.get(39169);g?(att(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(ctt(m,t),t.extraFieldNTFS=m);let x=s.get(21589);x&&(ltt(x,t,o),t.extraFieldExtendedTimestamp=x);let b=s.get(6534);b&&(t.extraFieldUSDZ=b)}function stt(e,t){t.zip64=!0;let n=ya(e.data),i=ott.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=rtt[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(ttt)}}function hme(e,t,n,i,o){let r=ya(e.data),s=new g_;s.append(o[n]);let a=ya(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=ds(r,1);Object.assign(e,{version:IE(r,0),[t]:EI(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==ds(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function att(e,t,n){let i=ya(e.data),o=IE(i,4);Object.assign(e,{vendorVersion:IE(i,0),vendorId:IE(i,2),strength:o,originalCompressionMethod:n,compressionMethod:ga(i,5)}),t.compressionMethod=e.compressionMethod}function ctt(e,t){let n=ya(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=ga(n,i),s=ga(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=ya(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=Oq(s),f=Oq(a),h=Oq(c),p={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,p),Object.assign(t,p)}}catch{}}function ltt(e,t,n){let i=ya(e.data),o=IE(i,0),r=[],s=[];n?((o&1)==1&&(r.push(DE),s.push(pV)),(o&2)==2&&(r.push(SI),s.push(ame)),(o&4)==4&&(r.push(vI),s.push(cme))):e.data.length>=5&&(r.push(DE),s.push(pV));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=ds(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function utt(e,t,n,i,o){let r=new Uint8Array(4),s=ya(r);dtt(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await La(e,f,u);for(let p=h.length-i;p>=0;p--)if(h[p]==r[0]&&h[p+1]==r[1]&&h[p+2]==r[2]&&h[p+3]==r[3])return{offset:f+p,buffer:h.slice(p,p+i).buffer}}}function Zc(e,t,n){return t[n]===Ei?e.options[n]:t[n]}function ftt(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function Oq(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function IE(e,t){return e.getUint8(t)}function ga(e,t){return e.getUint16(t,!0)}function ds(e,t){return e.getUint32(t,!0)}function gV(e,t){return Number(e.getBigUint64(t,!0))}function dtt(e,t,n){e.setUint32(t,n,!0)}function ya(e){return new DataView(e.buffer)}var _tt="File already exists",gtt="Zip file comment exceeds 64KB",ytt="File entry comment exceeds 64KB",xtt="File entry name exceeds 64KB",xme="Version exceeds 65535",btt="The strength must equal 1, 2, or 3",Ttt="Extra field type exceeds 65535",Ctt="Extra field data exceeds 64KB",Yq="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Att="Undefined uncompressed size",bme=new Uint8Array([7,0,2,0,65,69,3,0,0]),Wq=0,Tme=[],IV=class{constructor(t,n={}){t=hV(t);let i=t.availableSize!==Ei&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==Ei&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:pI(),files:new Map,filenames:new Set,offset:n.offset===Ei?t.writable.size:n.offset,pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;Wq<s.maxWorkers?Wq++:await new Promise(c=>Tme.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(_tt);return o.filenames.add(t),a=Ett(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=Tme.shift();c?c():Wq--}}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Mtt(this,t,n),qi(i,n,"preventClose")||await s.getWriter().close(),r.getData?r.getData():s}};async function Ett(e,t,n,i){t=t.trim();let o=qi(e,i,Aq),r=qi(e,i,vq,o?20:768),s=qi(e,i,Iq);if(r>65535)throw new Error(xme);let a=qi(e,i,Cq,0);a===0&&(a=qi(e,i,Tq,0)),!i.directory&&t.endsWith(pb)&&(i.directory=!0),qi(e,i,Dq)?(t.endsWith(pb)||(t+=pb),a===0&&(o?a=16:a=16384<<16)):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=qi(e,i,"encodeText",AE),f=u(t);if(f===Ei&&(f=AE(t)),Xi(f)>65535)throw new Error(xtt);let h=i.comment||"",p=u(h);if(p===Ei&&(p=AE(h)),Xi(p)>65535)throw new Error(ytt);let g=qi(e,i,Sq,20);if(g>65535)throw new Error(xme);let m=qi(e,i,DE,new Date),x=qi(e,i,SI),b=qi(e,i,vI),T=qi(e,i,bq,0);T===0&&(T=qi(e,i,xq,0));let C=qi(e,i,"passThrough"),A,E;C||(A=qi(e,i,"password"),E=qi(e,i,"rawPassword"));let v=qi(e,i,"encryptionStrength",3),D=qi(e,i,wq),R=qi(e,i,"extendedTimestamp",!0),O=qi(e,i,"keepOrder",!0),M=qi(e,i,"level"),N=qi(e,i,"useWebWorkers"),_=qi(e,i,"bufferedWrite"),S=qi(e,i,"dataDescriptorSignature",!1),w=qi(e,i,"signal"),I=qi(e,i,"useUnicodeFileNames",!0),L=qi(e,i,"useCompressionStream"),B=qi(e,i,"compressionMethod"),H=qi(e,i,"dataDescriptor",!0),V=qi(e,i,_V);if(!D&&(A!==Ei||E!==Ei)&&!(v>=1&&v<=3))throw new Error(btt);let G=new Uint8Array,{extraField:k}=i;if(k){let Xe=0,_t=0;k.forEach(ft=>Xe+=4+Xi(ft)),G=new Uint8Array(Xe),k.forEach((ft,ht)=>{if(ht>65535)throw new Error(Ttt);if(Xi(ft)>65535)throw new Error(Ctt);Is(G,new Uint16Array([ht]),_t),Is(G,new Uint16Array([Xi(ft)]),_t+2),Is(G,ft,_t+4),_t+=4+Xi(ft)})}let W=0,q=0,J=0;if(C&&({uncompressedSize:J}=i,J===Ei))throw new Error(Att);let j=V===!0;n&&(n=dV(n),await Om(n),C?W=Cme(J):n.size===Ei?(H=!0,(V||V===Ei)&&(V=!0,J=W=4294967296)):(J=n.size,W=Cme(J)));let{diskOffset:K,diskNumber:Q,maxSize:he}=e.writer,ye=j||J>4294967295,re=j||W>4294967295,_e=j||e.offset+e.pendingEntriesSize-K>4294967295,we=qi(e,i,"supportZip64SplitFile",!0)&&j||Q+Math.ceil(e.pendingEntriesSize/he)>65535;if(_e||ye||re||we){if(V===!1||!O)throw new Error(Yq);V=!0}V=V||!1;let De=qi(e,i,Eq),{signature:Me}=i;i=Object.assign({},i,{rawFilename:f,rawComment:p,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:x,creationDate:b,rawExtraField:G,zip64:V,zip64UncompressedSize:ye,zip64CompressedSize:re,zip64Offset:_e,zip64DiskNumberStart:we,password:A,rawPassword:E,level:!L&&e.config.CompressionStream===Ei&&e.config.CompressionStreamNative===Ei?0:M,useWebWorkers:N,encryptionStrength:v,extendedTimestamp:R,zipCrypto:D,bufferedWrite:_,keepOrder:O,useUnicodeFileNames:I,dataDescriptor:H,dataDescriptorSignature:S,signal:w,msDosCompatible:o,internalFileAttribute:T,internalFileAttributes:T,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:L,passThrough:C,encrypted:!!(A&&Xi(A)||E&&Xi(E))||C&&De,signature:Me,compressionMethod:B});let Re=wtt(i),rt=Itt(i),Ye=Xi(Re.localHeaderArray,rt.dataDescriptorArray);q=Ye+W,e.options.usdz&&(q+=q+64),e.pendingEntriesSize+=q;let dt;try{dt=await Stt(e,t,n,{headerInfo:Re,dataDescriptorInfo:rt,metadataSize:Ye},i)}finally{e.pendingEntriesSize-=q}return Object.assign(dt,{name:t,comment:h,extraField:k}),new Vy(dt)}async function Stt(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,{usdz:h}=e.options,p=Array.from(r.values()).pop(),g={},m,x,b,T,C,A,E;r.set(t,g);try{let O;a&&(O=p&&p.lock,v()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(A=new TransformStream,E=new Response(A.readable).blob(),A.writable.size=0,m=!0,e.bufferedWrites++,await Om(s)):(A=s,await D()),await Om(A);let{writable:M}=s,{diskOffset:N}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let S=new Uint8Array(4),w=Na(S);Yi(w,0,134695760),await Rm(M,S),e.offset+=4}h&&Dtt(i,e.offset-N),m||(await O,await R(M));let{diskNumber:_}=s;if(C=!0,g.diskNumberStart=_,g=await vtt(n,A,g,i,e.config,o),C=!1,r.set(t,g),g.filename=t,m){await A.writable.getWriter().close();let S=await E;await O,await D(),T=!0,c||(S=await Ott(g,S,M,o)),await R(M),g.diskNumberStart=s.diskNumber,N=s.diskOffset,await S.stream().pipeTo(M,{preventClose:!0,preventAbort:!0,signal:u}),M.size+=S.size,T=!1}if(g.offset=e.offset-N,g.zip64)Rtt(g,o);else if(g.offset>4294967295)throw new Error(Yq);return e.offset+=g.size,g}catch(O){if(m&&T||!m&&C){if(e.hasCorruptedEntries=!0,O)try{O.corruptedEntry=!0}catch{}m?e.offset+=A.writable.size:e.offset=A.writable.size}throw r.delete(t),O}finally{m&&e.bufferedWrites--,b&&b(),x&&x()}function v(){g.lock=new Promise(O=>b=O)}async function D(){e.writerLocked=!0;let{lockWriter:O}=e;e.lockWriter=new Promise(M=>x=()=>{e.writerLocked=!1,M()}),await O}async function R(O){Xi(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Rm(O,new Uint8Array))}}async function vtt(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{localHeaderArray:f,headerArray:h,lastModDate:p,rawLastModDate:g,encrypted:m,compressed:x,version:b,compressionMethod:T,rawExtraFieldExtendedTimestamp:C,extraFieldExtendedTimestampFlag:A,rawExtraFieldNTFS:E,rawExtraFieldAES:v}=a,{dataDescriptorArray:D}=c,{rawFilename:R,lastAccessDate:O,creationDate:M,password:N,rawPassword:_,level:S,zip64:w,zip64UncompressedSize:I,zip64CompressedSize:L,zip64Offset:B,zip64DiskNumberStart:H,zipCrypto:V,dataDescriptor:G,directory:k,executable:W,versionMadeBy:q,rawComment:J,rawExtraField:j,useWebWorkers:K,onstart:Q,onprogress:he,onend:ye,signal:re,encryptionStrength:_e,extendedTimestamp:be,msDosCompatible:we,internalFileAttributes:De,externalFileAttributes:Me,useCompressionStream:Re,passThrough:rt}=s,Ye={lock:i,versionMadeBy:q,zip64:w,directory:!!k,executable:!!W,filenameUTF8:!0,rawFilename:R,commentUTF8:!0,rawComment:J,rawExtraFieldExtendedTimestamp:C,rawExtraFieldNTFS:E,rawExtraFieldAES:v,rawExtraField:j,extendedTimestamp:be,msDosCompatible:we,internalFileAttributes:De,externalFileAttributes:Me,diskNumberStart:n},{signature:dt,uncompressedSize:Xe}=s,_t=0;rt||(Xe=0);let{writable:ft}=t;if(e){e.chunkSize=qk(r),await Rm(ft,f);let vn=e.readable,tn=vn.size=e.size,Te={options:{codecType:iV,level:S,rawPassword:_,password:N,encryptionStrength:_e,zipCrypto:m&&V,passwordVerification:m&&V&&g>>8&255,signed:!rt,compressed:x&&!rt,encrypted:m&&!rt,useWebWorkers:K,useCompressionStream:Re,transferStreams:!1},config:r,streamOptions:{signal:re,size:tn,onstart:Q,onprogress:he,onend:ye}},Ae=await sV({readable:vn,writable:ft},Te);_t=Ae.outputSize,rt||(Xe=Ae.inputSize,dt=Ae.signature),ft.size+=Xe}else await Rm(ft,f);let ht;if(w){let vn=4;I&&(vn+=8),L&&(vn+=8),B&&(vn+=8),H&&(vn+=4),ht=new Uint8Array(vn)}else ht=new Uint8Array;return Ptt({signature:dt,rawExtraFieldZip64:ht,compressedSize:_t,uncompressedSize:Xe,headerInfo:a,dataDescriptorInfo:c},s),G&&await Rm(ft,D),Object.assign(Ye,{uncompressedSize:Xe,compressedSize:_t,lastModDate:p,rawLastModDate:g,creationDate:M,lastAccessDate:O,encrypted:m,zipCrypto:V,size:u+_t,compressionMethod:T,version:b,headerArray:h,signature:dt,rawExtraFieldZip64:ht,extraFieldExtendedTimestampFlag:A,zip64UncompressedSize:I,zip64CompressedSize:L,zip64Offset:B,zip64DiskNumberStart:H}),Ye}function wtt(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:p,extendedTimestamp:g,encrypted:m}=e,{version:x,compressionMethod:b}=e,T=!f&&(r>0||r===Ei&&b!==0),C;if(m&&!a){C=new Uint8Array(Xi(bme)+2);let B=Na(C);io(B,0,39169),Is(C,bme,2),qq(B,8,p)}else C=new Uint8Array;let A,E,v;if(g){E=new Uint8Array(9+(i?4:0)+(o?4:0));let B=Na(E);io(B,0,21589),io(B,2,Xi(E)-4),v=1+(i?2:0)+(o?4:0),qq(B,4,v);let H=5;Yi(B,H,Math.floor(n.getTime()/1e3)),H+=4,i&&(Yi(B,H,Math.floor(i.getTime()/1e3)),H+=4),o&&Yi(B,H,Math.floor(o.getTime()/1e3));try{A=new Uint8Array(36);let V=Na(A),G=jq(n);io(V,0,10),io(V,2,32),io(V,8,1),io(V,10,24),kl(V,12,G),kl(V,20,jq(i)||G),kl(V,28,jq(o)||G)}catch{A=new Uint8Array}}else A=E=new Uint8Array;let D=0;c&&(D=D|2048),u&&(D=D|8),b===Ei&&(b=T?8:0),b==8&&(r>=1&&r<3&&(D=D|6),r>=3&&r<5&&(D=D|1),r===9&&(D=D|2)),s&&(x=x>45?x:45),m&&(D=D|1,a||(x=x>51?x:51,C[9]=b,b=99));let R=new Uint8Array(26),O=Na(R);io(O,0,x),io(O,2,D),io(O,4,b);let M=new Uint32Array(1),N=Na(M),_;n<Q7?_=Q7:n>Z7?_=Z7:_=n,io(N,0,(_.getHours()<<6|_.getMinutes())<<5|_.getSeconds()/2),io(N,2,(_.getFullYear()-1980<<4|_.getMonth()+1)<<5|_.getDate());let S=M[0];Yi(O,6,S),io(O,22,Xi(t));let w=Xi(C,E,A,h);io(O,24,w);let I=new Uint8Array(30+Xi(t)+w),L=Na(I);return Yi(L,0,67324752),Is(I,R,4),Is(I,t,30),Is(I,C,30+Xi(t)),Is(I,E,30+Xi(t,C)),Is(I,A,30+Xi(t,C,E)),Is(I,h,30+Xi(t,C,E,A)),{localHeaderArray:I,headerArray:R,headerView:O,lastModDate:n,rawLastModDate:S,encrypted:m,compressed:T,version:x,compressionMethod:b,extraFieldExtendedTimestampFlag:v,rawExtraFieldExtendedTimestamp:E,rawExtraFieldNTFS:A,rawExtraFieldAES:C,extraFieldLength:w}}function Dtt(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=Na(i),s=64-(t+Xi(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=Na(a);io(c,0,6534),io(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(Xi(u)+s),Is(i,u),Is(i,a,Xi(u)),r=Na(i),io(r,28,o+s),e.metadataSize+=s}function Itt(e){let{zip64:t,dataDescriptor:n,dataDescriptorSignature:i}=e,o=new Uint8Array,r,s=0;return n&&(o=new Uint8Array(t?i?24:20:i?16:12),r=Na(o),i&&(s=4,Yi(r,0,134695760))),{dataDescriptorArray:o,dataDescriptorView:r,dataDescriptorOffset:s}}function Ptt(e,t){let{signature:n,rawExtraFieldZip64:i,compressedSize:o,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:a}=e,{headerView:c,encrypted:u}=s,{dataDescriptorView:f,dataDescriptorOffset:h}=a,{zip64:p,zip64UncompressedSize:g,zip64CompressedSize:m,zipCrypto:x,dataDescriptor:b}=t;if((!u||x)&&n!==Ei&&(Yi(c,10,n),b&&Yi(f,h,n)),p){let T=Na(i);io(T,0,1),io(T,2,Xi(i)-4);let C=4;g&&(Yi(c,18,4294967295),kl(T,C,BigInt(r)),C+=8),m&&(Yi(c,14,4294967295),kl(T,C,BigInt(o))),b&&(kl(f,h+4,BigInt(o)),kl(f,h+12,BigInt(r)))}else Yi(c,14,o),Yi(c,18,r),b&&(Yi(f,h+4,o),Yi(f,h+8,r))}async function Ott(e,t,n,{zipCrypto:i}){let o;o=await t.slice(0,26).arrayBuffer(),o.byteLength!=26&&(o=o.slice(0,26));let r=new DataView(o);return(!e.encrypted||i)&&Yi(r,14,e.signature),e.zip64?(Yi(r,18,4294967295),Yi(r,22,4294967295)):(Yi(r,18,e.compressedSize),Yi(r,22,e.uncompressedSize)),await Rm(n,new Uint8Array(o)),t.slice(o.byteLength)}function Rtt(e,t){let{rawExtraFieldZip64:n,offset:i,diskNumberStart:o}=e,{zip64UncompressedSize:r,zip64CompressedSize:s,zip64Offset:a,zip64DiskNumberStart:c}=t,u=Na(n),f=4;r&&(f+=8),s&&(f+=8),a&&(kl(u,f,BigInt(i)),f+=8),c&&Yi(u,f,o)}async function Mtt(e,t,n){let{files:i,writer:o}=e,{diskOffset:r,writable:s}=o,{diskNumber:a}=o,c=0,u=0,f=e.offset-r,h=i.size;for(let[,v]of i){let{rawFilename:D,rawExtraFieldZip64:R,rawExtraFieldAES:O,rawComment:M,rawExtraFieldNTFS:N,rawExtraField:_,extendedTimestamp:S,extraFieldExtendedTimestampFlag:w,lastModDate:I}=v,L;if(S){L=new Uint8Array(9);let B=Na(L);io(B,0,21589),io(B,2,5),qq(B,4,w),Yi(B,5,Math.floor(I.getTime()/1e3))}else L=new Uint8Array;v.rawExtraFieldCDExtendedTimestamp=L,u+=46+Xi(D,M,R,O,N,L,_)}let p=new Uint8Array(u),g=Na(p);await Om(o);let m=0;for(let[v,D]of Array.from(i.values()).entries()){let{offset:R,rawFilename:O,rawExtraFieldZip64:M,rawExtraFieldAES:N,rawExtraFieldCDExtendedTimestamp:_,rawExtraFieldNTFS:S,rawExtraField:w,rawComment:I,versionMadeBy:L,headerArray:B,zip64:H,zip64UncompressedSize:V,zip64CompressedSize:G,zip64DiskNumberStart:k,zip64Offset:W,internalFileAttributes:q,externalFileAttributes:J,diskNumberStart:j,uncompressedSize:K,compressedSize:Q}=D,he=Xi(M,N,_,S,w);Yi(g,c,33639248),io(g,c+4,L);let ye=Na(B);V||Yi(ye,18,K),G||Yi(ye,14,Q),Is(p,B,c+6),io(g,c+30,he),io(g,c+32,Xi(I)),io(g,c+34,H&&k?65535:j),io(g,c+36,q),J&&Yi(g,c+38,J),Yi(g,c+42,H&&W?4294967295:R),Is(p,O,c+46),Is(p,M,c+46+Xi(O)),Is(p,N,c+46+Xi(O,M)),Is(p,_,c+46+Xi(O,M,N)),Is(p,S,c+46+Xi(O,M,N,_)),Is(p,w,c+46+Xi(O,M,N,_,S)),Is(p,I,c+46+Xi(O)+he);let re=46+Xi(O,I)+he;if(c-m>o.availableSize&&(o.availableSize=0,await Rm(s,p.slice(m,c)),m=c),c+=re,n.onprogress)try{await n.onprogress(v+1,i.size,new Vy(D))}catch{}}await Rm(s,m?p.slice(m):p);let x=o.diskNumber,{availableSize:b}=o;b<22&&x++;let T=qi(e,n,_V);if(f>4294967295||u>4294967295||h>65535||x>65535){if(T===!1)throw new Error(Yq);T=!0}let C=new Uint8Array(T?98:22),A=Na(C);c=0,T&&(Yi(A,0,101075792),kl(A,4,BigInt(44)),io(A,12,45),io(A,14,45),Yi(A,16,x),Yi(A,20,a),kl(A,24,BigInt(h)),kl(A,32,BigInt(h)),kl(A,40,BigInt(u)),kl(A,48,BigInt(f)),Yi(A,56,117853008),kl(A,64,BigInt(f)+BigInt(u)),Yi(A,72,x+1),qi(e,n,"supportZip64SplitFile",!0)&&(x=65535,a=65535),h=65535,f=4294967295,u=4294967295,c+=76),Yi(A,c,101010256),io(A,c+4,x),io(A,c+6,a),io(A,c+8,h),io(A,c+10,h),Yi(A,c+12,u),Yi(A,c+16,f);let E=Xi(t);if(E)if(E<=65535)io(A,c+20,E);else throw new Error(gtt);await Rm(s,C),E&&await Rm(s,t)}async function Rm(e,t){let n=e.getWriter();try{await n.ready,e.size+=Xi(t),await n.write(t)}finally{n.releaseLock()}}function jq(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function qi(e,t,n,i){let o=t[n]===Ei?e.options[n]:t[n];return o===Ei?i:o}function Cme(e){return e+5*(Math.floor(e/16383)+1)}function qq(e,t,n){e.setUint8(t,n)}function io(e,t,n){e.setUint16(t,n,!0)}function Yi(e,t,n){e.setUint32(t,n,!0)}function kl(e,t,n){e.setBigUint64(t,n,!0)}function Is(e,t,n){e.set(t,n)}function Na(e){return new DataView(e.buffer)}function Xi(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}CE({Deflate:rhe,Inflate:whe});var Xq=32,Ltt="http://www.opengis.net/kml/2.2",nh="http://www.google.com/kml/ext/2.2",Ntt="http://www.w3.org/2000/xmlns/";function PV(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Ftt=/^data:image\/([^,;]+)/;PV.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof Ee){if(e=Ee.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Ftt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function Btt(e,t){return function(n){e._files[t]=n}}PV.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new se("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(Btt(this,r))}return o};Object.defineProperties(PV.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function OV(e){this._time=e}OV.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),y(i,t)};OV.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return xb(n)};OV.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function Kq(){this._ids={},this._styles={},this._count=0}Kq.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};Kq.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function vme(){this._ids={}}vme.prototype.get=function(e){if(!l(e))return this.get(Yn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function $q(e){e=y(e,y.EMPTY_OBJECT);let t=e.entities,n=y(e.kmz,!1),i=$q._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(Ntt,"xmlns:gx",nh);let a=r.createElement("Document");s.appendChild(a),Dme(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?ktt(f,c.files):{kml:f,externalFiles:c.files}})}function ktt(e,t){let n=nn("ThirdParty/Workers/z-worker-pako.js");CE({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new AI,o=new IV(i);return o.add("doc.kml",new lV(e)).then(function(){let r=Object.keys(t);return wme(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function wme(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new x_(n[o])).then(function(){return wme(e,t,n,i+1)})}$q._createState=function(e){let t=e.entities,n=new Kq,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=y(e.defaultAvailability,i),s=y(e.sampleDuration,60);r.start===ze.MINIMUM_VALUE?r.stop===ze.MAXIMUM_VALUE?r=new An:$.addSeconds(r.stop,-10*s,r.start):r.stop===ze.MAXIMUM_VALUE&&$.addSeconds(r.start,10*s,r.stop);let a=new PV(e.modelCallback);return{kmlDoc:document.implementation.createDocument(Ltt,"kml"),ellipsoid:y(e.ellipsoid,ee.default),idManager:new vme,styleCache:n,externalFileHandler:a,time:o,valueGetter:new OV(o),sampleDuration:s,defaultAvailability:new Kr([r])}};function Dme(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let p=n[h];c=[],u=[],f=[],Vtt(e,p,u,f),Utt(e,p.polyline,u,f),Sme(e,p.rectangle,u,f,c),Sme(e,p.polygon,u,f,c),Wtt(e,p,p.model,u,f);let g,m=p.availability;l(m)&&(g=i.createElement("TimeSpan"),$.equals(m.start,ze.MINIMUM_VALUE)||g.appendChild(dn(i,"begin",$.toIso8601(m.start))),$.equals(m.stop,ze.MAXIMUM_VALUE)||g.appendChild(dn(i,"end",$.toIso8601(m.stop))));for(let T=0;T<c.length;++T){let C=c[T];C.setAttribute("id",s.get(p.id)),C.appendChild(dn(i,"name",p.name)),C.appendChild(dn(i,"visibility",p.show)),C.appendChild(dn(i,"description",p.description)),l(g)&&C.appendChild(g),t.appendChild(C)}let x=u.length;if(x>0){let T=i.createElement("Placemark");T.setAttribute("id",s.get(p.id));let C=p.name,A=p.label;if(l(A)){let v=i.createElement("LabelStyle"),D=r.get(A.text);C=l(D)&&D.length>0?D:C;let R=r.getColor(A.fillColor);l(R)&&(v.appendChild(dn(i,"color",R)),v.appendChild(dn(i,"colorMode","normal")));let O=r.get(A.scale);l(O)&&v.appendChild(dn(i,"scale",O)),f.push(v)}T.appendChild(dn(i,"name",C)),T.appendChild(dn(i,"visibility",p.show)),T.appendChild(dn(i,"description",p.description)),l(g)&&T.appendChild(g),t.appendChild(T);let E=f.length;if(E>0){let v=i.createElement("Style");for(let D=0;D<E;++D)v.appendChild(f[D]);T.appendChild(dn(i,"styleUrl",o.get(v)))}if(u.length===1)T.appendChild(u[0]);else if(u.length>1){let v=i.createElement("MultiGeometry");for(let D=0;D<x;++D)v.appendChild(u[D]);T.appendChild(v)}}let b=p._children;if(b.length>0){let T=i.createElement("Folder");T.setAttribute("id",s.get(p.id)),T.appendChild(dn(i,"name",p.name)),T.appendChild(dn(i,"visibility",p.show)),T.appendChild(dn(i,"description",p.description)),t.appendChild(T),Dme(e,T,b)}}}var Vl=new d,Qc=new fe,th=new $;function Vtt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=y(t.billboard,t.point);if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){Ime(e,t,a,n,i);return}s.get(c,void 0,Vl);let u=dn(o,"coordinates",yb(Vl,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(bb(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let p=a instanceof Ac?Ome(e,a):Pme(e,a);i.push(p)}function Ime(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof Oa?(c=u.intervals,f=!1):c=y(t.availability,e.defaultAvailability);let h=n instanceof og,p,g,m,x=[];for(p=0;p<c.length;++p){let T=c.get(p),C=f?u:T.data,A=r.createElement("altitudeMode");C instanceof p_?(C=C._value,A.appendChild(bb(e,qe.CLAMP_TO_GROUND))):l(n)?A.appendChild(bb(e,n.heightReference)):A.appendChild(bb(e,qe.NONE));let E=[],v=[];if(C.isConstant){a.get(C,void 0,Vl);let R=dn(r,"coordinates",yb(Vl,s));E.push($.toIso8601(T.start)),v.push(R),E.push($.toIso8601(T.stop)),v.push(R)}else if(C instanceof Ra)for(m=C._property._times,g=0;g<m.length;++g)E.push($.toIso8601(m[g])),C.getValueInReferenceFrame(m[g],Gi.FIXED,Vl),v.push(yb(Vl,s));else if(C instanceof Bf){m=C._times;let R=C._values;for(g=0;g<m.length;++g)E.push($.toIso8601(m[g])),d.fromArray(R,g*3,Vl),v.push(yb(Vl,s))}else{let R=e.sampleDuration;T.start.clone(th),T.isStartIncluded||$.addSeconds(th,R,th);let O=T.stop;for(;$.lessThan(th,O);)C.getValue(th,Vl),E.push($.toIso8601(th)),v.push(yb(Vl,s)),$.addSeconds(th,R,th);T.isStopIncluded&&$.equals(th,O)&&(C.getValue(th,Vl),E.push($.toIso8601(th)),v.push(yb(Vl,s)))}let D=r.createElementNS(nh,"Track");D.appendChild(A);for(let R=0;R<E.length;++R){let O=dn(r,"when",E[R]),M=dn(r,"coord",v[R],nh);D.appendChild(O),D.appendChild(M)}h&&D.appendChild(Rme(e,n)),x.push(D)}if(x.length===1)i.push(x[0]);else if(x.length>1){let T=r.createElementNS(nh,"MultiTrack");for(p=0;p<x.length;++p)T.appendChild(x[p]);i.push(T)}if(l(n)&&!h){let T=n instanceof Ac?Ome(e,n):Pme(e,n);o.push(T)}let b=t.path;if(l(b)){let T=a.get(b.width),C=b.material;if(l(C)||l(T)){let A=r.createElement("LineStyle");l(T)&&A.appendChild(dn(r,"width",T)),Zq(e,C,A),o.push(A)}}}function Pme(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(dn(n,"color",r)),o.appendChild(dn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(dn(n,"scale",s/Xq)),o}function Ome(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let p=n.createElement("Icon");p.appendChild(dn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(p.appendChild(dn(n,"x",g.x,nh)),p.appendChild(dn(n,"y",g.y,nh)),p.appendChild(dn(n,"w",g.width,nh)),p.appendChild(dn(n,"h",g.height,nh))),r.appendChild(p)}let a=i.getColor(t.color);l(a)&&(r.appendChild(dn(n,"color",a)),r.appendChild(dn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(dn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=y(c,1),U.divideByScalar(u,c,u);let p=i.get(t.width,Xq),g=i.get(t.height,Xq),m=i.get(t.horizontalOrigin,yi.CENTER);m===yi.CENTER?u.x-=p*.5:m===yi.RIGHT&&(u.x-=p);let x=i.get(t.verticalOrigin,Fn.CENTER);x===Fn.TOP?u.y+=g:x===Fn.CENTER&&(u.y+=g*.5);let b=n.createElement("hotSpot");b.setAttribute("x",-u.x),b.setAttribute("y",u.y),b.setAttribute("xunits","pixels"),b.setAttribute("yunits","pixels"),r.appendChild(b)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=P.toDegrees(-f),f===0&&(f=360),r.appendChild(dn(n,"heading",f))),r}function Utt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(dn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,p=s.get(h),g=dn(o,"coordinates",yb(p,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(dn(o,"drawOrder",m,nh)),n.push(a);let x=o.createElement("LineStyle"),b=s.get(t.width);l(b)&&x.appendChild(dn(o,"width",b)),Zq(e,t.material,x),i.push(x)}function ztt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,Qc),c.push(`${P.toDegrees(Qc.longitude)},${P.toDegrees(Qc.latitude)},${r}`);let f=dn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),p=i.createElement("LinearRing");return p.appendChild(f),h.appendChild(p),[h]}function Eme(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)fe.fromCartesian(t[f],r,Qc),s.push(`${P.toDegrees(Qc.longitude)},${P.toDegrees(Qc.latitude)},${i?Qc.height:n}`);let c=dn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function Htt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(Eme(e,f,r,s)),a.push(h);let p=u.holes;if(l(p)){let g=p.length;for(let m=0;m<g;++m){let x=i.createElement("innerBoundaryIs");x.appendChild(Eme(e,p[m].positions,r,s)),a.push(x)}}return a}function Sme(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof Hh;if(a&&s.getMaterialType(t.material)==="Image"){Gtt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(dn(r,"extrude",!0));let f=a?ztt(e,t,u):Htt(e,t,u),h=f.length;for(let b=0;b<h;++b)c.appendChild(f[b]);let p=r.createElement("altitudeMode");p.appendChild(bb(e,t.heightReference)),c.appendChild(p),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(dn(r,"fill",m)),Zq(e,t.material,g);let x=s.get(t.outline,!1);if(x){g.appendChild(dn(r,"outline",x));let b=r.createElement("LineStyle"),T=s.get(t.outlineWidth,1);b.appendChild(dn(r,"width",T));let C=s.getColor(t.outlineColor,z.BLACK);b.appendChild(dn(r,"color",C)),b.appendChild(dn(r,"colorMode","normal")),i.push(b)}i.push(g)}function Gtt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(bb(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(dn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(dn(i,"north",P.toDegrees(u.north))),f.appendChild(dn(i,"south",P.toDegrees(u.south))),f.appendChild(dn(i,"east",P.toDegrees(u.east))),f.appendChild(dn(i,"west",P.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),p=r.texture(h.image),g=i.createElement("Icon");g.appendChild(dn(i,"href",p)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(dn(i,"color",xb(h.color))),n.push(s)}function Rme(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(dn(n,"x",s)),u.appendChild(dn(n,"y",s)),u.appendChild(dn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(dn(n,"href",c)),r.appendChild(a),r}function Wtt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){Ime(e,t,n,i,o);return}let u=Rme(e,n),f=r.createElement("altitudeMode");f.appendChild(bb(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,Vl),fe.fromCartesian(Vl,s,Qc);let h=r.createElement("Location");h.appendChild(dn(r,"longitude",P.toDegrees(Qc.longitude))),h.appendChild(dn(r,"latitude",P.toDegrees(Qc.latitude))),h.appendChild(dn(r,"altitude",Qc.height)),u.appendChild(h),i.push(u)}function Zq(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=xb(z.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=xb(r.color);break;case"PolylineOutline":s=xb(r.color),c=xb(r.outlineColor),u=r.outlineWidth,n.appendChild(dn(i,"outerColor",c,nh)),n.appendChild(dn(i,"outerWidth",u,nh));break;case"Stripe":s=xb(r.oddColor);break}l(s)&&(n.appendChild(dn(i,"color",s)),n.appendChild(dn(i,"colorMode","normal")))}function bb(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,qe.NONE),r;switch(o){case qe.NONE:r=n.createTextNode("absolute");break;case qe.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case qe.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function yb(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)fe.fromCartesian(e[o],t,Qc),i.push(`${P.toDegrees(Qc.longitude)},${P.toDegrees(Qc.latitude)},${Qc.height}`);return i.join(" ")}function dn(e,t,n,i){n=y(n,""),typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function xb(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var Mme=$q;function PI(){this._cache={}}PI.prototype.fromColor=function(e,t){return RV(void 0,void 0,e,t,this._cache)};PI.prototype.fromUrl=function(e,t,n){return RV(e,void 0,t,n,this._cache)};PI.prototype.fromMakiIconId=function(e,t,n){return RV(nn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};PI.prototype.fromText=function(e,t,n){return RV(void 0,e,t,n,this._cache)};var jtt=new z;function qtt(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,jtt).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function Lme(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=z.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=z.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var II=new Array(4);function RV(e,t,n,i,o){II[0]=e,II[1]=t,II[2]=n,II[3]=i;let r=JSON.stringify(II),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(qtt(c,n,i),l(e)){let f=Ee.createIfNeeded(e).fetchImage().then(function(h){return Lme(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=aA(t,{font:`bold ${i}px sans-serif`});Lme(c,u,i)}return o[r]=a,a}var Uy=PI;function Qq(e){return e}function MV(e){if(e==null)return Qq;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var u=2,f=a.length,h=new Array(f);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;u<f;)h[u]=a[u],++u;return h}}function Nme(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Jq(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return Fme(e,n)})}:Fme(e,t)}function Fme(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=eY(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function eY(e,t){var n=MV(e.transform),i=e.arcs;function o(f,h){h.length&&h.pop();for(var p=i[f<0?~f:f],g=0,m=p.length;g<m;++g)h.push(n(p[g],g));f<0&&Nme(h,m)}function r(f){return n(f)}function s(f){for(var h=[],p=0,g=f.length;p<g;++p)o(f[p],h);return h.length<2&&h.push(h[0]),h}function a(f){for(var h=s(f);h.length<4;)h.push(h[0]);return h}function c(f){return f.map(a)}function u(f){var h=f.type,p;switch(h){case"GeometryCollection":return{type:h,geometries:f.geometries.map(u)};case"Point":p=r(f.coordinates);break;case"MultiPoint":p=f.coordinates.map(r);break;case"LineString":p=s(f.arcs);break;case"MultiLineString":p=f.arcs.map(s);break;case"Polygon":p=c(f.arcs);break;case"MultiPolygon":p=f.arcs.map(c);break;default:return null}return{type:h,coordinates:p}}return u(t)}function LV(e){return d.fromDegrees(e[0],e[1],e[2])}var tY={"urn:ogc:def:crs:OGC:1.3:CRS84":LV,"EPSG:4326":LV,"urn:ogc:def:crs:EPSG::4326":LV},Bme={},kme={},nY=48,iY,oY=z.ROYALBLUE,rY=z.YELLOW,sY=2,aY=z.fromBytes(255,255,0,100),cY=!1,Ztt={small:24,medium:48,large:64},Qtt=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function Vme(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Qtt.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${Vme(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Jtt(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function ent(e,t){return new Gh(Jtt(Vme,e,t),!0)}function NV(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Yn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new $n(c):n(r,s))}return o}function lY(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var Ume={Feature:Hme,FeatureCollection:tnt,GeometryCollection:Gme,LineString:Xme,MultiLineString:Kme,MultiPoint:qme,MultiPolygon:Qme,Point:jme,Polygon:Zme,Topology:Jme},zme={GeometryCollection:Gme,LineString:Xme,MultiLineString:Kme,MultiPoint:qme,MultiPolygon:Qme,Point:jme,Polygon:Zme,Topology:Jme};function Hme(e,t,n,i,o){if(t.geometry===null){NV(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new se("feature.geometry is required.");let r=t.geometry.type,s=zme[r];if(!l(s))throw new se(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function tnt(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)Hme(e,r[s],void 0,i,o)}function Gme(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=zme[u];if(!l(f))throw new se(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function Wme(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=z.fromCssColorString(g)),a=y(Ztt[c["marker-size"]],a);let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new Ac;f.verticalOrigin=new $n(Fn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=qe.CLAMP_TO_GROUND);let h=NV(t,e._entityCollection,o.describe);h.billboard=f,h.position=new _l(n(i));let p=Promise.resolve(u).then(function(g){f.image=new $n(g)}).catch(function(){f.image=new $n(e._pinBuilder.fromColor(s,a))});e._promises.push(p)}function jme(e,t,n,i,o){Wme(e,t,i,n.coordinates,o)}function qme(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)Wme(e,t,i,r[s],o)}function Yme(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new $n(f));let h,p=a.stroke;l(p)&&(h=z.fromCssColorString(p));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new zt(h))}let c=NV(t,e._entityCollection,o.describe),u=new Oc;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new $n(lY(i,n)),u.arcType=en.RHUMB}function Xme(e,t,n,i,o){Yme(e,t,i,n.coordinates,o)}function Kme(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)Yme(e,t,i,r[s],o)}function $me(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new $n(g));let m,x=c.stroke;l(x)&&(m=z.fromCssColorString(x));let b=c["stroke-opacity"];l(b)&&b!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=b),l(m)&&(r=new $n(m));let T,C=c.fill,A=s.color.getValue();l(C)&&(T=z.fromCssColorString(C),T.alpha=A.alpha),b=c["fill-opacity"],l(b)&&b!==A.alpha&&(l(T)||(T=A.clone()),T.alpha=b),l(T)&&(s=new zt(T))}let u=new zh;u.outline=new $n(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=en.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new Za(lY(i[g],n)));let h=i[0];u.hierarchy=new $n(new Za(lY(h,n),f)),h[0].length>2?u.perPositionHeight=new $n(!0):o.clampToGround||(u.height=0);let p=NV(t,e._entityCollection,o.describe);p.polygon=u}function Zme(e,t,n,i,o){$me(e,t,i,n.coordinates,o)}function Qme(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)$me(e,t,i,r[s],o)}function Jme(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Jq(n,n.objects[r]),a=Ume[s.type];a(e,s,s,i,o)}}function zy(e){this._name=e,this._changed=new me,this._error=new me,this._isLoading=!1,this._loading=new me,this._entityCollection=new ha(this),this._promises=[],this._pinBuilder=new Uy,this._entityCluster=new Lf,this._credit=void 0,this._resourceCredits=[]}zy.load=function(e,t){return new zy().load(e,t)};Object.defineProperties(zy,{markerSize:{get:function(){return nY},set:function(e){nY=e}},markerSymbol:{get:function(){return iY},set:function(e){iY=e}},markerColor:{get:function(){return oY},set:function(e){oY=e}},stroke:{get:function(){return rY},set:function(e){rY=e}},strokeWidth:{get:function(){return sY},set:function(e){sY=e}},fill:{get:function(){return aY},set:function(e){aY=e}},clampToGround:{get:function(){return cY},set:function(e){cY=e}},crsNames:{get:function(){return tY}},crsLinkHrefs:{get:function(){return Bme}},crsLinkTypes:{get:function(){return kme}}});Object.defineProperties(zy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});zy.prototype.load=function(e,t){return epe(this,e,t,!0)};zy.prototype.process=function(e,t){return epe(this,e,t,!1)};function epe(e,t,n,i){$r.setLoading(e,!0),n=y(n,y.EMPTY_OBJECT);let o=n.credit;typeof o=="string"&&(o=new vt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof Ee){t=Ee.createIfNeeded(t),r=t.fetchJson(),s=y(s,t.getUrlComponent());let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:y(n.describe,ent),markerSize:y(n.markerSize,nY),markerSymbol:y(n.markerSymbol,iY),markerColor:y(n.markerColor,oY),strokeWidthProperty:new $n(y(n.strokeWidth,sY)),strokeMaterialProperty:new zt(y(n.stroke,rY)),fillMaterialProperty:new zt(y(n.fill,aY)),clampToGround:y(n.clampToGround,cY)},Promise.resolve(r).then(function(a){return nnt(e,a,n,s,i)}).catch(function(a){throw $r.setLoading(e,!1),e._error.raiseEvent(e,a),a})}zy.prototype.update=function(e){return!0};function nnt(e,t,n,i,o){let r;l(i)&&(r=my(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=Ume[t.type];if(!l(s))throw new se(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?LV:null;if(l(a)){if(!l(a.properties))throw new se("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=tY[u.name],!l(c))throw new se(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=Bme[u.href];if(l(f)||(f=kme[u.type]),!l(f))throw new se(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=tY[`EPSG:${u.code}`],!l(c))throw new se(`Unknown crs EPSG code: ${u.code}`)}else throw new se(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,$r.setLoading(e,!1),e})})}var Tb=zy;function int(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Rn=int;var tpe="4.1.0";function ont(e){return e===void 0}function Eu(e){return typeof e=="boolean"}function npe(e,t){for(var n in t)t.hasOwnProperty(n)&&ont(e[n])&&(e[n]=t[n]);return e}function ipe(e,t,n){var i;return e.length>t&&(n==null?(n="&hellip;",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function Go(e,t){for(var n=e.length-1;n>=0;n--)e[n]===t&&e.splice(n,1)}function Hy(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function Mm(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var Gy=/[A-Za-z]/,Xs=/[\d]/;var Su=/\s/,FV=/['"]/,ope=/[\x00-\x1F\x7F]/,rpe=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,rnt=/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source,snt=/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,ant=rpe+rnt+snt,spe=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,xJn=new RegExp("[".concat(rpe+spe,"]")),uY=ant+spe,ih=new RegExp("[".concat(uY,"]"));var BV=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(Su):[],o=t.split(Su),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(Su):[],o=t.split(Su),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var t=this.getAttrs(),n=[];for(var i in t)t.hasOwnProperty(i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();function ape(e,t,n){var i,o;n==null?(n="&hellip;",o=3,i=8):(o=n.length,i=n.length);var r=function(C){var A={},E=C,v=E.match(/^([a-z]+):\/\//i);return v&&(A.scheme=v[1],E=E.substr(v[0].length)),v=E.match(/^(.*?)(?=(\?|#|\/|$))/i),v&&(A.host=v[1],E=E.substr(v[0].length)),v=E.match(/^\/(.*?)(?=(\?|#|$))/i),v&&(A.path=v[1],E=E.substr(v[0].length)),v=E.match(/^\?(.*?)(?=(#|$))/i),v&&(A.query=v[1],E=E.substr(v[0].length)),v=E.match(/^#(.*?)$/i),v&&(A.fragment=v[1]),A},s=function(C){var A="";return C.scheme&&C.host&&(A+=C.scheme+"://"),C.host&&(A+=C.host),C.path&&(A+="/"+C.path),C.query&&(A+="?"+C.query),C.fragment&&(A+="#"+C.fragment),A},a=function(C,A){var E=A/2,v=Math.ceil(E),D=-1*Math.floor(E),R="";return D<0&&(R=C.substr(D)),C.substr(0,v)+n+R};if(e.length<=t)return e;var c=t-o,u=r(e);if(u.query){var f=u.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);f&&(u.query=u.query.substr(0,f[1].length),e=s(u))}if(e.length<=t||(u.host&&(u.host=u.host.replace(/^www\./,""),e=s(u)),e.length<=t))return e;var h="";if(u.host&&(h+=u.host),h.length>=c)return u.host.length==t?(u.host.substr(0,t-o)+n).substr(0,c+i):a(h,c).substr(0,c+i);var p="";if(u.path&&(p+="/"+u.path),u.query&&(p+="?"+u.query),p)if((h+p).length>=c){if((h+p).length==t)return(h+p).substr(0,t);var g=c-h.length;return(h+a(p,g)).substr(0,c+i)}else h+=p;if(u.fragment){var m="#"+u.fragment;if((h+m).length>=c){if((h+m).length==t)return(h+m).substr(0,t);var x=c-h.length;return(h+a(m,x)).substr(0,c+i)}else h+=m}if(u.scheme&&u.host){var b=u.scheme+"://";if((h+b).length<c)return(b+h).substr(0,t)}if(h.length<=t)return h;var T="";return c>0&&(T=h.substr(-1*Math.floor(c/2))),(h.substr(0,Math.ceil(c/2))+n+T).substr(0,c+i)}function cpe(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="&hellip;",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}function lpe(e,t,n){return ipe(e,t,n)}var upe=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new BV({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n||!n.length)return t;var i=n.length,o=n.location;return o==="smart"?ape(t,i):o==="middle"?cpe(t,i):lpe(t,i)},e}();var fY=function(e,t){return fY=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},fY(e,t)};function Lm(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");fY(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Ks=function(){return Ks=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Ks.apply(this,arguments)};var Nm=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();var cnt="(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|verm\xF6gensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|verm\xF6gensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bentley|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|\u043A\u0430\u0442\u043E\u043B\u0438\u043A|\u0627\u0644\u0628\u062D\u0631\u064A\u0646|\u0627\u0644\u062C\u0632\u0627\u0626\u0631|\u0627\u0644\u0639\u0644\u064A\u0627\u0646|\u067E\u0627\u06A9\u0633\u062A\u0627\u0646|\u0643\u0627\u062B\u0648\u0644\u064A\u0643|\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|\u043C\u043E\u0441\u043A\u0432\u0430|\u043E\u043D\u043B\u0430\u0439\u043D|\u0627\u0628\u0648\u0638\u0628\u064A|\u0627\u0631\u0627\u0645\u0643\u0648|\u0627\u0644\u0627\u0631\u062F\u0646|\u0627\u0644\u0645\u063A\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062A|\u0641\u0644\u0633\u0637\u064A\u0646|\u0645\u0644\u064A\u0633\u064A\u0627|\u092D\u093E\u0930\u0924\u092E\u094D|\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8|\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|lipsy|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|\u05D9\u05E9\u05E8\u05D0\u05DC|\u0627\u06CC\u0631\u0627\u0646|\u0628\u0627\u0632\u0627\u0631|\u0628\u06BE\u0627\u0631\u062A|\u0633\u0648\u062F\u0627\u0646|\u0633\u0648\u0631\u064A\u0629|\u0647\u0645\u0631\u0627\u0647|\u092D\u093E\u0930\u094B\u0924|\u0938\u0902\u0917\u0920\u0928|\u09AC\u09BE\u0982\u09B2\u09BE|\u0C2D\u0C3E\u0C30\u0C24\u0C4D|\u0D2D\u0D3E\u0D30\u0D24\u0D02|\u5609\u91CC\u5927\u9152\u5E97|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|\u0434\u0435\u0442\u0438|\u0441\u0430\u0439\u0442|\u0628\u0627\u0631\u062A|\u0628\u064A\u062A\u0643|\u0680\u0627\u0631\u062A|\u062A\u0648\u0646\u0633|\u0634\u0628\u0643\u0629|\u0639\u0631\u0627\u0642|\u0639\u0645\u0627\u0646|\u0645\u0648\u0642\u0639|\u092D\u093E\u0930\u0924|\u09AD\u09BE\u09B0\u09A4|\u09AD\u09BE\u09F0\u09A4|\u0A2D\u0A3E\u0A30\u0A24|\u0AAD\u0ABE\u0AB0\u0AA4|\u0B2D\u0B3E\u0B30\u0B24|\u0CAD\u0CBE\u0CB0\u0CA4|\u0DBD\u0D82\u0D9A\u0DCF|\u30A2\u30DE\u30BE\u30F3|\u30B0\u30FC\u30B0\u30EB|\u30AF\u30E9\u30A6\u30C9|\u30DD\u30A4\u30F3\u30C8|\u7EC4\u7EC7\u673A\u6784|\u96FB\u8A0A\u76C8\u79D1|\u9999\u683C\u91CC\u62C9|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|\u0431\u0435\u043B|\u043A\u043E\u043C|\u049B\u0430\u0437|\u043C\u043A\u0434|\u043C\u043E\u043D|\u043E\u0440\u0433|\u0440\u0443\u0441|\u0441\u0440\u0431|\u0443\u043A\u0440|\u0570\u0561\u0575|\u05E7\u05D5\u05DD|\u0639\u0631\u0628|\u0642\u0637\u0631|\u0643\u0648\u0645|\u0645\u0635\u0631|\u0915\u0949\u092E|\u0928\u0947\u091F|\u0E04\u0E2D\u0E21|\u0E44\u0E17\u0E22|\u0EA5\u0EB2\u0EA7|\u30B9\u30C8\u30A2|\u30BB\u30FC\u30EB|\u307F\u3093\u306A|\u4E2D\u6587\u7F51|\u4E9A\u9A6C\u900A|\u5929\u4E3B\u6559|\u6211\u7231\u4F60|\u65B0\u52A0\u5761|\u6DE1\u9A6C\u9521|\u98DE\u5229\u6D66|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|\u03B5\u03BB|\u03B5\u03C5|\u0431\u0433|\u0435\u044E|\u0440\u0444|\u10D2\u10D4|\uB2F7\uB137|\uB2F7\uCEF4|\uC0BC\uC131|\uD55C\uAD6D|\u30B3\u30E0|\u4E16\u754C|\u4E2D\u4FE1|\u4E2D\u56FD|\u4E2D\u570B|\u4F01\u4E1A|\u4F5B\u5C71|\u4FE1\u606F|\u5065\u5EB7|\u516B\u5366|\u516C\u53F8|\u516C\u76CA|\u53F0\u6E7E|\u53F0\u7063|\u5546\u57CE|\u5546\u5E97|\u5546\u6807|\u5609\u91CC|\u5728\u7EBF|\u5927\u62FF|\u5A31\u4E50|\u5BB6\u96FB|\u5E7F\u4E1C|\u5FAE\u535A|\u6148\u5584|\u624B\u673A|\u62DB\u8058|\u653F\u52A1|\u653F\u5E9C|\u65B0\u95FB|\u65F6\u5C1A|\u66F8\u7C4D|\u673A\u6784|\u6E38\u620F|\u6FB3\u9580|\u70B9\u770B|\u79FB\u52A8|\u7F51\u5740|\u7F51\u5E97|\u7F51\u7AD9|\u7F51\u7EDC|\u8054\u901A|\u8C37\u6B4C|\u8D2D\u7269|\u901A\u8CA9|\u96C6\u56E2|\u98DF\u54C1|\u9910\u5385|\u9999\u6E2F)",fpe=new RegExp("^"+cnt+"$");var lnt=/[\/?#]/,unt=/[-+&@#/%=~_()|'$*\[\]{}\u2713]/,dpe=/[?!:,.;^]/,dY=/https?:\/\//i,hpe=new RegExp("^"+dY.source,"i"),mpe=new RegExp(dpe.source+"$"),fnt=/^(javascript|vbscript):/i,dnt=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,hnt=/^(?:\/\/)?([^/#?:]+)/;function PE(e){return Gy.test(e)}function hY(e){return Gy.test(e)||Xs.test(e)||e==="+"||e==="-"||e==="."}function b_(e){return ih.test(e)}function kV(e){return e==="_"||b_(e)}function mY(e){return ih.test(e)||unt.test(e)||dpe.test(e)}function VV(e){return lnt.test(e)}function pY(e){return fpe.test(e.toLowerCase())}function ppe(e){if(fnt.test(e))return!1;var t=e.match(dnt);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!Gy.test(i))}function _pe(e){var t=e.match(hnt);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!pY(o)}var mnt=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,pnt=/[:/?#]/;function gpe(e){var t=e.split(pnt,1)[0];return mnt.test(t)}var _nt=/^(https?:\/\/)?(www\.)?/i,gnt=/^\/\//,ype=function(e){Lm(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&amp;/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=bnt(n)),this.stripPrefix.scheme&&(n=ynt(n)),this.stripPrefix.www&&(n=xnt(n)),this.stripTrailingSlash&&(n=Tnt(n)),this.decodePercentEncoding&&(n=Cnt(n)),n},t}(Nm);function ynt(e){return e.replace(hpe,"")}function xnt(e){return e.replace(_nt,"$1")}function bnt(e){return e.replace(gnt,"")}function Tnt(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Cnt(e){var t=e.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(t)}catch{return t}}var xpe=/^mailto:/i,Ant=new RegExp("[".concat(uY,"!#$%&'*+/=?^_`{|}~-]"));function bpe(e){return ih.test(e)}function UV(e){return Ant.test(e)}function Tpe(e){var t=e.split(".").pop()||"";return pY(t)}var Cpe=function(e){Lm(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(Nm);function _Y(e){return e==="_"||ih.test(e)}function Ape(e){return e.length<=140}var Epe=["twitter","facebook","instagram","tiktok","youtube"];var Spe=function(e){Lm(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:throw Mm(n),new Error("Invalid hashtag service: ".concat(n))}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Nm);var Ent={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/},Snt=/[-\w.]/;function gY(e){return Snt.test(e)}function vpe(e,t){var n=Ent[t];return n.test(e)}var wpe=["twitter","instagram","soundcloud","tiktok","youtube"];var Dpe=function(e){Lm(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:throw Mm(this.serviceName),new Error("Unknown service name to point mention to: "+this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Nm);var vnt=/[-. ]/,wnt=/[-. ()]/,Dnt=/[,;]/,Int=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,Pnt=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,Ont=new RegExp("^".concat(Int.source,"|").concat(Pnt.source,"$"));function yY(e){return vnt.test(e)}function zV(e){return Dnt.test(e)}function Ipe(e){var t=e.charAt(0)==="+"||wnt.test(e);return t&&Ont.test(e)}var Ppe=function(e){Lm(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(Nm);function Mpe(e,t){for(var n=t.tagBuilder,i=t.stripPrefix,o=t.stripTrailingSlash,r=t.decodePercentEncoding,s=t.hashtagServiceName,a=t.mentionServiceName,c=[],u=e.length,f=[],h=0;h<u;h++){var p=e.charAt(h);if(f.length===0)T(p);else{for(var g=f.length-1;g>=0;g--){var m=f[g];switch(m.state){case 11:R(m,p);break;case 12:O(m,p);break;case 0:C(m,p);break;case 1:A(m,p);break;case 2:E(m,p);break;case 3:v(m,p);break;case 4:D(m,p);break;case 5:M(m,p);break;case 6:N(m,p);break;case 7:_(m,p);break;case 13:S(m,p);break;case 14:w(m,p);break;case 8:I(m,p);break;case 9:L(m,p);break;case 10:B(m,p);break;case 15:H(m,p);break;case 16:V(m,p);break;case 17:G(m,p);break;case 18:k(m,p);break;case 19:W(m,p);break;case 20:q(m,p);break;case 21:J(m,p);break;case 22:j(m,p);break;case 23:K(m,p);break;case 24:Q(m,p);break;case 25:he(m,p);break;case 26:ye(m,p);break;case 27:re(m,p);break;case 28:_e(m,p);break;case 29:be(m,p);break;case 30:we(m,p);break;case 31:De(m,p);break;case 32:Re(m,p);break;case 33:rt(m,p);break;case 34:Ye(m,p);break;case 35:dt(m,p);break;case 36:Xe(m,p);break;case 37:Me(m,p);break;case 38:_t(m,p);break;case 39:ft(m,p);break;case 40:ht(m,p);break;case 41:vn(m,p);break;default:Mm(m.state)}}if(h>0&&PE(p)){var x=e.charAt(h-1);!PE(x)&&!f.some(knt)&&f.push(HV(h,0))}}}for(var b=f.length-1;b>=0;b--)f.forEach(function(Te){return tn(Te)});return c;function T(Te){if(Te==="#")f.push(Fnt(h,28));else if(Te==="@")f.push(Bnt(h,30));else if(Te==="/")f.push(xY(h,11));else if(Te==="+")f.push(bY(h,37));else if(Te==="(")f.push(bY(h,32));else{if(Xs.test(Te)&&(f.push(bY(h,38)),f.push(Lnt(h,13))),bpe(Te)){var Ae=Te.toLowerCase()==="m"?15:22;f.push(Nnt(h,Ae))}PE(Te)&&f.push(HV(h,0)),ih.test(Te)&&f.push(xY(h,5))}}function C(Te,Ae){Ae===":"?Te.state=2:Ae==="-"?Te.state=1:hY(Ae)||Go(f,Te)}function A(Te,Ae){Ae==="-"||(Ae==="/"?(Go(f,Te),f.push(xY(h,11))):hY(Ae)?Te.state=0:Go(f,Te))}function E(Te,Ae){Ae==="/"?Te.state=3:Ae==="."?Go(f,Te):b_(Ae)?(Te.state=5,PE(Ae)&&f.push(HV(h,0))):Go(f,Te)}function v(Te,Ae){Ae==="/"?Te.state=4:mY(Ae)?(Te.state=10,Te.acceptStateReached=!0):tn(Te)}function D(Te,Ae){Ae==="/"?Te.state=10:b_(Ae)?(Te.state=5,Te.acceptStateReached=!0):Go(f,Te)}function R(Te,Ae){Ae==="/"?Te.state=12:Go(f,Te)}function O(Te,Ae){b_(Ae)?Te.state=5:Go(f,Te)}function M(Te,Ae){Ae==="."?Te.state=7:Ae==="-"?Te.state=6:Ae===":"?Te.state=8:VV(Ae)?Te.state=10:kV(Ae)||tn(Te)}function N(Te,Ae){Ae==="-"||(Ae==="."?tn(Te):b_(Ae)?Te.state=5:tn(Te))}function _(Te,Ae){Ae==="."?tn(Te):b_(Ae)?(Te.state=5,Te.acceptStateReached=!0):tn(Te)}function S(Te,Ae){Ae==="."?Te.state=14:Ae===":"?Te.state=8:Xs.test(Ae)||(VV(Ae)?Te.state=10:ih.test(Ae)?Go(f,Te):tn(Te))}function w(Te,Ae){Xs.test(Ae)?(Te.octetsEncountered++,Te.octetsEncountered===4&&(Te.acceptStateReached=!0),Te.state=13):tn(Te)}function I(Te,Ae){Xs.test(Ae)?Te.state=9:tn(Te)}function L(Te,Ae){Xs.test(Ae)||(VV(Ae)?Te.state=10:tn(Te))}function B(Te,Ae){mY(Ae)||tn(Te)}function H(Te,Ae){Ae.toLowerCase()==="a"?Te.state=16:j(Te,Ae)}function V(Te,Ae){Ae.toLowerCase()==="i"?Te.state=17:j(Te,Ae)}function G(Te,Ae){Ae.toLowerCase()==="l"?Te.state=18:j(Te,Ae)}function k(Te,Ae){Ae.toLowerCase()==="t"?Te.state=19:j(Te,Ae)}function W(Te,Ae){Ae.toLowerCase()==="o"?Te.state=20:j(Te,Ae)}function q(Te,Ae){Ae.toLowerCase()===":"?Te.state=21:j(Te,Ae)}function J(Te,Ae){UV(Ae)?Te.state=22:Go(f,Te)}function j(Te,Ae){Ae==="."?Te.state=23:Ae==="@"?Te.state=24:UV(Ae)?Te.state=22:Go(f,Te)}function K(Te,Ae){Ae==="."?Go(f,Te):Ae==="@"?Go(f,Te):UV(Ae)?Te.state=22:Go(f,Te)}function Q(Te,Ae){b_(Ae)?Te.state=25:Go(f,Te)}function he(Te,Ae){Ae==="."?Te.state=27:Ae==="-"?Te.state=26:kV(Ae)||tn(Te)}function ye(Te,Ae){Ae==="-"||Ae==="."?tn(Te):kV(Ae)?Te.state=25:tn(Te)}function re(Te,Ae){Ae==="."||Ae==="-"?tn(Te):b_(Ae)?(Te.state=25,Te.acceptStateReached=!0):tn(Te)}function _e(Te,Ae){_Y(Ae)?(Te.state=29,Te.acceptStateReached=!0):Go(f,Te)}function be(Te,Ae){_Y(Ae)||tn(Te)}function we(Te,Ae){gY(Ae)?(Te.state=31,Te.acceptStateReached=!0):Go(f,Te)}function De(Te,Ae){gY(Ae)||(ih.test(Ae)?Go(f,Te):tn(Te))}function Me(Te,Ae){Xs.test(Ae)?Te.state=38:(Go(f,Te),T(Ae))}function Re(Te,Ae){Xs.test(Ae)?Te.state=33:Go(f,Te),T(Ae)}function rt(Te,Ae){Xs.test(Ae)?Te.state=34:Go(f,Te)}function Ye(Te,Ae){Xs.test(Ae)?Te.state=35:Go(f,Te)}function dt(Te,Ae){Ae===")"?Te.state=36:Go(f,Te)}function Xe(Te,Ae){Xs.test(Ae)?Te.state=38:yY(Ae)?Te.state=39:Go(f,Te)}function _t(Te,Ae){Te.acceptStateReached=!0,zV(Ae)?Te.state=40:Ae==="#"?Te.state=41:Xs.test(Ae)||(Ae==="("?Te.state=32:yY(Ae)?Te.state=39:(tn(Te),PE(Ae)&&f.push(HV(h,0))))}function ft(Te,Ae){Xs.test(Ae)?Te.state=38:Ae==="("?Te.state=32:(tn(Te),T(Ae))}function ht(Te,Ae){zV(Ae)||(Ae==="#"?Te.state=41:Xs.test(Ae)?Te.state=38:tn(Te))}function vn(Te,Ae){zV(Ae)?Te.state=40:Xs.test(Ae)?Go(f,Te):tn(Te)}function tn(Te){if(Go(f,Te),!!Te.acceptStateReached){var Ae=Te.startIdx,Mn=e.slice(Te.startIdx,h);if(Mn=Mnt(Mn),Te.type==="url"){var Ro=e.charAt(Te.startIdx-1);if(Ro==="@")return;var Wo=Te.matchType;if(Wo==="scheme"){var Sr=dY.exec(Mn);if(Sr&&(Ae=Ae+Sr.index,Mn=Mn.slice(Sr.index)),!ppe(Mn))return}else if(Wo==="tld"){if(!_pe(Mn))return}else if(Wo==="ipV4"){if(!gpe(Mn))return}else Mm(Wo);c.push(new ype({tagBuilder:n,matchedText:Mn,offset:Ae,urlMatchType:Wo,url:Mn,protocolRelativeMatch:Mn.slice(0,2)==="//",stripPrefix:i,stripTrailingSlash:o,decodePercentEncoding:r}))}else if(Te.type==="email")Tpe(Mn)&&c.push(new Cpe({tagBuilder:n,matchedText:Mn,offset:Ae,email:Mn.replace(xpe,"")}));else if(Te.type==="hashtag")Ape(Mn)&&c.push(new Spe({tagBuilder:n,matchedText:Mn,offset:Ae,serviceName:s,hashtag:Mn.slice(1)}));else if(Te.type==="mention")vpe(Mn,a)&&c.push(new Dpe({tagBuilder:n,matchedText:Mn,offset:Ae,serviceName:a,mention:Mn.slice(1)}));else if(Te.type==="phone"){if(Mn=Mn.replace(/ +$/g,""),Ipe(Mn)){var ea=Mn.replace(/[^0-9,;#]/g,"");c.push(new Ppe({tagBuilder:n,matchedText:Mn,offset:Ae,number:ea,plusSign:Mn.charAt(0)==="+"}))}}else Mm(Te)}}}var Rnt=/[\(\{\[]/,Ope=/[\)\}\]]/,Rpe={")":"(","}":"{","]":"["};function Mnt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n);Rnt.test(i)?t[i]++:Ope.test(i)&&t[Rpe[i]]--}for(var o=e.length-1,r;o>=0;)if(r=e.charAt(o),Ope.test(r)){var s=Rpe[r];if(t[s]<0)t[s]++,o--;else break}else if(mpe.test(r))o--;else break;return e.slice(0,o+1)}function HV(e,t){return{type:"url",startIdx:e,state:t,acceptStateReached:!1,matchType:"scheme"}}function xY(e,t){return{type:"url",startIdx:e,state:t,acceptStateReached:!1,matchType:"tld"}}function Lnt(e,t){return{type:"url",startIdx:e,state:t,acceptStateReached:!1,matchType:"ipV4",octetsEncountered:1}}function Nnt(e,t){return{type:"email",startIdx:e,state:t,acceptStateReached:!1}}function Fnt(e,t){return{type:"hashtag",startIdx:e,state:t,acceptStateReached:!1}}function Bnt(e,t){return{type:"mention",startIdx:e,state:t,acceptStateReached:!1}}function bY(e,t){return{type:"phone",startIdx:e,state:t,acceptStateReached:!1}}function knt(e){return e.type==="url"&&e.matchType==="scheme"}function Lpe(e,t){for(var n=t.onOpenTag,i=t.onCloseTag,o=t.onText,r=t.onComment,s=t.onDoctype,a=new Fm,c=0,u=e.length,f=0,h=0,p=a;c<u;){var g=e.charAt(c);switch(f){case 0:m(g);break;case 1:x(g);break;case 2:T(g);break;case 3:b(g);break;case 4:C(g);break;case 5:A(g);break;case 6:E(g);break;case 7:v(g);break;case 8:D(g);break;case 9:R(g);break;case 10:O(g);break;case 11:M(g);break;case 12:N(g);break;case 13:_(g);break;case 14:S(g);break;case 15:w(g);break;case 16:I(g);break;case 17:L(g);break;case 18:B(g);break;case 19:H(g);break;case 20:V(g);break;default:Mm(f)}c++}h<c&&q();function m(K){K==="<"&&k()}function x(K){K==="!"?f=13:K==="/"?(f=2,p=new Fm(Ks(Ks({},p),{isClosing:!0}))):K==="<"?k():Gy.test(K)?(f=3,p=new Fm(Ks(Ks({},p),{isOpening:!0}))):(f=0,p=a)}function b(K){Su.test(K)?(p=new Fm(Ks(Ks({},p),{name:J()})),f=4):K==="<"?k():K==="/"?(p=new Fm(Ks(Ks({},p),{name:J()})),f=12):K===">"?(p=new Fm(Ks(Ks({},p),{name:J()})),W()):!Gy.test(K)&&!Xs.test(K)&&K!==":"&&G()}function T(K){K===">"?G():Gy.test(K)?f=3:G()}function C(K){Su.test(K)||(K==="/"?f=12:K===">"?W():K==="<"?k():K==="="||FV.test(K)||ope.test(K)?G():f=5)}function A(K){Su.test(K)?f=6:K==="/"?f=12:K==="="?f=7:K===">"?W():K==="<"?k():FV.test(K)&&G()}function E(K){Su.test(K)||(K==="/"?f=12:K==="="?f=7:K===">"?W():K==="<"?k():FV.test(K)?G():f=5)}function v(K){Su.test(K)||(K==='"'?f=8:K==="'"?f=9:/[>=`]/.test(K)?G():K==="<"?k():f=10)}function D(K){K==='"'&&(f=11)}function R(K){K==="'"&&(f=11)}function O(K){Su.test(K)?f=4:K===">"?W():K==="<"&&k()}function M(K){Su.test(K)?f=4:K==="/"?f=12:K===">"?W():K==="<"?k():(f=4,j())}function N(K){K===">"?(p=new Fm(Ks(Ks({},p),{isClosing:!0})),W()):f=4}function _(K){e.substr(c,2)==="--"?(c+=2,p=new Fm(Ks(Ks({},p),{type:"comment"})),f=14):e.substr(c,7).toUpperCase()==="DOCTYPE"?(c+=7,p=new Fm(Ks(Ks({},p),{type:"doctype"})),f=20):G()}function S(K){K==="-"?f=15:K===">"?G():f=16}function w(K){K==="-"?f=18:K===">"?G():f=16}function I(K){K==="-"&&(f=17)}function L(K){K==="-"?f=18:f=16}function B(K){K===">"?W():K==="!"?f=19:K==="-"||(f=16)}function H(K){K==="-"?f=17:K===">"?W():f=16}function V(K){K===">"?W():K==="<"&&k()}function G(){f=0,p=a}function k(){f=1,p=new Fm({idx:c})}function W(){var K=e.slice(h,p.idx);K&&o(K,h),p.type==="comment"?r(p.idx):p.type==="doctype"?s(p.idx):(p.isOpening&&n(p.name,p.idx),p.isClosing&&i(p.name,p.idx)),G(),h=c+1}function q(){var K=e.slice(h,c);o(K,h),h=c+1}function J(){var K=p.idx+(p.isClosing?2:1);return e.slice(K,c).toLowerCase()}function j(){c--}}var Fm=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}();var Vnt=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=Unt(t.urls),this.email=Eu(t.email)?t.email:this.email,this.phone=Eu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=Eu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=znt(t.stripPrefix),this.stripTrailingSlash=Eu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Eu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&wpe.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Epe.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=Hnt(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return Lpe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi,u=s.split(c),f=a;u.forEach(function(h,p){if(p%2===0){var g=n.parseText(h,f);r.push.apply(r,g)}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(s){},onDoctype:function(s){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(function(c,u){return c.getOffset()-u.getOffset()});for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length,s=o+r;if(n+1<t.length){if(t[n+1].getOffset()===o){var a=t[n+1].getMatchedText().length>r?n:n+1;t.splice(a,1);continue}if(t[n+1].getOffset()<s){t.splice(n+1,1);continue}}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||Hy(t,function(n){return n.getType()==="hashtag"}),this.email||Hy(t,function(n){return n.getType()==="email"}),this.phone||Hy(t,function(n){return n.getType()==="phone"}),this.mention||Hy(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||Hy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||Hy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||Hy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n===void 0&&(n=0),n=n||0;for(var i=Mpe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"&lt;").replace(/>/g,"&gt;"));for(var n=this.parse(t),i=[],o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof BV)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new upe({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=tpe,e}(),Npe=Vnt;function Unt(e){return e==null&&(e=!0),Eu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:Eu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:Eu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:Eu(e.ipV4Matches)?e.ipV4Matches:!0}}function znt(e){return e==null&&(e=!0),Eu(e)?{scheme:e,www:e}:{scheme:Eu(e.scheme)?e.scheme:!0,www:Eu(e.www)?e.www:!0}}function Hnt(e){return typeof e=="number"?{length:e,location:"end"}:npe(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})}var GV=Npe;var Wpe;typeof DOMParser<"u"&&(Wpe=new DOMParser);var Gnt=new GV({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),WV=32,Fpe=2414016,Bpe=1,kpe=16093e3,Vpe=.1,Wnt=[null,void 0,"http://www.topografix.com/GPX/1/1"],Ao={gpx:Wnt};function jnt(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function TY(e,t){let n=MI(e,"id");return n=l(n)?n:Yn(),t.getOrCreateEntity(n)}function CY(e){let t=Upe(e,"lon"),n=Upe(e,"lat"),i=OI(e,"ele",Ao.gpx);return d.fromDegrees(t,n,i)}function Upe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function MI(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Wy(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function AY(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function OI(e,t,n){let i=Wy(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function Ul(e,t,n){let i=Wy(e,t,n);if(l(i))return i.textContent.trim()}function jpe(e){let t=new Ac;return t.width=WV,t.height=WV,t.scaleByDistance=new Vt(Fpe,Bpe,kpe,Vpe),t.pixelOffsetScaleByDistance=new Vt(Fpe,Bpe,kpe,Vpe),t.verticalOrigin=new $n(Fn.BOTTOM),t.image=e,t}function qnt(){let e=new Uh;return e.translucencyByDistance=new Vt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=yi.LEFT,e.font="16px sans-serif",e.style=Zo.FILL_AND_OUTLINE,e}function qpe(e){let t=new Oc;return t.width=4,t.material=new Jx,t.material.color=l(e)?e:z.RED,t.material.outlineWidth=2,t.material.outlineColor=z.BLACK,t}var zpe={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},RI;typeof document<"u"&&(RI=document.createElement("div"));function EY(e,t){let n,i="",o=Object.keys(zpe),r=o.length;for(n=0;n<r;n++){let f=o[n],h=zpe[f];h.value=y(Ul(e,h.tag,Ao.gpx),""),l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=Gnt.link(i),RI.innerHTML=i;let s=RI.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=z.WHITE,c=z.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${RI.innerHTML}</div>`,RI.innerHTML="",u}function Ype(e,t,n,i){let o=CY(t),r=TY(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",z.RED,WV);r.billboard=jpe(s);let a=Ul(t,"name",Ao.gpx);r.name=a,r.label=qnt(),r.label.text=a,r.description=EY(t,r),i.clampToGround&&(r.billboard.heightReference=qe.CLAMP_TO_GROUND,r.label.heightReference=qe.CLAMP_TO_GROUND)}function Ynt(e,t,n,i){let o=TY(t,n);o.description=EY(t,o);let r=AY(t,"rtept",Ao.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)Ype(e,r[a],n,i),s[a]=CY(r[a]);o.polyline=qpe(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function Xnt(e,t,n,i){let o=TY(t,n);o.description=EY(t,o);let r=AY(t,"trkseg",Ao.gpx),s=[],a=[],c,u=!0,f=new Ra;for(let h=0;h<r.length;h++)c=Knt(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",z.RED,WV);o.billboard=jpe(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=qe.CLAMP_TO_GROUND),o.availability=new Kr,o.availability.addInterval(new An({start:a[0],stop:a[a.length-1]}))}o.polyline=qpe(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function Knt(e){let t={positions:[],times:[]},n=AY(e,"trkpt",Ao.gpx),i;for(let o=0;o<n.length;o++){let r=CY(n[o]);t.positions.push(r),i=Ul(n[o],"time",Ao.gpx),l(i)&&t.times.push($.fromIso8601(i))}return t}function $nt(e){let t=Wy(e,"metadata",Ao.gpx);if(l(t)){let n={name:Ul(t,"name",Ao.gpx),desc:Ul(t,"desc",Ao.gpx),author:Znt(t),copyright:Jnt(t),link:Xpe(t),time:Ul(t,"time",Ao.gpx),keywords:Ul(t,"keywords",Ao.gpx),bounds:eit(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Znt(e){let t=Wy(e,"author",Ao.gpx);if(l(t)){let n={name:Ul(t,"name",Ao.gpx),email:Qnt(t),link:Xpe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Qnt(e){let t=Wy(e,"email",Ao.gpx);if(l(t)){let n=Ul(t,"id",Ao.gpx),i=Ul(t,"domain",Ao.gpx);return`${n}@${i}`}}function Xpe(e){let t=Wy(e,"link",Ao.gpx);if(l(t)){let n={href:MI(t,"href"),text:Ul(t,"text",Ao.gpx),mimeType:Ul(t,"type",Ao.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function Jnt(e){let t=Wy(e,"copyright",Ao.gpx);if(l(t)){let n={author:MI(t,"author"),year:Ul(t,"year",Ao.gpx),license:Ul(t,"license",Ao.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function eit(e){let t=Wy(e,"bounds",Ao.gpx);if(l(t)){let n={minLat:OI(t,"minlat",Ao.gpx),maxLat:OI(t,"maxlat",Ao.gpx),minLon:OI(t,"minlon",Ao.gpx),maxLon:OI(t,"maxlon",Ao.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var Hpe={wpt:Ype,rte:Ynt,trk:Xnt};function tit(e,t,n,i){let o=Object.keys(Hpe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Hpe[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let p=u[h];p.localName===a&&Ao.gpx.indexOf(p.namespaceURI)!==-1&&c(e,p,n,i)}}}function Gpe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=MI(o,"version"),s=MI(o,"creator"),a,c=$nt(o);l(c)&&(a=c.name),o.localName==="gpx"?tit(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,p=f.stop,g=$.equals(h,ze.MINIMUM_VALUE),m=$.equals(p,ze.MAXIMUM_VALUE);if(!g||!m){let b;g&&(b=new Date,b.setHours(0,0,0,0),h=$.fromDate(b)),m&&(b=new Date,b.setHours(24,0,0,0),p=$.fromDate(b)),u=new xm,u.startTime=h,u.stopTime=p,u.currentTime=$.clone(h),u.clockRange=Zr.LOOP_STOP,u.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max($.secondsDifference(p,h)/60,1),31556900))}let x=!1;return e._name!==a&&(e._name=a,x=!0),e._creator!==s&&(e._creator=s,x=!0),nit(e._metadata,c)&&(e._metadata=c,x=!0),e._version!==r&&(e._version=r,x=!0),u!==e._clock&&(x=!0,e._clock=u),x&&e._changed.raiseEvent(e),$r.setLoading(e,!1),e}function nit(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function iit(e,t,n,i){i=y(i,y.EMPTY_OBJECT);let o=n;if(typeof n=="string"||n instanceof Ee){n=Ee.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?jnt(r).then(function(s){let a,c;try{a=Wpe.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new se(u)}return Gpe(e,a,i)}):Gpe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function OE(){this._changed=new me,this._error=new me,this._loading=new me,this._clock=void 0,this._entityCollection=new ha(this),this._entityCluster=new Lf,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new Uy}OE.load=function(e,t){return new OE().load(e,t)};Object.defineProperties(OE.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});OE.prototype.update=function(e){return!0};OE.prototype.load=function(e,t){if(!l(e))throw new de("data is required.");t=y(t,y.EMPTY_OBJECT),$r.setLoading(this,!0);let n=this._name,i=this;return iit(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=$.equals(s,ze.MINIMUM_VALUE),u=$.equals(a,ze.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=$.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=$.fromDate(h)),o=new xm,o.startTime=s,o.stopTime=a,o.currentTime=$.clone(s),o.clockRange=Zr.LOOP_STOP,o.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max($.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),$r.setLoading(i,!1),i}).catch(function(o){return $r.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var jV=OE;function oit(e,t){this.position=e,this.headingPitchRoll=t}var qV=oit;var NI=Hr($l(),1);function rit(e,t){this.position=e,this.headingPitchRange=t}var YV=rit;function XV(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new me,this.tourEnd=new me,this.entryStart=new me,this.entryEnd=new me,this._activeEntries=[]}XV.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};XV.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;$pe.call(this,e,t,function(i){n.playlistIndex=0,i||Kpe(n._activeEntries),n.tourEnd.raiseEvent(i)})};XV.prototype.stop=function(){Kpe(this._activeEntries)};function Kpe(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function $pe(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=sit.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function sit(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,$pe.call(this,e,t,n)}}var KV=XV;var Di=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Di.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Di.Bounce.In(e*2)*.5:Di.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),LI=function(){return performance.now()},ait=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=LI()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),RE={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=RE.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=RE.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=RE.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=RE.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},Zpe=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),SY=new ait,Qpe=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Di.Linear.None,this._interpolationFunction=RE.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=Zpe.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=SY,SY.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=LI()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var p=[a],g=0,m=h.length;g<m;g+=1){var x=this._handleRelativeValue(a,h[g]);if(isNaN(x)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}p.push(x)}f&&(i[s]=p)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var b=a;for(var T in b)n[s][T]=b[T];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var C={};for(var T in h)C[T]=h[T];i[s]=h=C}this._setupProperties(b,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=LI()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=LI()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Di.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=RE.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=LI()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var x=Math.trunc(s/a),b=s-x*a,T=Math.min(b/i._duration,1);return T===0&&s===i._duration?1:T},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var p=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=p);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*p,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var Bti=Zpe.nextId,Bm=SY,kti=Bm.getAll.bind(Bm),Vti=Bm.removeAll.bind(Bm),Uti=Bm.add.bind(Bm),zti=Bm.remove.bind(Bm),Hti=Bm.update.bind(Bm);var cit={LINEAR_NONE:Di.Linear.None,QUADRATIC_IN:Di.Quadratic.In,QUADRATIC_OUT:Di.Quadratic.Out,QUADRATIC_IN_OUT:Di.Quadratic.InOut,CUBIC_IN:Di.Cubic.In,CUBIC_OUT:Di.Cubic.Out,CUBIC_IN_OUT:Di.Cubic.InOut,QUARTIC_IN:Di.Quartic.In,QUARTIC_OUT:Di.Quartic.Out,QUARTIC_IN_OUT:Di.Quartic.InOut,QUINTIC_IN:Di.Quintic.In,QUINTIC_OUT:Di.Quintic.Out,QUINTIC_IN_OUT:Di.Quintic.InOut,SINUSOIDAL_IN:Di.Sinusoidal.In,SINUSOIDAL_OUT:Di.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Di.Sinusoidal.InOut,EXPONENTIAL_IN:Di.Exponential.In,EXPONENTIAL_OUT:Di.Exponential.Out,EXPONENTIAL_IN_OUT:Di.Exponential.InOut,CIRCULAR_IN:Di.Circular.In,CIRCULAR_OUT:Di.Circular.Out,CIRCULAR_IN_OUT:Di.Circular.InOut,ELASTIC_IN:Di.Elastic.In,ELASTIC_OUT:Di.Elastic.Out,ELASTIC_IN_OUT:Di.Elastic.InOut,BACK_IN:Di.Back.In,BACK_OUT:Di.Back.Out,BACK_IN_OUT:Di.Back.InOut,BOUNCE_IN:Di.Bounce.In,BOUNCE_OUT:Di.Bounce.Out,BOUNCE_IN_OUT:Di.Bounce.InOut},Jr=Object.freeze(cit);function $V(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}$V.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new ce(this.view.position);t.flyToBoundingSphere(o,i)}};$V.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};$V.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=Jr.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=At(t,e)),t};var ZV=$V;function vY(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}vY.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};vY.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var QV=vY;var c_e={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=xT(t),c_e[t]}},MY;typeof DOMParser<"u"&&(MY=new DOMParser);var lit=new GV({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),jy=32,Jpe=2414016,e_e=1,t_e=16093e3,n_e=.1,i_e=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],o_e=["http://www.google.com/kml/ext/2.2"],uit=["http://www.w3.org/2005/Atom"],Oe={kml:i_e,gx:o_e,atom:uit,kmlgx:i_e.concat(o_e)},LY={Document:y_e,Folder:Iit,Placemark:Pit,NetworkLink:Vit,GroundOverlay:Fit,PhotoOverlay:T_e,ScreenOverlay:Nit,Tour:Rit};function km(e){this._dataSource=e,this._deferred=Zl(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(km.prototype,{dataSource:{get:function(){return this._dataSource}}});km.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};km.prototype.addPromise=function(e){this._promises.push(e)};km.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};km.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=Du._getTimestamp()),this._process(e)};km.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=Du._getTimestamp(),e._process(!0)},0)};km.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};km.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};km.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=LY[i.localName];if(l(o)&&(Oe.kml.indexOf(i.namespaceURI)!==-1||Oe.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||Du._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function fit(e){let t=e.slice(0,Math.min(4,e.size)),n=Zl(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function dit(e){let t=Zl(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function l_e(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function u_e(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function hit(e,t){return Promise.resolve(e.getData(new uV)).then(function(n){n=l_e(n),n=u_e(n),t.kml=MY.parseFromString(n,"application/xml")})}function wY(e,t){let n=y(c_e.detectFromFilename(e.filename),"application/octet-stream");return Promise.resolve(e.getData(new cV(n))).then(function(i){t[e.filename]=i})}function vu(e,t,n,i){let o=i.keys,r=new NI.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new NI.default(u).absoluteTo(r).toString(),p=o.indexOf(h);if(p!==-1){let g=o[p];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function wu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=NY(a,i);l(c)&&s.setAttribute(n,c.url)}}function f_e(e,t,n){let i=Ps(e,"id");i=l(i)&&i.length!==0?i:Yn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Yn(),l(n)&&(i=n+i)),o=t.add(new ar({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new Git),o}function FI(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function nU(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function JV(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=nU(n[s],t);return o}function qy(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Ps(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Ii(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function r_e(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function oh(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function Qn(e,t,n){let i=Ii(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function In(e,t,n){let i=Ii(e,t,n);if(l(i))return i.textContent.trim()}function rh(e,t,n){let i=Ii(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function NY(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new Ee({url:o});else{let r=new NI.default(t.getUrlComponent()),s=new NI.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new Ee({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var zl={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function OY(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(zl.maximumRed=r,zl.red=void 0):(zl.maximumRed=void 0,zl.red=0),o>0?(zl.maximumGreen=o,zl.green=void 0):(zl.maximumGreen=void 0,zl.green=0),i>0?(zl.maximumBlue=i,zl.blue=void 0):(zl.maximumBlue=void 0,zl.blue=0),zl.alpha=n,z.fromRandom(zl)):new z(r,o,i,n)}function Cb(e,t,n){let i=In(e,t,n);if(l(i))return OY(i,In(e,"colorMode",n)==="random")}function mit(e){let t=Ii(e,"TimeStamp",Oe.kmlgx),n=In(t,"when",Oe.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=$.fromIso8601(n),o=new Kr;return o.addInterval(new An({start:i,stop:ze.MAXIMUM_VALUE})),o}function pit(e){let t=Ii(e,"TimeSpan",Oe.kmlgx);if(!l(t))return;let n,i=Ii(t,"begin",Oe.kmlgx),o=l(i)?$.fromIso8601(i.textContent):void 0,r=Ii(t,"end",Oe.kmlgx),s=l(r)?$.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if($.lessThan(s,o)){let a=o;o=s,s=a}n=new Kr,n.addInterval(new An({start:o,stop:s}))}else l(o)?(n=new Kr,n.addInterval(new An({start:o,stop:ze.MAXIMUM_VALUE}))):l(s)&&(n=new Kr,n.addInterval(new An({start:ze.MINIMUM_VALUE,stop:s})));return n}function d_e(){let e=new Ac;return e.width=jy,e.height=jy,e.scaleByDistance=new Vt(Jpe,e_e,t_e,n_e),e.pixelOffsetScaleByDistance=new Vt(Jpe,e_e,t_e,n_e),e}function FY(){let e=new zh;return e.outline=!0,e.outlineColor=z.WHITE,e}function h_e(){let e=new Uh;return e.translucencyByDistance=new Vt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=yi.LEFT,e.font="16px sans-serif",e.style=Zo.FILL_AND_OUTLINE,e}function BY(e,t,n,i,o){let r=In(e,"href",Oe.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=y(Qn(e,"x",Oe.gx),0),u=y(Qn(e,"y",Oe.gx),0);c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=NY(r,n,i);if(o){let a=In(e,"refreshMode",Oe.kml),c=In(e,"viewRefreshMode",Oe.kml);a==="onInterval"||a==="onExpire"?Ct(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&Ct(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=y(In(e,"viewBoundScale",Oe.kml),1),f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=y(In(e,"viewFormat",Oe.kml),f),p=In(e,"httpQuery",Oe.kml);l(h)&&s.setQueryParameters(Ku(tU(h))),l(p)&&s.setQueryParameters(Ku(tU(p)));let g=t._ellipsoid;return VY(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function _it(e,t,n,i,o){let r=Qn(t,"scale",Oe.kml),s=Qn(t,"heading",Oe.kml),a=Cb(t,"color",Oe.kml),c=Ii(t,"Icon",Oe.kml),u=BY(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=Qn(c,"x",Oe.gx),h=Qn(c,"y",Oe.gx),p=Qn(c,"w",Oe.gx),g=Qn(c,"h",Oe.gx),m=Ii(t,"hotSpot",Oe.kml),x=qy(m,"x"),b=qy(m,"y"),T=Ps(m,"xunits"),C=Ps(m,"yunits"),A=n.billboard;l(A)||(A=d_e(),n.billboard=A),A.image=u,A.scale=r,A.color=a,(l(f)||l(h)||l(p)||l(g))&&(A.imageSubRegion=new je(f,h,p,g)),l(s)&&s!==0&&(A.rotation=P.toRadians(-s),A.alignedAxis=d.UNIT_Z),r=y(r,1);let E,v;l(x)&&(T==="pixels"?E=-x*r:T==="insetPixels"?E=(x-jy)*r:T==="fraction"&&(E=-x*jy*r),E+=jy*.5*r),l(b)&&(C==="pixels"?v=b*r:C==="insetPixels"?v=(-b+jy)*r:C==="fraction"&&(v=b*jy*r),v-=jy*.5*r),(l(E)||l(v))&&(A.pixelOffset=new U(E,v))}function eU(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")_it(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=h_e(),n.label=c),c.scale=y(Qn(a,"scale",Oe.kml),c.scale),c.fillColor=y(Cb(a,"color",Oe.kml),c.fillColor),c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new Oc,n.polyline=c),c.width=Qn(a,"width",Oe.kml),c.material=Cb(a,"color",Oe.kml),l(Cb(a,"outerColor",Oe.gx))&&Ct("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(Qn(a,"outerWidth",Oe.gx))&&Ct("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(Qn(a,"physicalWidth",Oe.gx))&&Ct("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(rh(a,"labelVisibility",Oe.gx))&&Ct("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=FY(),n.polygon=c),c.material=y(Cb(a,"color",Oe.kml),c.material),c.fill=y(rh(a,"fill",Oe.kml),c.fill),c.outline=y(rh(a,"outline",Oe.kml),c.outline)}else if(a.localName==="BalloonStyle"){let c=y(OY(In(a,"bgColor",Oe.kml)),z.WHITE),u=y(OY(In(a,"textColor",Oe.kml)),z.BLACK),f=In(a,"text",Oe.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=In(a,"listItemType",Oe.kml);(c==="radioFolder"||c==="checkOffOnly")&&Ct(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function git(e,t,n,i,o){let r=new ar,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let p=c[h];(p.localName==="Style"||p.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")eU(e,h,r,i,o);else{let p=oh(h,"Pair",Oe.kml);for(let g=0;g<p.length;g++){let m=p[g],x=In(m,"key",Oe.kml);if(x==="normal"){let b=In(m,"styleUrl",Oe.kml);if(l(b))s=n.getById(b),l(s)||(s=n.getById(`#${b}`)),l(s)&&r.merge(s);else{let T=Ii(m,"Style",Oe.kml);eU(e,T,r,i,o)}}else Ct(`kml-styleMap-${x}`,`KML - Unsupported StyleMap key: ${x}`)}}}let f=In(t,"styleUrl",Oe.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let p=f.split("#"),g=p[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${p[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function yit(e,t,n){return t.fetchXML().then(function(i){return m_e(e,i,n,t,!0)})}function m_e(e,t,n,i,o,r){let s,a,c,u,f=r_e(t,"Style",Oe.kml);if(l(f)){let x=f.length;for(s=0;s<x;s++)u=f[s],a=Ps(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new ar({id:a}),n.add(c),eU(e,u,c,i,r)))}let h=r_e(t,"StyleMap",Oe.kml);if(l(h)){let x=h.length;for(s=0;s<x;s++){let b=h[s];if(a=Ps(b,"id"),l(a)){let T=oh(b,"Pair",Oe.kml);for(let C=0;C<T.length;C++){let A=T[C],E=In(A,"key",Oe.kml);if(E==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let v=In(A,"styleUrl",Oe.kml);if(l(v)){v[0]!=="#"&&(v=`#${v}`),o&&l(i)&&(v=i.getUrlComponent()+v);let D=n.getById(v);l(D)&&c.merge(D)}else u=Ii(A,"Style",Oe.kml),eU(e,u,c,i,r)}}else Ct(`kml-styleMap-${E}`,`KML - Unsupported StyleMap key: ${E}`)}}}}let p=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let x=g[s].textContent;if(x[0]!=="#"){let b=x.split("#");if(b.length===2){let T=b[0],C=i.getDerivedResource({url:T});p.push(yit(e,C,n))}}}return p}function kY(e,t,n){let i=new gy(e,t.id,["position"]),o=new p_(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new Oc,t.polyline.positions=new py([i,o])}function p_e(e,t){return!l(e)&&!l(t)||e==="clampToGround"?qe.CLAMP_TO_GROUND:e==="relativeToGround"?qe.RELATIVE_TO_GROUND:e==="absolute"?qe.NONE:t==="clampToSeaFloor"?(Ct("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),qe.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(Ct("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),qe.RELATIVE_TO_GROUND):(l(e)?Ct("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):Ct("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),qe.CLAMP_TO_GROUND)}function xit(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&Ct("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${y(t,n)}`),new p_(e))}function bit(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&Ct("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${y(t,n)}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function iU(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():h_e(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():d_e(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(z.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new U(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function __e(e,t){let n=e.path;l(n)||(n=new rg,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Tit(e,t,n,i,o){let r=In(n,"coordinates",Oe.kml),s=In(n,"altitudeMode",Oe.kml),a=In(n,"altitudeMode",Oe.gx),c=rh(n,"extrude",Oe.kml),u=e._ellipsoid,f=nU(r,u);return i.position=f,iU(e,i,o,p_e(s,a)),c&&FI(s,a)&&kY(t,i,o),!0}function s_e(e,t,n,i,o){let r=Ii(n,"coordinates",Oe.kml),s=In(n,"altitudeMode",Oe.kml),a=In(n,"altitudeMode",Oe.gx),c=rh(n,"extrude",Oe.kml),u=rh(n,"tessellate",Oe.kml),f=FI(s,a),h=Qn(n,"drawOrder",Oe.gx),p=e._ellipsoid,g=JV(r,p),m=o.polyline;if(f&&c){let x=new sg;i.wall=x,x.positions=g;let b=o.polygon;l(b)&&(x.fill=b.fill,x.material=b.material),x.outline=!0,l(m)?(x.outlineColor=l(m.material)?m.material.color:z.WHITE,x.outlineWidth=m.width):l(b)&&(x.outlineColor=l(b.material)?b.material.color:z.WHITE)}else if(e._clampToGround&&!f&&u){let x=new Oc;x.clampToGround=!0,i.polyline=x,x.positions=g,l(m)?(x.material=l(m.material)?m.material.color.getValue(ze.MINIMUM_VALUE):z.WHITE,x.width=y(m.width,1)):(x.material=z.WHITE,x.width=1),x.zIndex=h}else l(h)&&Ct("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&Ct("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new Oc,i.polyline=m,m.positions=bit(g,s,a,p),(!u||f)&&(m.arcType=en.NONE);return!0}function Cit(e,t,n,i,o){let r=Ii(n,"outerBoundaryIs",Oe.kml),s=Ii(r,"LinearRing",Oe.kml),a=Ii(s,"coordinates",Oe.kml),c=e._ellipsoid,u=JV(a,c),f=rh(n,"extrude",Oe.kml),h=In(n,"altitudeMode",Oe.kml),p=In(n,"altitudeMode",Oe.gx),g=FI(h,p),m=l(o.polygon)?o.polygon.clone():FY(),x=o.polyline;if(l(x)&&(m.outlineColor=l(x.material)?x.material.color:z.WHITE,m.outlineWidth=x.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let b=new Za(u),T=oh(n,"innerBoundaryIs",Oe.kml);for(let C=0;C<T.length;C++){s=oh(T[C],"LinearRing",Oe.kml);for(let A=0;A<s.length;A++)a=Ii(s[A],"coordinates",Oe.kml),u=JV(a,c),l(u)&&b.holes.push(new Za(u))}m.hierarchy=b}return!0}function Ait(e,t,n,i,o){let r=In(n,"altitudeMode",Oe.kml),s=In(n,"altitudeMode",Oe.gx),a=oh(n,"coord",Oe.gx),c=oh(n,"angles",Oe.gx),u=oh(n,"when",Oe.kml),f=rh(n,"extrude",Oe.kml),h=FI(r,s),p=e._ellipsoid;c.length>0&&Ct("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],x=[];for(let T=0;T<g;T++){let C=nU(a[T].textContent,p);m.push(C),x.push($.fromIso8601(u[T].textContent))}let b=new Ra;return b.addSamples(x,m),i.position=b,iU(e,i,o,p_e(r,s)),__e(i,o),i.availability=new Kr,u.length>0&&i.availability.addInterval(new An({start:x[0],stop:x[x.length-1]})),h&&f&&kY(t,i,o),!0}function a_e(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new Ra;h.addSamples(e,t),n.intervals.addInterval(new An({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:xit(h,s,a)})),i.addInterval(new An({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new An({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Eit(e,t,n,i,o){let r=rh(n,"interpolate",Oe.gx),s=oh(n,"Track",Oe.gx),a,c,u,f=!1,h=new by,p=new Kr,g=new Oa,m=e._ellipsoid;for(let x=0,b=s.length;x<b;x++){let T=s[x],C=oh(T,"when",Oe.kml),A=oh(T,"coord",Oe.gx),E=In(T,"altitudeMode",Oe.kml),v=In(T,"altitudeMode",Oe.gx),D=FI(E,v),R=rh(T,"extrude",Oe.kml),O=Math.min(A.length,C.length),M=[];a=[];for(let N=0;N<O;N++){let _=nU(A[N].textContent,m);M.push(_),a.push($.fromIso8601(C[N].textContent))}r&&(l(c)&&a_e([c,a[0]],[u,M[0]],g,p,h,!1,"absolute",void 0,!1),c=a[O-1],u=M[M.length-1]),a_e(a,M,g,p,h,D&&R,E,v,!0),f=f||D&&R}return i.availability=p,i.position=g,iU(e,i,o),__e(i,o),f&&(kY(t,i,o),i.polyline.show=h),!0}var g_e={Point:Tit,LineString:s_e,LinearRing:s_e,Polygon:Cit,Track:Ait,MultiTrack:Eit,MultiGeometry:Sit,Model:vit};function Sit(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=g_e[f.localName];if(l(h)){let p=f_e(f,t,r);p.parent=i,p.name=i.name,p.availability=i.availability,p.description=i.description,p.kml=i.kml,h(e,t,f,p,o)&&(a=!0)}}return a}function vit(e,t,n,i,o){return Ct("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function wit(e,t){let n=Ii(e,"ExtendedData",Oe.kml);if(!l(n))return;l(Ii(n,"SchemaData",Oe.kml))&&Ct("kml-schemaData","KML - SchemaData is unsupported"),l(Ps(n,"xmlns:prefix"))&&Ct("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=oh(n,"Data",Oe.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Ps(a,"name");l(c)&&(i[c]={displayName:In(a,"displayName",Oe.kml),value:In(a,"value",Oe.kml)})}}t.kml.extendedData=i}var mo;typeof document<"u"&&(mo=document.createElement("div"));function Dit(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=In(e,"description",Oe.kml),h=y(t.balloonStyle,n.balloonStyle),p=z.WHITE,g=z.BLACK,m=f;l(h)&&(p=y(h.bgColor,z.WHITE),g=y(h.textColor,z.BLACK),m=y(h.text,f));let x;if(l(m)){if(m=m.replace("$[name]",y(t.name,"")),m=m.replace("$[description]",y(f,"")),m=m.replace("$[address]",y(c.address,"")),m=m.replace("$[Snippet]",y(c.snippet,"")),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let C=m.match(/\$\[.+?\]/g);if(C!==null)for(r=0;r<C.length;r++){let A=C[r],E=A.substr(2,A.length-3),v=/\/displayName$/.test(E);E=E.replace(/\/displayName$/,""),x=u[E],l(x)&&(x=v?x.displayName:x.value),l(x)&&(m=m.replace(A,y(x,"")))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],x=u[s],m+=`<tr><th>${y(x.displayName,s)}</th><td>${y(x.value,"")}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=lit.link(m),mo.innerHTML=m;let b=mo.querySelectorAll("a");for(r=0;r<b.length;r++)b[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(vu(mo,"a","href",i),vu(mo,"link","href",i),vu(mo,"area","href",i),vu(mo,"img","src",i),vu(mo,"iframe","src",i),vu(mo,"video","src",i),vu(mo,"audio","src",i),vu(mo,"source","src",i),vu(mo,"track","src",i),vu(mo,"input","src",i),vu(mo,"embed","src",i),vu(mo,"script","src",i),vu(mo,"video","poster",i)),wu(mo,"a","href",o),wu(mo,"link","href",o),wu(mo,"area","href",o),wu(mo,"img","src",o),wu(mo,"iframe","src",o),wu(mo,"video","src",o),wu(mo,"audio","src",o),wu(mo,"source","src",o),wu(mo,"track","src",o),wu(mo,"input","src",o),wu(mo,"embed","src",o),wu(mo,"script","src",o),wu(mo,"video","poster",o);let T='<div class="cesium-infoBox-description-lighter" style="';T+="overflow:auto;",T+="word-wrap:break-word;",T+=`background-color:${p.toCssColorString()};`,T+=`color:${g.toCssColorString()};`,T+='">',T+=`${mo.innerHTML}</div>`,mo.innerHTML="",t.description=T}function oU(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=f_e(t,i,n.context),c=a.kml,u=git(e,t,n.styleCollection,r,s),f=In(t,"name",Oe.kml);a.name=f,a.parent=o;let h=pit(t);l(h)||(h=mit(t)),a.availability=h,zY(a);function p(A){return A?A.show&&p(A.parent):!0}let g=rh(t,"visibility",Oe.kml);a.show=p(o)&&y(g,!0);let m=Ii(t,"author",Oe.atom),x=c.author;x.name=In(m,"name",Oe.atom),x.uri=In(m,"uri",Oe.atom),x.email=In(m,"email",Oe.atom);let b=Ii(t,"link",Oe.atom),T=c.link;T.href=Ps(b,"href"),T.hreflang=Ps(b,"hreflang"),T.rel=Ps(b,"rel"),T.type=Ps(b,"type"),T.title=Ps(b,"title"),T.length=Ps(b,"length"),c.address=In(t,"address",Oe.kml),c.phoneNumber=In(t,"phoneNumber",Oe.kml),c.snippet=In(t,"Snippet",Oe.kml),wit(t,a),Dit(t,a,u,s,r);let C=e._ellipsoid;return b_e(t,a,C),x_e(t,a,C),l(Ii(t,"Region",Oe.kml))&&Ct("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function y_e(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Iit(e,t,n,i){let o=oU(e,t,n),r=He(n);r.parentEntity=o.entity,y_e(e,t,r,i)}function Pit(e,t,n,i){let o=oU(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),p=g_e[h.localName];l(p)&&(p(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),iU(e,r,s))}var Oit={FlyTo:Lit,Wait:Mit,SoundCue:DY,AnimatedUpdate:DY,TourControl:DY};function Rit(e,t,n,i){let o=In(t,"name",Oe.kml),r=Ps(t,"id"),s=new KV(o,r),a=Ii(t,"Playlist",Oe.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let p=Oit[h.localName];p?p(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function DY(e,t){Ct(`KML Tour unsupported node ${t.localName}`)}function Mit(e,t){let n=Qn(t,"duration",Oe.gx);e.addPlaylistEntry(new QV(n))}function Lit(e,t,n){let i=Qn(t,"duration",Oe.gx),o=In(t,"flyToMode",Oe.gx),r={kml:{}};b_e(t,r,n),x_e(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new ZV(i,o,s);e.addPlaylistEntry(a)}function x_e(e,t,n){let i=Ii(e,"Camera",Oe.kml);if(l(i)){let o=y(Qn(i,"longitude",Oe.kml),0),r=y(Qn(i,"latitude",Oe.kml),0),s=y(Qn(i,"altitude",Oe.kml),0),a=y(Qn(i,"heading",Oe.kml),0),c=y(Qn(i,"tilt",Oe.kml),0),u=y(Qn(i,"roll",Oe.kml),0),f=d.fromDegrees(o,r,s,n),h=Wa.fromDegrees(a,c-90,u);t.kml.camera=new qV(f,h)}}function b_e(e,t,n){let i=Ii(e,"LookAt",Oe.kml);if(l(i)){let o=y(Qn(i,"longitude",Oe.kml),0),r=y(Qn(i,"latitude",Oe.kml),0),s=y(Qn(i,"altitude",Oe.kml),0),a=Qn(i,"heading",Oe.kml),c=Qn(i,"tilt",Oe.kml),u=y(Qn(i,"range",Oe.kml),0);c=P.toRadians(y(c,0)),a=P.toRadians(y(a,0));let f=new Jd(a,c-P.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new YV(h,f)}}function Nit(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=Ii(t,"Icon",Oe.kml),c=BY(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=Ii(t,"screenXY",Oe.kml),p=Ii(t,"overlayXY",Oe.kml),g=Ii(t,"size",Oe.kml),m,x,b,T,C,A;l(g)&&(m=qy(g,"x"),x=qy(g,"y"),b=Ps(g,"xunits"),T=Ps(g,"yunits"),l(m)&&m!==-1&&m!==0&&(b==="fraction"?C=`width: ${Math.floor(m*100)}%`:b==="pixels"&&(C=`width: ${m}px`),f.push(C)),l(x)&&x!==-1&&x!==0&&(T==="fraction"?A=`height: ${Math.floor(x*100)}%`:T==="pixels"&&(A=`height: ${x}px`),f.push(A))),u.style=f.join(";");let E=0,v=u.height;l(p)&&(m=qy(p,"x"),x=qy(p,"y"),b=Ps(p,"xunits"),T=Ps(p,"yunits"),l(m)&&(b==="fraction"?E=m*u.width:(b==="pixels"||b==="insetPixels")&&(E=m)),l(x)&&(T==="fraction"?v=x*u.height:(T==="pixels"||T==="insetPixels")&&(v=x))),l(h)&&(m=qy(h,"x"),x=qy(h,"y"),b=Ps(h,"xunits"),T=Ps(h,"yunits"),l(m)&&(b==="fraction"?C=`left: calc(${Math.floor(m*100)}% - ${E}px)`:b==="pixels"?C=`left: ${m-E}px`:b==="insetPixels"&&(C=`right: ${m-E}px`),f.push(C)),l(x)&&(T==="fraction"?A=`bottom: calc(${Math.floor(x*100)}% - ${v}px)`:T==="pixels"?A=`bottom: ${x-v}px`:T==="insetPixels"&&(A=`top: ${x-v}px`),f.push(A))),u.style=f.join(";")},o.appendChild(u)}function Fit(e,t,n,i){let r=oU(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=JV(Ii(t,"LatLonQuad",Oe.gx),c),f=Qn(t,"drawOrder",Oe.kml);if(l(u))s=FY(),s.hierarchy=new Za(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new Hh,s.zIndex=f,r.rectangle=s;let m=Ii(t,"LatLonBox",Oe.kml);if(l(m)){let x=Qn(m,"west",Oe.kml),b=Qn(m,"south",Oe.kml),T=Qn(m,"east",Oe.kml),C=Qn(m,"north",Oe.kml);l(x)&&(x=P.negativePiToPi(P.toRadians(x))),l(b)&&(b=P.clampToLatitudeRange(P.toRadians(b))),l(T)&&(T=P.negativePiToPi(P.toRadians(T))),l(C)&&(C=P.clampToLatitudeRange(P.toRadians(C))),s.coordinates=new ae(x,b,T,C);let A=Qn(m,"rotation",Oe.kml);if(l(A)){let E=P.toRadians(A);s.rotation=E,s.stRotation=E}}}let h=Ii(t,"Icon",Oe.kml),p=BY(h,e,n.sourceResource,n.uriResolver,!0);if(l(p)){a&&Ct("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=Qn(h,"x",Oe.gx),x=Qn(h,"y",Oe.gx),b=Qn(h,"w",Oe.gx),T=Qn(h,"h",Oe.gx);(l(m)||l(x)||l(b)||l(T))&&Ct("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=p,s.material.color=Cb(t,"color",Oe.kml),s.material.transparent=!0}else s.material=Cb(t,"color",Oe.kml);let g=In(t,"altitudeMode",Oe.kml);l(g)?g==="absolute"?(s.height=Qn(t,"altitude",Oe.kml),s.zIndex=void 0):g!=="clampToGround"&&Ct("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=In(t,"altitudeMode",Oe.gx),g==="relativeToSeaFloor"?(Ct("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=Qn(t,"altitude",Oe.kml),s.zIndex=void 0):g==="clampToSeaFloor"?Ct("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&Ct("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function T_e(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),Ct(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var Yy={INTERVAL:0,EXPIRE:1,STOP:2};function tU(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var Bit=new ae,ME=new fe,IY=new U,kit=new d;function VY(e,t,n,i,o,r){function s(u){return u<-P.PI_OVER_TWO?-P.PI_OVER_TWO:u>P.PI_OVER_TWO?P.PI_OVER_TWO:u}function a(u){return u>P.PI?u-P.TWO_PI:u<-P.PI?u+P.TWO_PI:u}let c=CT(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ne.MORPHING){let u,f;if(o=y(o,Bit),l(n)&&(IY.x=n.clientWidth*.5,IY.y=n.clientHeight*.5,u=t.pickEllipsoid(IY,r,kit)),l(u)?f=r.cartesianToCartographic(u,ME):(f=ae.center(o,ME),u=r.cartographicToCartesian(f)),l(i)&&!P.equalsEpsilon(i,1,P.EPSILON9)){let T=o.width*i*.5,C=o.height*i*.5;o=new ae(a(f.longitude-T),s(f.latitude-C),a(f.longitude+T),s(f.latitude+C))}c=c.replace("[bboxWest]",P.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",P.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",P.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",P.toDegrees(o.north).toString());let h=P.toDegrees(f.longitude).toString(),p=P.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",p),c=c.replace("[lookatTilt]",P.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",P.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",p),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,ME),c=c.replace("[cameraLon]",P.toDegrees(ME.longitude).toString()),c=c.replace("[cameraLat]",P.toDegrees(ME.latitude).toString()),c=c.replace("[cameraAlt]",P.toDegrees(ME.height).toString());let g=t.frustum,m=g.aspectRatio,x="",b="";if(l(m)){let T=P.toDegrees(g.fov);m>1?(x=T,b=T/m):(b=T,x=T*m)}c=c.replace("[horizFov]",x.toString()),c=c.replace("[vertFov]",b.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Ku(c))}function Vit(e,t,n,i){let r=oU(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=Ii(t,"Link",Oe.kml);if(l(c)||(c=Ii(t,"Url",Oe.kml)),l(c)){let u=In(c,"href",Oe.kml),f,h;if(l(u)){let p=u;if(u=NY(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(p=s.getDerivedResource({url:p}));else{if(p=u.clone(),f=In(c,"viewRefreshMode",Oe.kml),f==="onRegion"){Ct("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=y(In(c,"viewBoundScale",Oe.kml),1);let b=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",T=y(In(c,"viewFormat",Oe.kml),b),C=In(c,"httpQuery",Oe.kml);l(T)&&u.setQueryParameters(Ku(tU(T))),l(C)&&u.setQueryParameters(Ku(tU(C)));let A=e._ellipsoid;VY(u,e.camera,e.canvas,h,e._lastCameraView.bbox,A)}let g={sourceUri:p,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new ha,x=UY(e,m,u,g).then(function(b){let T=e._entityCollection,C=m.values;T.suspendEvents();for(let v=0;v<C.length;v++){let D=C[v];l(D.parent)||(D.parent=r,zY(D)),T.add(D)}T.resumeEvents();let A=In(c,"refreshMode",Oe.kml),E=y(Qn(c,"refreshInterval",Oe.kml),0);if(A==="onInterval"&&E>0||A==="onExpire"||f==="onStop"){let v=Ii(b,"NetworkLinkControl",Oe.kml),D=l(v),R=$.now(),O={id:Yn(),href:u,cookie:{},lastUpdated:R,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:R},M=0;if(D&&(O.cookie=Ku(y(In(v,"cookie",Oe.kml),"")),M=y(Qn(v,"minRefreshPeriod",Oe.kml),0)),A==="onInterval")D&&(E=Math.max(M,E)),O.refreshMode=Yy.INTERVAL,O.time=E;else if(A==="onExpire"){let N;if(D&&(N=In(v,"expires",Oe.kml)),l(N))try{let _=$.fromIso8601(N),S=$.secondsDifference(_,R);S>0&&S<M&&$.addSeconds(R,M,_),O.refreshMode=Yy.EXPIRE,O.time=_}catch{Ct("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else Ct("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(O.refreshMode=Yy.STOP,O.time=y(Qn(c,"viewRefreshTime",Oe.kml),0)):Ct("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(O.refreshMode)&&e._networkLinks.set(O.id,O)}}).catch(function(b){Ct(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,b)});i.addPromise(x)}}}function Uit(e,t,n,i){let o=LY[t.localName];return l(o)?o(e,t,n,i):T_e(e,t,n,i)}function RY(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:Ii(a,"Document",Oe.kml),u=In(c,"name",Oe.kml);l(u)||(u=my(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new Du._DeferredLoading(e),h=new ha(e);return Promise.all(m_e(e,n,h,i,!1,o)).then(function(){let p=n.documentElement;if(p.localName==="kml"){let m=p.childNodes;for(let x=0;x<m.length;x++){let b=m[x];if(l(LY[b.localName])){p=b;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),Uit(e,p,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function zit(e,t,n,i,o){let r=nn("ThirdParty/Workers/z-worker-pako.js");CE({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new vV(new x_(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let p=a[h];p.directory||(/\.kml$/i.test(p.filename)&&(!l(f)||!/\//i.test(p.filename))?(l(f)&&c.push(wY(f,u)),f=p):c.push(wY(p,u)))}return l(f)&&c.push(hit(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new se("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),RY(e,t,u.kml,i,u,o)})})}function UY(e,t,n,i){i=y(i,y.EMPTY_OBJECT);let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof Ee){n=Ee.createIfNeeded(n),c=n.fetchBlob(),o=y(o,n.clone());let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let p=0;p<h;p++)u.push(f[p])}}else o=y(o,Ee.DEFAULT.clone());return o=Ee.createIfNeeded(o),l(a)&&(a=Rn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?fit(u).then(function(f){return f?zit(e,t,u,o,a):dit(u).then(function(h){h=l_e(h),h=u_e(h);let p,g;try{p=MY.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||p.body||p.documentElement.tagName==="parsererror"){let m=l(g)?g:p.documentElement.firstChild.nodeValue;throw m||(m=p.body.innerText),new se(m)}return RY(e,t,p,o,r,a,s)})}):RY(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function Du(e){e=y(e,y.EMPTY_OBJECT);let t=e.camera,n=e.canvas;this._changed=new me,this._error=new me,this._loading=new me,this._refresh=new me,this._unsupportedNode=new me,this._clock=void 0,this._entityCollection=new ha(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new Uy,this._networkLinks=new wt,this._entityCluster=new Lf,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=y(e.ellipsoid,ee.default);let i=e.credit;typeof i=="string"&&(i=new vt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}Du.load=function(e,t){return t=y(t,y.EMPTY_OBJECT),new Du(t).load(e,t)};Object.defineProperties(Du.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});Du.prototype.load=function(e,t){t=y(t,y.EMPTY_OBJECT),$r.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=y(t.clampToGround,!1);let i=this;return UY(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=$.equals(s,ze.MINIMUM_VALUE),u=$.equals(a,ze.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=$.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=$.fromDate(h)),o=new xm,o.startTime=s,o.stopTime=a,o.currentTime=$.clone(s),o.clockRange=Zr.LOOP_STOP,o.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max($.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),$r.setLoading(i,!1),i}).catch(function(o){return $r.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};Du.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function zY(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function Hit(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=Ii(r,"NetworkLinkControl",Oe.kml),c=l(a),u=0;if(c){if(l(Ii(a,"Update",Oe.kml))){Ct("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Ku(y(In(a,"cookie",Oe.kml),"")),u=y(Qn(a,"minRefreshPeriod",Oe.kml),0)}let f=$.now(),h=t.refreshMode;if(h===Yy.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===Yy.EXPIRE){let R;if(l(a)&&(R=In(a,"expires",Oe.kml)),l(R))try{let O=$.fromIso8601(R),M=$.secondsDifference(O,f);M>0&&M<u&&$.addSeconds(f,u,O),t.time=O}catch{Ct("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else Ct("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let p=t.entity,g=e._entityCollection,m=n.values;function x(R){g.remove(R);let O=R._children,M=O.length;for(let N=0;N<M;++N)x(O[N])}g.suspendEvents();let b=g.values.slice(),T;for(T=0;T<b.length;++T){let R=b[T];R.parent===p&&(R.parent=void 0,x(R))}for(g.resumeEvents(),g.suspendEvents(),T=0;T<m.length;T++){let R=m[T];l(R.parent)||(R.parent=p,zY(R)),g.add(R)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let C=g.computeAvailability(),A=C.start,E=C.stop,v=$.equals(A,ze.MINIMUM_VALUE),D=$.equals(E,ze.MAXIMUM_VALUE);if(!v||!D){let R=e._clock;(R.startTime!==A||R.stopTime!==E)&&(R.startTime=A,R.stopTime=E,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var PY=new wt;Du.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=$.now(),i=this;PY.removeAll();function o(f){let h=f._children,p=h.length;for(let g=0;g<p;++g){let m=h[g];PY.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,P.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,P.EPSILON7)&&a.upWC.equalsEpsilon(s.up,P.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new wt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!PY.contains(h.id)){if(!f.updating){let p=!1;if(f.refreshMode===Yy.INTERVAL?$.secondsDifference(n,f.lastUpdated)>f.time&&(p=!0):f.refreshMode===Yy.EXPIRE?$.greaterThan(n,f.time)&&(p=!0):f.refreshMode===Yy.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&$.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(p=!0)),p){o(h),f.updating=!0;let g=new ha,m=f.href.clone();m.setQueryParameters(f.cookie);let x=y(i._ellipsoid,ee.default);VY(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,x),UY(i,g,m,{context:h.id}).then(Hit(i,f,g,c,m)).catch(function(b){let T=`NetworkLink ${f.href} refresh failed: ${b}`;console.log(T),i._error.raiseEvent(i,T)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function Git(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}Du._DeferredLoading=km;Du._getTimestamp=Ai;var LE=Du;function BI(){de.throwInstantiationError()}BI.prototype.update=de.throwInstantiationError;BI.prototype.getBoundingSphere=de.throwInstantiationError;BI.prototype.isDestroyed=de.throwInstantiationError;BI.prototype.destroy=de.throwInstantiationError;var C_e=BI;var NE=`in vec4 position;
in vec2 textureCoordinates;
out vec2 v_textureCoordinates;
void main()
{
gl_Position = position;
v_textureCoordinates = textureCoordinates;
}
`;function rU(e){this._context=e}var kI,Wit=new Qe({primitiveType:Ne.TRIANGLES}),jit=new ai({color:new z(0,0,0,0)});function qit(e,t){return new Wr({context:e,colorTextures:[t],destroyAttachments:!1})}function Yit(e,t){return Jt.fromCache({context:e,vertexShaderSource:NE,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function Xit(e,t){return(!l(kI)||kI.viewport.width!==e||kI.viewport.height!==t)&&(kI=Ve.fromCache({viewport:new je(0,0,e,t)})),kI}rU.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:Yit(o,e.fragmentShaderSource),a=qit(o,t),c=Xit(n,i),u=e.uniformMap,f=jit;f.framebuffer=a,f.renderState=c,f.execute(o);let h=Wit;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};rU.prototype.isDestroyed=function(){return!1};rU.prototype.destroy=function(){return ue(this)};var sU=rU;function Kit(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var Jc=Kit;function sh(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(sh.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});sh.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function $it(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}sh.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new Ue({sources:[t]})),typeof n=="string"&&(n=new Ue({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?$it(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),p=new Jt({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:p,keyword:a,derivedKeywords:[],count:0},p._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};sh.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){HY(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};sh.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};sh.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new Ue({sources:[r]})),typeof s=="string"&&(s=new Ue({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new Jt({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),p={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=p,this._shaders[o]=p,h};function HY(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];HY(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}sh.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];HY(this,n),--this._numberOfShaders}this._shadersToRelease={}};sh.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};sh.prototype.isDestroyed=function(){return!1};sh.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var aU=sh;function Ab(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(Ab.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});Ab.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};Ab.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};Ab.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};Ab.prototype.isDestroyed=function(){return!1};Ab.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var cU=Ab;var GY={};function Zit(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Qit=32.184,Jit=2451545;function z_e(e,t){t=$.addSeconds(e,Qit,t);let n=$.totalDays(t)-Jit;return t=$.addSeconds(t,Zit(n),t),t}var lU=new $(2451545,0,qn.TAI),eot=1e3,Wf=P.RADIANS_PER_DEGREE,Iu=P.RADIANS_PER_ARCSECOND,Fa=14959787e4,A_e=new Z;function H_e(e,t,n,i,o,r,s){n<0&&(n=-n,o+=P.PI);let a=e*(1-t),c=i-o,u=o,f=not(r-i,t),h=tot(t,0);aot(c,n,u,A_e);let p=a*(1+t),g=Math.cos(f),m=Math.sin(f),x=1+t*g,b=p/x;return l(s)?(s.x=b*g,s.y=b*m,s.z=0):s=new d(b*g,b*m,0),Z.multiplyByVector(A_e,s,s)}function tot(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function not(e,t){let n=rot(e,t);return sot(n,t)}var iot=50,oot=P.EPSILON8;function rot(e,t){let n=Math.floor(e/P.TWO_PI);e-=n*P.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<iot&&Math.abs(o-i)>oot;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*P.TWO_PI,o}function sot(e,t){let n=Math.floor(e/P.TWO_PI);e-=n*P.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=P.zeroToTwoPi(r),e<0&&(r-=P.TWO_PI),r+=n*P.TWO_PI,r}function aot(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new Z(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var cot=1.0000010178*Fa,lot=100.46645683*Wf,uot=129597742283429e-5*Iu,E_e=16002,S_e=21863,v_e=32004,w_e=10931,D_e=14529,I_e=16368,P_e=15318,O_e=32794,fot=64*1e-7*Fa,dot=-152*1e-7*Fa,hot=62*1e-7*Fa,mot=-8*1e-7*Fa,pot=32*1e-7*Fa,_ot=-41*1e-7*Fa,got=19*1e-7*Fa,yot=-11*1e-7*Fa,xot=-150*1e-7*Fa,bot=-46*1e-7*Fa,Tot=68*1e-7*Fa,Cot=54*1e-7*Fa,Aot=14*1e-7*Fa,Eot=24*1e-7*Fa,Sot=-28*1e-7*Fa,vot=22*1e-7*Fa,R_e=10,M_e=16002,L_e=21863,N_e=10931,F_e=1473,B_e=32004,k_e=4387,V_e=73,wot=-325*1e-7,Dot=-322*1e-7,Iot=-79*1e-7,Pot=232*1e-7,Oot=-52*1e-7,Rot=97*1e-7,Mot=55*1e-7,Lot=-41*1e-7,Not=-105*1e-7,Fot=-137*1e-7,Bot=258*1e-7,kot=35*1e-7,Vot=-116*1e-7,Uot=-88*1e-7,zot=-112*1e-7,Hot=-80*1e-7,FE=new $(0,0,qn.TAI);function Got(e,t){z_e(e,FE);let i=(FE.dayNumber-lU.dayNumber+(FE.secondsOfDay-lU.secondsOfDay)/Xn.SECONDS_PER_DAY)/(Xn.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=cot+fot*Math.cos(E_e*o)+xot*Math.sin(E_e*o)+dot*Math.cos(S_e*o)+bot*Math.sin(S_e*o)+hot*Math.cos(v_e*o)+Tot*Math.sin(v_e*o)+mot*Math.cos(w_e*o)+Cot*Math.sin(w_e*o)+pot*Math.cos(D_e*o)+Aot*Math.sin(D_e*o)+_ot*Math.cos(I_e*o)+Eot*Math.sin(I_e*o)+got*Math.cos(P_e*o)+Sot*Math.sin(P_e*o)+yot*Math.cos(O_e*o)+vot*Math.sin(O_e*o),s=lot+uot*i+wot*Math.cos(R_e*o)+Not*Math.sin(R_e*o)+Dot*Math.cos(M_e*o)+Fot*Math.sin(M_e*o)+Iot*Math.cos(L_e*o)+Bot*Math.sin(L_e*o)+Pot*Math.cos(N_e*o)+kot*Math.sin(N_e*o)+Oot*Math.cos(F_e*o)+Vot*Math.sin(F_e*o)+Rot*Math.cos(B_e*o)+Uot*Math.sin(B_e*o)+Mot*Math.cos(k_e*o)+zot*Math.sin(k_e*o)+Lot*Math.cos(V_e*o)+Hot*Math.sin(V_e*o),a=.0167086342-.0004203654*i,c=102.93734808*Wf+11612.3529*Iu*i,u=469.97289*Iu*i,f=174.87317577*Wf-8679.27034*Iu*i;return H_e(r,a,u,c,f,s,t)}function G_e(e,t){z_e(e,FE);let i=(FE.dayNumber-lU.dayNumber+(FE.secondsOfDay-lU.secondsOfDay)/Xn.SECONDS_PER_DAY)/Xn.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*Wf,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*Wf,p=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*Wf,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,x=218.31664563*Wf,b=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,T=297.85019547*Wf+Iu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),C=93.27209062*Wf+Iu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),A=134.96340251*Wf+Iu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),E=357.52910918*Wf+Iu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),v=310.17137918*Wf-Iu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),D=2*T,R=4*T,O=6*T,M=2*A,N=3*A,_=4*A,S=2*C;a+=3400.4*Math.cos(D)-635.6*Math.cos(D-A)-235.6*Math.cos(A)+218.1*Math.cos(D-E)+181*Math.cos(D+A),c+=.014216*Math.cos(D-A)+.008551*Math.cos(D-M)-.001383*Math.cos(A)+.001356*Math.cos(D+A)-.001147*Math.cos(R-N)-914e-6*Math.cos(R-M)+869e-6*Math.cos(D-E-A)-627e-6*Math.cos(D)-394e-6*Math.cos(R-_)+282e-6*Math.cos(D-E-M)-279e-6*Math.cos(T-A)-236e-6*Math.cos(M)+231e-6*Math.cos(R)+229e-6*Math.cos(O-_)-201e-6*Math.cos(M-S),f+=486.26*Math.cos(D-S)-40.13*Math.cos(D)+37.51*Math.cos(S)+25.73*Math.cos(M-S)+19.97*Math.cos(D-E-S),p+=-55609*Math.sin(D-A)-34711*Math.sin(D-M)-9792*Math.sin(A)+9385*Math.sin(R-N)+7505*Math.sin(R-M)+5318*Math.sin(D+A)+3484*Math.sin(R-_)-3417*Math.sin(D-E-A)-2530*Math.sin(O-_)-2376*Math.sin(D)-2075*Math.sin(D-N)-1883*Math.sin(M)-1736*Math.sin(O-5*A)+1626*Math.sin(E)-1370*Math.sin(O-N),m+=-5392*Math.sin(D-S)-540*Math.sin(E)-441*Math.sin(D)+423*Math.sin(S)-288*Math.sin(M-S),b+=-3332.9*Math.sin(D)+1197.4*Math.sin(D-A)-662.5*Math.sin(E)+396.3*Math.sin(A)-218*Math.sin(D-E);let w=2*v,I=3*v;f+=46.997*Math.cos(v)*i-.614*Math.cos(D-S+v)*i+.614*Math.cos(D-S-v)*i-.0297*Math.cos(w)*o-.0335*Math.cos(v)*o+.0012*Math.cos(D-S+w)*o-16e-5*Math.cos(v)*r+4e-5*Math.cos(I)*r+4e-5*Math.cos(w)*r;let L=2.116*Math.sin(v)*i-.111*Math.sin(D-S-v)*i-.0015*Math.sin(v)*o;p+=L,b+=L,m+=-520.77*Math.sin(v)*i+13.66*Math.sin(D-S+v)*i+1.12*Math.sin(D-v)*i-1.06*Math.sin(S-v)*i+.66*Math.sin(w)*o+.371*Math.sin(v)*o-.035*Math.sin(D-S+w)*o-.015*Math.sin(D-S+v)*o+.0014*Math.sin(v)*r-.0011*Math.sin(I)*r-9e-4*Math.sin(w)*r,a*=eot;let B=u+f*Iu,H=h+p*Iu,V=x+b*Iu,G=g+m*Iu;return H_e(a,c,B,H,G,V,t)}var U_e=.012300034,Wot=U_e/(U_e+1)*-1;function jot(e,t){return t=G_e(e,t),d.multiplyByScalar(t,Wot,t)}var W_e=new Z(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),VI=new d;GY.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=$.now()),l(t)||(t=new d),VI=Got(e,VI),t=d.negate(VI,t),jot(e,VI),d.subtract(t,VI,t),Z.multiplyByVector(W_e,t,t),t};GY.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=$.now()),t=G_e(e,t),Z.multiplyByVector(W_e,t,t),t};var Eb=GY;function qot(e){e=y(e,y.EMPTY_OBJECT),this.color=z.clone(y(e.color,z.WHITE)),this.intensity=y(e.intensity,2)}var Xy=qot;function BE(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new je,this._viewportCartesian4=new oe,this._viewportDirty=!1,this._viewportOrthographicMatrix=F.clone(F.IDENTITY),this._viewportTransformation=F.clone(F.IDENTITY),this._model=F.clone(F.IDENTITY),this._view=F.clone(F.IDENTITY),this._inverseView=F.clone(F.IDENTITY),this._projection=F.clone(F.IDENTITY),this._infiniteProjection=F.clone(F.IDENTITY),this._entireFrustum=new U,this._currentFrustum=new U,this._frustumPlanes=new oe,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=Z.clone(F.IDENTITY),this._view3DDirty=!0,this._view3D=new F,this._inverseView3DDirty=!0,this._inverseView3D=new F,this._inverseModelDirty=!0,this._inverseModel=new F,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new Z,this._viewRotation=new Z,this._inverseViewRotation=new Z,this._viewRotation3D=new Z,this._inverseViewRotation3D=new Z,this._inverseProjectionDirty=!0,this._inverseProjection=new F,this._modelViewDirty=!0,this._modelView=new F,this._modelView3DDirty=!0,this._modelView3D=new F,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new F,this._inverseModelViewDirty=!0,this._inverseModelView=new F,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new F,this._viewProjectionDirty=!0,this._viewProjection=new F,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new F,this._modelViewProjectionDirty=!0,this._modelViewProjection=new F,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new F,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new F,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new F,this._normalDirty=!0,this._normal=new Z,this._normal3DDirty=!0,this._normal3D=new Z,this._inverseNormalDirty=!0,this._inverseNormal=new Z,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new Z,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new Wn,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new U,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new U,this._modelToEnu=new F,this._enuToModel=new F,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new z,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(BE.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!je.equals(e,this._viewport)){je.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return q_e(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return q_e(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){F.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,F.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,F.getMatrix3(this.inverseModel,e),Z.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return jY(this),this._view3D}},viewRotation:{get:function(){return jY(this),this._viewRotation}},viewRotation3D:{get:function(){return jY(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return K_e(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return K_e(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return irt(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return ort(this),this._modelView}},modelView3D:{get:function(){return rrt(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return frt(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return srt(this),this._inverseModelView}},inverseModelView3D:{get:function(){return art(this),this._inverseModelView3D}},viewProjection:{get:function(){return crt(this),this._viewProjection}},inverseViewProjection:{get:function(){return lrt(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return urt(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return drt(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return hrt(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return mrt(this),this._modelViewInfiniteProjection}},normal:{get:function(){return prt(this),this._normal}},normal3D:{get:function(){return _rt(this),this._normal3D}},inverseNormal:{get:function(){return grt(this),this._inverseNormal}},inverseNormal3D:{get:function(){return yrt(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return X_e(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return X_e(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return y(this._ellipsoid,ee.default)}}});function Yot(e,t){F.clone(t,e._view),F.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function Xot(e,t){F.clone(t,e._inverseView),F.getMatrix3(t,e._inverseViewRotation)}function Kot(e,t){F.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function $ot(e,t){F.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var j_e=new d,Zot=new F;function Qot(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,j_e)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,j_e)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=Z.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=Mt.eastNorthUpToFixedFrame(i,n,Zot);e._enuToModel=F.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=F.inverseTransformation(e._enuToModel,e._modelToEnu),P.equalsEpsilon(n._radii.x,n._radii.y,P.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var WY=new Z,Jot=new fe;function ert(e,t){Mt.computeIcrfToCentralBodyFixedMatrix(t.time,WY);let n=Eb.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);Z.multiplyByVector(WY,n,n),d.normalize(n,e._sunDirectionWC),n=Z.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=Eb.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),Z.multiplyByVector(WY,n,n),Z.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Jot);i.project(r,e._sunPositionColumbusView)}BE.prototype.updateCamera=function(e){Yot(this,e.viewMatrix),Xot(this,e.inverseViewMatrix),Qot(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ne.SCENE2D&&e.frustum instanceof an};BE.prototype.updateFrustum=function(e){Kot(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&$ot(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=P.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};BE.prototype.updatePass=function(e){this._pass=e};var trt=[],nrt=new Xy;BE.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ne.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),ert(this,e);let n=y(e.light,nrt);n instanceof Xy?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=Z.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=y(e.environmentMap,e.context.defaultCubeMap),this._sphericalHarmonicCoefficients=y(e.sphericalHarmonicCoefficients,trt),this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=Mt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,z.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function q_e(e){if(e._viewportDirty){let t=e._viewport;F.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),F.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function irt(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ne.SCENE2D&&e._mode!==ne.MORPHING&&!e._orthographicIn3D?F.inverse(e._projection,e._inverseProjection):F.clone(F.ZERO,e._inverseProjection))}function ort(e){e._modelViewDirty&&(e._modelViewDirty=!1,F.multiplyTransformation(e._view,e._model,e._modelView))}function rrt(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,F.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function srt(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,F.inverse(e.modelView,e._inverseModelView))}function art(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,F.inverse(e.modelView3D,e._inverseModelView3D))}function crt(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,F.multiply(e._projection,e._view,e._viewProjection))}function lrt(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,F.inverse(e.viewProjection,e._inverseViewProjection))}function urt(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,F.multiply(e._projection,e.modelView,e._modelViewProjection))}function frt(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function drt(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,F.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function hrt(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,F.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function mrt(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,F.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function prt(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;F.getMatrix3(e.inverseModelView,t),Z.transpose(t,t)}}function _rt(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;F.getMatrix3(e.inverseModelView3D,t),Z.transpose(t,t)}}function grt(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;F.getMatrix3(e.modelView,t),Z.transpose(t,t)}}function yrt(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;F.getMatrix3(e.modelView3D,t),Z.transpose(t,t)}}var Y_e=new d;function X_e(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,F.multiplyByPoint(e.inverseModel,e._cameraPosition,Y_e),Wn.fromCartesian(Y_e,e._encodedCameraPositionMC))}var xrt=new d,brt=new d,Trt=new d,Crt=new d,Art=new fe,Ert=new d,Srt=new F;function vrt(e,t,n,i,o,r,s,a){let c=xrt;c.x=e.y,c.y=e.z,c.z=e.x;let u=brt;u.x=n.y,u.y=n.z,u.z=n.x;let f=Trt;f.x=i.y,f.y=i.z,f.z=i.x;let h=Crt;h.x=t.y,h.y=t.z,h.z=t.x,r===ne.SCENE2D&&(c.z=o*.5);let p=s.unproject(c,Art);p.longitude=P.clamp(p.longitude,-Math.PI,Math.PI),p.latitude=P.clamp(p.latitude,-P.PI_OVER_TWO,P.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(p,Ert),x=Mt.eastNorthUpToFixedFrame(m,g,Srt);return F.multiplyByPointAsVector(x,u,u),F.multiplyByPointAsVector(x,f,f),F.multiplyByPointAsVector(x,h,h),l(a)||(a=new F),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function jY(e){e._view3DDirty&&(e._mode===ne.SCENE3D?F.clone(e._view,e._view3D):vrt(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),F.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function K_e(e){e._inverseView3DDirty&&(F.inverseTransformation(e.view3D,e._inverseView3D),F.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var uU=BE;function jf(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=y(t,{});o.alpha=y(o.alpha,!1),o.stencil=y(o.stencil,!0),o.powerPreference=y(o.powerPreference,"high-performance");let s=l(n)?n(e,o):wrt(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Yn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new aU(this),this._textureCache=new cU;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),kt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),kt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),kt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),kt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),kt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),kt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),kt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),kt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),kt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),kt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),kt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);kt._minimumAliasedLineWidth=f[0],kt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);kt._minimumAliasedPointSize=h[0],kt._maximumAliasedPointSize=h[1];let p=u.getParameter(u.MAX_VIEWPORT_DIMS);kt._maximumViewportWidth=p[0],kt._maximumViewportHeight=p[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);kt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);kt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Cr(u,["OES_standard_derivatives"]),this._blendMinmax=!!Cr(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Cr(u,["OES_element_index_uint"]),this._depthTexture=!!Cr(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Cr(u,["EXT_frag_depth"]),this._debugShaders=Cr(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Cr(u,["OES_texture_float"]),this._textureHalfFloat=!!Cr(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Cr(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Cr(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Cr(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Cr(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Cr(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Cr(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Cr(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Cr(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Cr(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Cr(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Cr(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Cr(u,["EXT_texture_compression_bptc"]),eu.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let x=r?Cr(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=x,kt._maximumTextureFilterAnisotropy=l(x)?u.getParameter(x.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let b,T,C,A,E,v,D,R,O,M;if(c){let w=this;b=function(){return w._gl.createVertexArray()},T=function(I){w._gl.bindVertexArray(I)},C=function(I){w._gl.deleteVertexArray(I)},A=function(I,L,B,H,V){u.drawElementsInstanced(I,L,B,H,V)},E=function(I,L,B,H){u.drawArraysInstanced(I,L,B,H)},v=function(I,L){u.vertexAttribDivisor(I,L)},D=function(I){u.drawBuffers(I)}}else R=Cr(u,["OES_vertex_array_object"]),l(R)&&(b=function(){return R.createVertexArrayOES()},T=function(w){R.bindVertexArrayOES(w)},C=function(w){R.deleteVertexArrayOES(w)}),O=Cr(u,["ANGLE_instanced_arrays"]),l(O)&&(A=function(w,I,L,B,H){O.drawElementsInstancedANGLE(w,I,L,B,H)},E=function(w,I,L,B){O.drawArraysInstancedANGLE(w,I,L,B)},v=function(w,I){O.vertexAttribDivisorANGLE(w,I)}),M=Cr(u,["WEBGL_draw_buffers"]),l(M)&&(D=function(w){M.drawBuffersWEBGL(w)});this.glCreateVertexArray=b,this.glBindVertexArray=T,this.glDeleteVertexArray=C,this.glDrawElementsInstanced=A,this.glDrawArraysInstanced=E,this.glVertexAttribDivisor=v,this.glDrawBuffers=D,this._vertexArrayObject=!!R,this._instancedArrays=!!O,this._drawBuffers=!!M,kt._maximumDrawBuffers=this.drawBuffers?u.getParameter(te.MAX_DRAW_BUFFERS):1,kt._maximumColorAttachments=this.drawBuffers?u.getParameter(te.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new z(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let N=new uU,_=new Jc(this),S=Ve.fromCache();this._defaultPassState=_,this._defaultRenderState=S,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=N,this._currentRenderState=S,this._currentPassState=_,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let w=0;w<kt._maximumVertexAttributes;w++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ve.apply(u,S,_)}function wrt(e,t,n){if(typeof WebGLRenderingContext>"u")throw new se("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new se("The browser supports WebGL, but initialization failed.");return r}function Drt(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function Irt(e,t,n,i){let o=`${Drt(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function Prt(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new se(Irt(e,t,n,i))}function Ort(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function Rrt(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,Ort(e,o,t))}return i}function Cr(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var Mrt={};Object.defineProperties(jf.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=Rrt(this._originalGLContext,e?Prt:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Rt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Rt({context:this,pixelFormat:nt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Rt({context:this,pixelFormat:nt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new Or({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return Mrt}}});function $_e(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ve.partialApply(e._gl,o,t,r,n,i)}var qY;typeof WebGLRenderingContext<"u"&&(qY=[te.BACK]);function YY(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=qY;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var Lrt=new ai;jf.prototype.clear=function(e,t){e=y(e,Lrt),t=y(t,this._defaultPassState);let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(z.equals(this._clearColor,o)||(z.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=y(e.renderState,this._defaultRenderState);$_e(this,a,t,!0);let c=y(e.framebuffer,t.framebuffer);YY(this,c),n.clear(i)};function Nrt(e,t,n,i,o){YY(e,t),$_e(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function Frt(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=y(t._modelMatrix,F.IDENTITY),n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}jf.prototype.draw=function(e,t,n,i){t=y(t,this._defaultPassState);let o=y(e._framebuffer,t.framebuffer),r=y(e._renderState,this._defaultRenderState);n=y(n,e._shaderProgram),i=y(i,e._uniformMap),Nrt(this,o,t,n,r),Frt(this,e,n,i)};jf.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=qY;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};jf.prototype.readPixels=function(e){let t=this._gl;e=y(e,y.EMPTY_OBJECT);let n=Math.max(y(e.x,0),0),i=Math.max(y(e.y,0),0),o=y(e.width,t.drawingBufferWidth),r=y(e.height,t.drawingBufferHeight),s=e.framebuffer,a=Ke.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=nt.createTypedArray(nt.RGBA,a,o,r);return YY(this,s),t.readPixels(n,i,o,r,nt.RGBA,Ke.toWebGLConstant(a,this),c),c};var Z_e={position:0,textureCoordinates:1};jf.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ut({attributes:{position:new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Ne.TRIANGLES});e=oi.fromGeometry({context:this,geometry:t,attributeLocations:Z_e,bufferUsage:ke.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};jf.prototype.createViewportQuadCommand=function(e,t){return t=y(t,y.EMPTY_OBJECT),new Qe({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Ne.TRIANGLES,renderState:t.renderState,shaderProgram:Jt.fromCache({context:this,vertexShaderSource:NE,fragmentShaderSource:e,attributeLocations:Z_e}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};jf.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function XY(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(XY.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});XY.prototype.destroy=function(){delete this._pickObjects[this.key]};jf.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new se("Out of unique Pick IDs.");return this._pickObjects[t]=e,new XY(this._pickObjects,t,z.fromRgba(t))};jf.prototype.isDestroyed=function(){return!1};jf.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var fU=jf;function Brt(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[Ee.createIfNeeded(t.positiveX).fetchImage(i),Ee.createIfNeeded(t.negativeX).fetchImage(i),Ee.createIfNeeded(t.positiveY).fetchImage(i),Ee.createIfNeeded(t.negativeY).fetchImage(i),Ee.createIfNeeded(t.positiveZ).fetchImage(i),Ee.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new Or({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var dU=Brt;function krt(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=`
${o}`),t}var T_=krt;async function Vrt(e,t,n,i){return l(i)||(i=!1),Hrt(e,t,n,i)}function Urt(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(J_e(i)):r=o.then(J_e(i)).catch(Grt(i)),e.shift(),t.push(r),!0}function zrt(e){return new Promise(function(t){setTimeout(t,e)})}function KY(e,t,n){return e.length?Urt(e,t,n)?KY(e,t,n):zrt(100).then(()=>KY(e,t,n)):Promise.resolve()}function Hrt(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return KY(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function Q_e(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function J_e(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!Q_e(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];Q_e(s,i,n)}}):Promise.resolve()}}function Grt(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var hU=Vrt;var $Y=new U;async function ege(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,$Y);let p=e.loadTileDataAvailability($Y.x,$Y.y,1);l(p)&&s.push(p)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return hU(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await ege(e,a,n),t}var kE=ege;async function ZY(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ne.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ne.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await ZY._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),p=r;return f&&(p.height+=h),p}ZY._sampleTerrainMostDetailed=kE;var VE=ZY;var Wrt={NONE:0,LERC:1},ah=Object.freeze(Wrt);var jrt={NONE:0,BITS12:1},xa=Object.freeze(jrt);var Sb=new d,qrt=new d,qf=new U,mU=new F,Yrt=new F,Xrt=Math.pow(2,12);function uc(e,t,n,i,o,r,s,a,c,u){let f=xa.NONE,h,p;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,x=d.subtract(m,g,qrt),b=i-n;Math.max(d.maximumComponent(x),b)<Xrt-1?f=xa.BITS12:f=xa.NONE,h=F.inverseTransformation(o,new F);let C=d.negate(g,Sb);F.multiply(F.fromTranslation(C,mU),h,h);let A=Sb;A.x=1/x.x,A.y=1/x.y,A.z=1/x.z,F.multiply(F.fromScale(A,mU),h,h),p=F.clone(o),F.setTranslation(p,d.ZERO,p),o=F.clone(o,new F);let E=F.fromTranslation(g,mU),v=F.fromScale(x,Yrt),D=F.multiply(E,v,mU);F.multiply(o,D,o),F.multiply(p,D,p)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=p,this.hasVertexNormals=r,this.hasWebMercatorT=y(s,!1),this.hasGeodeticSurfaceNormals=y(a,!1),this.exaggeration=y(c,1),this.exaggerationRelativeHeight=y(u,0),this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}uc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===xa.BITS12){n=F.multiplyByPoint(this.toScaledENU,n,Sb),n.x=P.clamp(n.x,0,1),n.y=P.clamp(n.y,0,1),n.z=P.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=P.clamp((o-this.minimumHeight)/f,0,1);U.fromElements(n.x,n.y,qf);let p=Bn.compressTextureCoordinates(qf);U.fromElements(n.z,h,qf);let g=Bn.compressTextureCoordinates(qf);U.fromElements(c,u,qf);let m=Bn.compressTextureCoordinates(qf);if(e[t++]=p,e[t++]=g,e[t++]=m,this.hasWebMercatorT){U.fromElements(s,0,qf);let x=Bn.compressTextureCoordinates(qf);e[t++]=x}}else d.subtract(n,this.center,Sb),e[t++]=Sb.x,e[t++]=Sb.y,e[t++]=Sb.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Bn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var Krt=new d,tge=new d;uc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,p=s*r+f;t[p]=e[h]}let a=this.decodePosition(t,s,Krt),c=n.geodeticSurfaceNormal(a,tge),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};uc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};uc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===xa.BITS12){let i=Bn.decompressTextureCoordinates(e[t],qf);n.x=i.x,n.y=i.y;let o=Bn.decompressTextureCoordinates(e[t+1],qf);return n.z=o.x,F.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};uc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,tge),a=this.decodeHeight(e,t),c=Rr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};uc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new U),t*=this.stride,this.quantization===xa.BITS12?Bn.decompressTextureCoordinates(e[t+2],n):U.fromElements(e[t+4],e[t+5],n)};uc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===xa.BITS12?Bn.decompressTextureCoordinates(e[t+1],qf).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};uc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===xa.BITS12?Bn.decompressTextureCoordinates(e[t+3],qf).x:e[t+6]};uc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return U.fromElements(o,r,n)};uc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};uc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case xa.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var pU={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},_U={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};uc.prototype.getAttributes=function(e){let t=X.FLOAT,n=X.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===xa.NONE){s(pU.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(pU.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(pU.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(_U.compressed0,a?4:3),c&&s(_U.compressed1,1),this.hasGeodeticSurfaceNormals&&s(_U.geodeticSurfaceNormal,3)}return r};uc.prototype.getAttributeLocations=function(){return this.quantization===xa.NONE?pU:_U};uc.clone=function(e,t){if(l(e))return l(t)||(t=new uc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=F.clone(e.toScaledENU),t.fromScaledENU=F.clone(e.fromScaledENU),t.matrix=F.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var el=uc;var Vm={};Vm.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var QY=new d,$rt=new F,Zrt=new d,Qrt=new d;Vm.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=P.PI_OVER_TWO,a=P.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,p=h>0,g=y(e.isGeographic,!0),m=y(e.ellipsoid,ee.default),x=1/m.maximumRadius,b=ae.clone(e.nativeRectangle),T=ae.clone(e.rectangle),C,A,E,v;l(T)?(C=T.west,A=T.south,E=T.east,v=T.north):g?(C=a(b.west),A=a(b.south),E=a(b.east),v=a(b.north)):(C=b.west*x,A=s-2*o(r(-b.south*x)),E=b.east*x,v=s-2*o(r(-b.north*x)));let D=e.relativeToCenter,R=l(D);D=R?D:d.ZERO;let O=y(e.includeWebMercatorT,!1),M=y(e.exaggeration,1),N=y(e.exaggerationRelativeHeight,0),S=M!==1,w=y(e.structure,Vm.DEFAULT_STRUCTURE),I=y(w.heightScale,Vm.DEFAULT_STRUCTURE.heightScale),L=y(w.heightOffset,Vm.DEFAULT_STRUCTURE.heightOffset),B=y(w.elementsPerHeight,Vm.DEFAULT_STRUCTURE.elementsPerHeight),H=y(w.stride,Vm.DEFAULT_STRUCTURE.stride),V=y(w.elementMultiplier,Vm.DEFAULT_STRUCTURE.elementMultiplier),G=y(w.isBigEndian,Vm.DEFAULT_STRUCTURE.isBigEndian),k=ae.computeWidth(b),W=ae.computeHeight(b),q=k/(u-1),J=W/(f-1);g||(k*=x,W*=x);let j=m.radiiSquared,K=j.x,Q=j.y,he=j.z,ye=65536,re=-65536,_e=Mt.eastNorthUpToFixedFrame(D,m),be=F.inverseTransformation(_e,$rt),we,De;O&&(we=Ni.geodeticLatitudeToMercatorAngle(A),De=1/(Ni.geodeticLatitudeToMercatorAngle(v)-we));let Me=Zrt;Me.x=Number.POSITIVE_INFINITY,Me.y=Number.POSITIVE_INFINITY,Me.z=Number.POSITIVE_INFINITY;let Re=Qrt;Re.x=Number.NEGATIVE_INFINITY,Re.y=Number.NEGATIVE_INFINITY,Re.z=Number.NEGATIVE_INFINITY;let rt=Number.POSITIVE_INFINITY,Ye=u*f,dt=h>0?u*2+f*2:0,Xe=Ye+dt,_t=new Array(Xe),ft=new Array(Xe),ht=new Array(Xe),vn=O?new Array(Xe):[],tn=S?new Array(Xe):[],Te=0,Ae=f,Mn=0,Ro=u;p&&(--Te,++Ae,--Mn,++Ro);let Wo=1e-5;for(let $e=Te;$e<Ae;++$e){let St=$e;St<0&&(St=0),St>=f&&(St=f-1);let Gt=b.north-J*St;g?Gt=a(Gt):Gt=s-2*o(r(-Gt*x));let Tn=(Gt-A)/(v-A);Tn=P.clamp(Tn,0,1);let Mo=$e===Te,So=$e===Ae-1;h>0&&(Mo?Gt+=Wo*W:So&&(Gt-=Wo*W));let Tc=t(Gt),Cc=n(Gt),Si=he*Cc,Oi;O&&(Oi=(Ni.geodeticLatitudeToMercatorAngle(Gt)-we)*De);for(let Sa=Mn;Sa<Ro;++Sa){let un=Sa;un<0&&(un=0),un>=u&&(un=u-1);let Ln=St*(u*H)+un*H,Hi;if(B===1)Hi=c[Ln];else{Hi=0;let vr;if(G)for(vr=0;vr<B;++vr)Hi=Hi*V+c[Ln+vr];else for(vr=B-1;vr>=0;--vr)Hi=Hi*V+c[Ln+vr]}Hi=Hi*I+L,re=Math.max(re,Hi),ye=Math.min(ye,Hi);let We=b.west+q*un;g?We=a(We):We=We*x;let cl=(We-C)/(E-C);cl=P.clamp(cl,0,1);let vo=St*u+un;if(h>0){let vr=Sa===Mn,Yt=Sa===Ro-1,Ce=Mo||So||vr||Yt;if((Mo||So)&&(vr||Yt))continue;Ce&&(Hi-=h,vr?(vo=Ye+(f-St-1),We-=Wo*k):So?vo=Ye+f+(u-un-1):Yt?(vo=Ye+f+u+St,We+=Wo*k):Mo&&(vo=Ye+f+u+f+un))}let ld=Tc*t(We),Gu=Tc*n(We),Ah=K*ld,Wu=Q*Gu,oo=1/i(Ah*ld+Wu*Gu+Si*Cc),ju=Ah*oo,ud=Wu*oo,ll=Si*oo,Ls=new d;Ls.x=ju+ld*Hi,Ls.y=ud+Gu*Hi,Ls.z=ll+Cc*Hi,F.multiplyByPoint(be,Ls,QY),d.minimumByComponent(QY,Me,Me),d.maximumByComponent(QY,Re,Re),rt=Math.min(rt,Hi),_t[vo]=Ls,ht[vo]=new U(cl,Tn),ft[vo]=Hi,O&&(vn[vo]=Oi),S&&(tn[vo]=m.geodeticSurfaceNormal(Ls))}}let Sr=ce.fromPoints(_t),ea;l(T)&&(ea=Dn.fromRectangle(T,ye,re,m));let ys;R&&(ys=new hy(m).computeHorizonCullingPointPossiblyUnderEllipsoid(D,_t,ye));let ta=new K0(Me,Re,D),Fe=new el(D,ta,rt,re,_e,!1,O,S,M,N),st=new Float32Array(Xe*Fe.stride),tt=0;for(let $e=0;$e<Xe;++$e)tt=Fe.encode(st,tt,_t[$e],ht[$e],ft[$e],void 0,vn[$e],tn[$e]);return{vertices:st,maximumHeight:re,minimumHeight:ye,encoding:Fe,boundingSphere3D:Sr,orientedBoundingBox:ea,occludeePointInScaledSpace:ys}};var UI=Vm;function Ky(){de.throwInstantiationError()}Object.defineProperties(Ky.prototype,{credits:{get:de.throwInstantiationError},waterMask:{get:de.throwInstantiationError}});Ky.prototype.interpolateHeight=de.throwInstantiationError;Ky.prototype.isChildAvailable=de.throwInstantiationError;Ky.prototype.createMesh=de.throwInstantiationError;Ky.prototype.upsample=de.throwInstantiationError;Ky.prototype.wasCreatedByUpsampling=de.throwInstantiationError;Ky.maximumAsynchronousTasks=5;var Um=Ky;function Jrt(e,t,n,i,o,r,s,a,c,u,f,h,p,g,m,x){this.center=e,this.vertices=t,this.stride=y(u,6),this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=p,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=x}var ch=Jrt;function tl(){de.throwInstantiationError()}Object.defineProperties(tl.prototype,{errorEvent:{get:de.throwInstantiationError},credit:{get:de.throwInstantiationError},tilingScheme:{get:de.throwInstantiationError},hasWaterMask:{get:de.throwInstantiationError},hasVertexNormals:{get:de.throwInstantiationError},availability:{get:de.throwInstantiationError}});var nge=[];tl.getRegularGridIndices=function(e,t){let n=nge[e];l(n)||(nge[e]=n=[]);let i=n[t];return l(i)||(e*t<P.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),sge(e,t,i,0)),i};var ige=[];tl.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=ige[e];l(n)||(ige[e]=n=[]);let i=n[t];if(!l(i)){let o=tl.getRegularGridIndices(e,t),r=rge(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var oge=[];tl.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=oge[e];l(n)||(oge[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=rge(e,t),h=f.westIndicesSouthToNorth,p=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,x=Be.createTypedArray(c,u);sge(e,t,x,0),tl.addSkirtIndices(h,p,g,m,o,x,r),i=n[t]={indices:x,westIndicesSouthToNorth:h,southIndicesEastToWest:p,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};tl.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=gU(e,a,r,s),a+=e.length,s=gU(t,a,r,s),a+=t.length,s=gU(n,a,r,s),a+=n.length,gU(i,a,r,s)};function rge(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function sge(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function gU(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}tl.heightmapTerrainQuality=.25;tl.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*tl.heightmapTerrainQuality/(t*n)};tl.prototype.requestTileGeometry=de.throwInstantiationError;tl.prototype.getLevelMaximumGeometricError=de.throwInstantiationError;tl.prototype.getTileDataAvailable=de.throwInstantiationError;tl.prototype.loadTileDataAvailability=de.throwInstantiationError;var hs=tl;function C_(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=y(e.childTileMask,15),this._encoding=y(e.encoding,ah.NONE);let t=UI.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=y(n.heightScale,t.heightScale),n.heightOffset=y(n.heightOffset,t.heightOffset),n.elementsPerHeight=y(n.elementsPerHeight,t.elementsPerHeight),n.stride=y(n.stride,t.stride),n.elementMultiplier=y(n.elementMultiplier,t.elementMultiplier),n.isBigEndian=y(n.isBigEndian,t.isBigEndian)):n=t,this._structure=n,this._createdByUpsampling=y(e.createdByUpsampling,!1),this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===ah.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(C_.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var age="createVerticesFromHeightmap",est=new bi(age),tst=new bi(age,Um.maximumAsynchronousTasks);C_.prototype.createMesh=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=y(e.exaggeration,1),s=y(e.exaggerationRelativeHeight,0),a=y(e.throttle,!0),c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),p=this._structure,m=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let b=(a?tst:est).scheduleTask({heightmap:this._buffer,structure:p,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ri,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(b))return;let T=this;return Promise.resolve(b).then(function(C){let A;T._skirtHeight>0?A=hs.getRegularGridAndSkirtIndicesAndEdgeIndices(C.gridWidth,C.gridHeight):A=hs.getRegularGridIndicesAndEdgeIndices(C.gridWidth,C.gridHeight);let E=C.gridWidth*C.gridHeight;return T._mesh=new ch(h,new Float32Array(C.vertices),A.indices,A.indexCountWithoutSkirts,E,C.minimumHeight,C.maximumHeight,ce.clone(C.boundingSphere3D),d.clone(C.occludeePointInScaledSpace),C.numberOfAttributes,Dn.clone(C.orientedBoundingBox),el.clone(C.encoding),A.westIndicesSouthToNorth,A.southIndicesEastToWest,A.eastIndicesNorthToSouth,A.northIndicesWestToEast),T._buffer=void 0,T._mesh})};C_.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=y(e.exaggeration,1),s=y(e.exaggerationRelativeHeight,0),a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=UI.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ri,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let x;this._skirtHeight>0?x=hs.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):x=hs.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let b=m.gridWidth*m.gridHeight;return this._mesh=new ch(f,m.vertices,x.indices,x.indexCountWithoutSkirts,b,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,x.westIndicesSouthToNorth,x.southIndicesEastToWest,x.eastIndicesNorthToSouth,x.northIndicesWestToEast),this._mesh};C_.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,p=l(this._mesh),g=this._encoding===ah.LERC;if(!p&&g)return;let x;if(p){let b=this._mesh.vertices,T=this._mesh.encoding;x=cge(b,T,f,h,e,i,o,t,n)}else x=nst(this._buffer,a,c,s,u,e,i,o,t,n),x=x*h+f;return x};C_.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,p=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,x=e.tileXYToRectangle(t,n,i),b=e.tileXYToRectangle(o,r,s),T=f.heightOffset,C=f.heightScale,A=f.elementsPerHeight,E=f.elementMultiplier,v=f.isBigEndian,D=Math.pow(E,A-1);for(let R=0;R<u;++R){let O=P.lerp(b.north,b.south,R/(u-1));for(let M=0;M<c;++M){let N=P.lerp(b.west,b.east,M/(c-1)),_=cge(g,m,T,C,x,c,u,N,O);_=_<f.lowestEncodedHeight?f.lowestEncodedHeight:_,_=_>f.highestEncodedHeight?f.highestEncodedHeight:_,ist(p,A,E,D,h,v,R*c+M,_)}}return Promise.resolve(new C_({buffer:p,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};C_.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};C_.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function nst(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),p=f|0,g=p+1;g>=s&&(g=s-1,p=s-2);let m=h|0,x=m+1;x>=a&&(x=a-1,m=a-2);let b=f-p,T=h-m;m=a-1-m,x=a-1-x;let C=yU(e,t,n,i,o,m*s+p),A=yU(e,t,n,i,o,m*s+g),E=yU(e,t,n,i,o,x*s+p),v=yU(e,t,n,i,o,x*s+g);return lge(b,T,C,A,E,v)}function cge(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,p=h+1;p>=r&&(p=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let x=u-h,b=f-g;g=s-1-g,m=s-1-m;let T=(t.decodeHeight(e,g*r+h)-n)/i,C=(t.decodeHeight(e,g*r+p)-n)/i,A=(t.decodeHeight(e,m*r+h)-n)/i,E=(t.decodeHeight(e,m*r+p)-n)/i;return lge(x,b,T,C,A,E)}function lge(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function yU(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function ist(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var fc=C_;function UE(e){e=y(e,y.EMPTY_OBJECT),this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new Qi({ellipsoid:y(e.ellipsoid,ee.default)})),this._levelZeroMaximumGeometricError=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new me}Object.defineProperties(UE.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});UE.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new fc({buffer:new Uint8Array(16*16),width:16,height:16}))};UE.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};UE.prototype.getTileDataAvailable=function(e,t,n){};UE.prototype.loadTileDataAvailability=function(e,t,n){};var zE=UE;var xU=`uniform vec4 u_initialColor;
#if TEXTURE_UNITS > 0
uniform sampler2D u_dayTextures[TEXTURE_UNITS];
uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS];
uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS];
#ifdef APPLY_ALPHA
uniform float u_dayTextureAlpha[TEXTURE_UNITS];
#endif
#ifdef APPLY_DAY_NIGHT_ALPHA
uniform float u_dayTextureNightAlpha[TEXTURE_UNITS];
uniform float u_dayTextureDayAlpha[TEXTURE_UNITS];
#endif
#ifdef APPLY_SPLIT
uniform float u_dayTextureSplit[TEXTURE_UNITS];
#endif
#ifdef APPLY_BRIGHTNESS
uniform float u_dayTextureBrightness[TEXTURE_UNITS];
#endif
#ifdef APPLY_CONTRAST
uniform float u_dayTextureContrast[TEXTURE_UNITS];
#endif
#ifdef APPLY_HUE
uniform float u_dayTextureHue[TEXTURE_UNITS];
#endif
#ifdef APPLY_SATURATION
uniform float u_dayTextureSaturation[TEXTURE_UNITS];
#endif
#ifdef APPLY_GAMMA
uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS];
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
#ifdef APPLY_INVERT_COLOR_MARS3D
uniform bool u_mars3dTextureInvertColor[TEXTURE_UNITS];
#endif
#ifdef APPLY_FILTER_COLOR_MARS3D
uniform vec3 u_mars3dTextureFilterColor[TEXTURE_UNITS];
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
#ifdef APPLY_IMAGERY_CUTOUT
uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS];
#endif
#ifdef APPLY_COLOR_TO_ALPHA
uniform vec4 u_colorsToAlpha[TEXTURE_UNITS];
#endif
uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS];
#endif
#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))
uniform sampler2D u_waterMask;
uniform vec4 u_waterMaskTranslationAndScale;
uniform float u_zoomedOutOceanSpecularIntensity;
#endif
#ifdef SHOW_OCEAN_WAVES
uniform sampler2D u_oceanNormalMap;
#endif
#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE)
uniform vec2 u_lightingFadeDistance;
#endif
#ifdef TILE_LIMIT_RECTANGLE
uniform vec4 u_cartographicLimitRectangle;
#endif
#ifdef GROUND_ATMOSPHERE
uniform vec2 u_nightFadeDistance;
#endif
#ifdef ENABLE_CLIPPING_PLANES
uniform highp sampler2D u_clippingPlanes;
uniform mat4 u_clippingPlanesMatrix;
uniform vec4 u_clippingPlanesEdgeStyle;
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
uniform highp sampler2D u_clippingDistance;
in vec2 v_clippingPosition;
flat in int v_regionIndex;
#endif
#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
uniform float u_minimumBrightness;
#endif
#ifdef COLOR_CORRECT
uniform vec3 u_hsbShift; // Hue, saturation, brightness
#endif
#ifdef HIGHLIGHT_FILL_TILE
uniform vec4 u_fillHighlightColor;
#endif
#ifdef TRANSLUCENT
uniform vec4 u_frontFaceAlphaByDistance;
uniform vec4 u_backFaceAlphaByDistance;
uniform vec4 u_translucencyRectangle;
#endif
#ifdef UNDERGROUND_COLOR
uniform vec4 u_undergroundColor;
uniform vec4 u_undergroundColorAlphaByDistance;
#endif
#ifdef ENABLE_VERTEX_LIGHTING
uniform float u_lambertDiffuseMultiplier;
uniform float u_vertexShadowDarkness;
#endif
in vec3 v_positionMC;
in vec3 v_positionEC;
in vec3 v_textureCoordinates;
in vec3 v_normalMC;
in vec3 v_normalEC;
#ifdef APPLY_MATERIAL
in float v_height;
in float v_slope;
in float v_aspect;
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u533A\u57DF\u6750\u8D28(\u6DF9\u6CA1\uFF0C\u7B49\u9AD8\u7EBF)
#ifdef APPLY_MARS3D_FLOOD
uniform bool u_mars_flood_enabled;
uniform bool u_mars_flood_only;
uniform vec4 u_mars_flood_rectangle;
uniform highp sampler2D u_mars_flood_texture;
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u533A\u57DF\u6750\u8D28(\u6DF9\u6CA1\uFF0C\u7B49\u9AD8\u7EBF)
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u5F00\u6316
#ifdef APPLY_MARS3D_CLIP
uniform bool u_mars_clip_enabled;
uniform bool u_mars_clip_only;
uniform vec4 u_mars_clip_rectangle;
uniform highp sampler2D u_mars_clip_texture;
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u5F00\u6316
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u7F16\u8F91\u901A\u7528\u7684\u8303\u56F4\u5224\u65AD\u65B9\u6CD5\uFF08\u542B \u5730\u5F62\u62AC\u5347/\u5730\u5F62\u538B\u5E73/\u5730\u5F62\u5F00\u6316/\u5730\u5F62\u533A\u57DF\u6750\u8D28\uFF09
uniform highp float u_mars_inverseTileWidth;
uniform highp vec2 u_mars_cartographicTileRectangle;
bool inAreaMars3DRange(vec4 rectangle, sampler2D rangeTexture) {
float lo = v_textureCoordinates.x / u_mars_inverseTileWidth + u_mars_cartographicTileRectangle.x;
float la = v_textureCoordinates.y / u_mars_inverseTileWidth + u_mars_cartographicTileRectangle.y;
float newX = (lo - rectangle.x) / rectangle.z;
float newY = (la - rectangle.y) / rectangle.w;
if(newX >= 0.0 && newX <= 1.0 && newY >= 0.0 && newY <= 1.0){
vec4 point = texture(rangeTexture, vec2(newX, newY));
return point.r > 0.0;
}
return false;
}
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u7F16\u8F91\u901A\u7528\u7684\u8303\u56F4\u5224\u65AD\u65B9\u6CD5\uFF08\u542B \u5730\u5F62\u62AC\u5347/\u5730\u5F62\u538B\u5E73/\u5730\u5F62\u5F00\u6316/\u5730\u5F62\u533A\u57DF\u6750\u8D28\uFF09
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
in float v_distance;
#endif
#if defined(GROUND_ATMOSPHERE) || defined(FOG)
in vec3 v_atmosphereRayleighColor;
in vec3 v_atmosphereMieColor;
in float v_atmosphereOpacity;
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u62AC\u5347
#ifdef APPLY_MARS3D_UPLIFT
uniform vec4 u_mars_uplift_rectangle;
uniform highp sampler2D u_mars_uplift_texture;
uniform bool u_mars_uplift_enabled;
uniform bool u_mars_uplift_hideInsideOrOutside;
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u62AC\u5347
#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
float interpolateByDistance(vec4 nearFarScalar, float distance)
{
float startDistance = nearFarScalar.x;
float startValue = nearFarScalar.y;
float endDistance = nearFarScalar.z;
float endValue = nearFarScalar.w;
float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0);
return mix(startValue, endValue, t);
}
#endif
#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL)
vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor)
{
return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a);
}
#endif
#ifdef TRANSLUCENT
bool inTranslucencyRectangle()
{
return
v_textureCoordinates.x > u_translucencyRectangle.x &&
v_textureCoordinates.x < u_translucencyRectangle.z &&
v_textureCoordinates.y > u_translucencyRectangle.y &&
v_textureCoordinates.y < u_translucencyRectangle.w;
}
#endif
vec4 sampleAndBlend(
vec4 previousColor,
sampler2D textureToSample,
vec2 tileTextureCoordinates,
vec4 textureCoordinateRectangle,
vec4 textureCoordinateTranslationAndScale,
float textureAlpha,
float textureNightAlpha,
float textureDayAlpha,
float textureBrightness,
float textureContrast,
float textureHue,
float textureSaturation,
float textureOneOverGamma,
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
bool textureInvertColor,
vec3 texturefilterColor,
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
float split,
vec4 colorToAlpha,
float nightBlend)
{
// This crazy step stuff sets the alpha to 0.0 if this following condition is true:
// tileTextureCoordinates.s < textureCoordinateRectangle.s ||
// tileTextureCoordinates.s > textureCoordinateRectangle.p ||
// tileTextureCoordinates.t < textureCoordinateRectangle.t ||
// tileTextureCoordinates.t > textureCoordinateRectangle.q
// In other words, the alpha is zero if the fragment is outside the rectangle
// covered by this texture. Would an actual 'if' yield better performance?
vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates);
textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;
alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates);
textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;
#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING)
textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend);
#endif
vec2 translation = textureCoordinateTranslationAndScale.xy;
vec2 scale = textureCoordinateTranslationAndScale.zw;
vec2 textureCoordinates = tileTextureCoordinates * scale + translation;
vec4 value = texture(textureToSample, textureCoordinates);
vec3 color = value.rgb;
float alpha = value.a;
#ifdef APPLY_COLOR_TO_ALPHA
vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);
colorDiff.r = czm_maximumComponent(colorDiff);
alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);
#endif
#if !defined(APPLY_GAMMA)
vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));
color = tempColor.rgb;
alpha = tempColor.a;
#else
color = pow(color, vec3(textureOneOverGamma));
#endif
#ifdef APPLY_SPLIT
float splitPosition = czm_splitPosition;
// Split to the left
if (split < 0.0 && gl_FragCoord.x > splitPosition) {
alpha = 0.0;
}
// Split to the right
else if (split > 0.0 && gl_FragCoord.x < splitPosition) {
alpha = 0.0;
}
#endif
#ifdef APPLY_BRIGHTNESS
color = mix(vec3(0.0), color, textureBrightness);
#endif
#ifdef APPLY_CONTRAST
color = mix(vec3(0.5), color, textureContrast);
#endif
#ifdef APPLY_HUE
color = czm_hue(color, textureHue);
#endif
#ifdef APPLY_SATURATION
color = czm_saturation(color, textureSaturation);
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
#ifdef APPLY_INVERT_COLOR_MARS3D
if(textureInvertColor) {
color = vec3(1.0 - color.r, 1.0 - color.g, 1.0 - color.b);
}
#endif
#ifdef APPLY_FILTER_COLOR_MARS3D
if(texturefilterColor.x != 1.0 || texturefilterColor.y != 1.0 || texturefilterColor.z != 1.0) {
color = vec3(color.r * texturefilterColor.x, color.g * texturefilterColor.y, color.b * texturefilterColor.z);
}
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
float sourceAlpha = alpha * textureAlpha;
float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);
outAlpha += sign(outAlpha) - 1.0;
vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;
// When rendering imagery for a tile in multiple passes,
// some GPU/WebGL implementation combinations will not blend fragments in
// additional passes correctly if their computation includes an unmasked
// divide-by-zero operation,
// even if it's not in the output or if the output has alpha zero.
//
// For example, without sanitization for outAlpha,
// this renders without artifacts:
// if (outAlpha == 0.0) { outColor = vec3(0.0); }
//
// but using czm_branchFreeTernary will cause portions of the tile that are
// alpha-zero in the additional pass to render as black instead of blending
// with the previous pass:
// outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor);
//
// So instead, sanitize against divide-by-zero,
// store this state on the sign of outAlpha, and correct on return.
return vec4(outColor, max(outAlpha, 0.0));
}
vec3 colorCorrect(vec3 rgb) {
#ifdef COLOR_CORRECT
// Convert rgb color to hsb
vec3 hsb = czm_RGBToHSB(rgb);
// Perform hsb shift
hsb.x += u_hsbShift.x; // hue
hsb.y = clamp(hsb.y + u_hsbShift.y, 0.0, 1.0); // saturation
hsb.z = hsb.z > czm_epsilon7 ? hsb.z + u_hsbShift.z : 0.0; // brightness
// Convert shifted hsb back to rgb
rgb = czm_HSBToRGB(hsb);
#endif
return rgb;
}
vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend);
vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade);
const float fExposure = 2.0;
vec3 computeEllipsoidPosition()
{
float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0);
vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0);
xy *= czm_viewport.zw * mpp * 0.5;
vec3 direction;
if (czm_orthographicIn3D == 1.0)
{
direction = vec3(0.0, 0.0, -1.0);
}
else
{
direction = normalize(vec3(xy, -czm_currentFrustum.x));
}
czm_ray ray = czm_ray(vec3(0.0), direction);
vec3 ellipsoid_center = czm_view[3].xyz;
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii);
vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start);
return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz;
}
void main()
{
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u5F00\u6316
#ifdef APPLY_MARS3D_CLIP
if(u_mars_clip_enabled) {
if(u_mars_clip_only) {
if(!inAreaMars3DRange(u_mars_clip_rectangle, u_mars_clip_texture)) {
discard;
}
} else {
if(inAreaMars3DRange(u_mars_clip_rectangle, u_mars_clip_texture)) {
discard;
}
}
}
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u5F00\u6316
#ifdef TILE_LIMIT_RECTANGLE
if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x ||
v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y)
{
discard;
}
#endif
#ifdef ENABLE_CLIPPING_PLANES
float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix);
#endif
#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR)
vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates
vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates
#endif
#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING)
float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0);
#else
float nightBlend = 0.0;
#endif
// The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0
// where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the
// fragments on the edges of tiles even though the vertex shader is outputting
// coordinates strictly in the 0-1 range.
vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend);
#ifdef SHOW_TILE_BOUNDARIES
if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) ||
v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0))
{
color = vec4(1.0, 0.0, 0.0, 1.0);
}
#endif
#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE)
float cameraDist;
if (czm_sceneMode == czm_sceneMode2D)
{
cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5;
}
else if (czm_sceneMode == czm_sceneModeColumbusView)
{
cameraDist = -czm_view[3].z;
}
else
{
cameraDist = length(czm_view[3]);
}
float fadeOutDist = u_lightingFadeDistance.x;
float fadeInDist = u_lightingFadeDistance.y;
if (czm_sceneMode != czm_sceneMode3D) {
vec3 radii = czm_ellipsoidRadii;
float maxRadii = max(radii.x, max(radii.y, radii.z));
fadeOutDist -= maxRadii;
fadeInDist -= maxRadii;
}
float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0);
#else
float fade = 0.0;
#endif
#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))
vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy;
vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw;
vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation;
waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y;
float mask = texture(u_waterMask, waterMaskTextureCoordinates).r;
#ifdef SHOW_REFLECTIVE_OCEAN
if (mask > 0.0)
{
mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC);
vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC);
vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx);
vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z));
color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade);
}
#endif
#endif
#ifdef APPLY_MATERIAL
czm_materialInput materialInput;
materialInput.st = v_textureCoordinates.st;
materialInput.normalEC = normalize(v_normalEC);
materialInput.positionToEyeEC = -v_positionEC;
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC));
materialInput.slope = v_slope;
materialInput.height = v_height;
materialInput.aspect = v_aspect;
#ifdef HAS_WATER_MASK
materialInput.waterMask = mask;
#endif
czm_material material = czm_getMaterial(materialInput);
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u533A\u57DF\u6750\u8D28(\u6DF9\u6CA1\uFF0C\u7B49\u9AD8\u7EBF)
bool hasAlphaBlend = true;
#ifdef APPLY_MARS3D_FLOOD
hasAlphaBlend = !u_mars_flood_enabled || (u_mars_flood_enabled && inAreaMars3DRange(u_mars_flood_rectangle, u_mars_flood_texture));
if(u_mars_flood_enabled) {
if(u_mars_flood_only) {
if(! inAreaMars3DRange(u_mars_flood_rectangle, u_mars_flood_texture)) {
discard;
}
}
}
#endif
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-07-19 \u5730\u5F62\u533A\u57DF\u6750\u8D28(\u6DF9\u6CA1\uFF0C\u7B49\u9AD8\u7EBF)
if(hasAlphaBlend) {
vec4 materialColor = vec4(material.diffuse, material.alpha);
color = alphaBlend(materialColor, color);
}
#endif
#ifdef ENABLE_VERTEX_LIGHTING
float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0);
vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a);
#elif defined(ENABLE_DAYNIGHT_SHADING)
float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0);
diffuseIntensity = mix(1.0, diffuseIntensity, fade);
vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a);
#else
vec4 finalColor = color;
#endif
#ifdef ENABLE_CLIPPING_PLANES
vec4 clippingPlanesEdgeColor = vec4(1.0);
clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb;
float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a;
if (clipDistance < clippingPlanesEdgeWidth)
{
finalColor = clippingPlanesEdgeColor;
}
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
vec2 clippingPosition = v_clippingPosition;
int regionIndex = v_regionIndex;
clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex);
#endif
#ifdef HIGHLIGHT_FILL_TILE
finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a);
#endif
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN)
vec3 atmosphereLightDirection = czm_sunDirectionWC;
#else
vec3 atmosphereLightDirection = czm_lightDirectionWC;
#endif
#if defined(GROUND_ATMOSPHERE) || defined(FOG)
if (!czm_backFacing())
{
bool dynamicLighting = false;
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING))
dynamicLighting = true;
#endif
vec3 rayleighColor;
vec3 mieColor;
float opacity;
vec3 positionWC;
vec3 lightDirection;
// When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader.
// Otherwise, the scattering is computed in the vertex shader.
#ifdef PER_FRAGMENT_GROUND_ATMOSPHERE
positionWC = computeEllipsoidPosition();
lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC));
computeAtmosphereScattering(
positionWC,
lightDirection,
rayleighColor,
mieColor,
opacity
);
#else
positionWC = v_positionMC;
lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC));
rayleighColor = v_atmosphereRayleighColor;
mieColor = v_atmosphereMieColor;
opacity = v_atmosphereOpacity;
#endif
#ifdef COLOR_CORRECT
const bool ignoreBlackPixels = true;
rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels);
mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels);
#endif
vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity);
// Fog is applied to tiles selected for fog, close to the Earth.
#ifdef FOG
vec3 fogColor = groundAtmosphereColor.rgb;
// If there is lighting, apply that to the fog.
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0);
fogColor *= darken;
#endif
#ifndef HDR
fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);
fogColor.rgb = czm_inverseGamma(fogColor.rgb);
#endif
finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a);
#else
// Apply ground atmosphere. This happens when the camera is far away from the earth.
// The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere.
// This value is larger near the "circumference", as it is further away from the camera. We use it to
// brighten up that area of the ground atmosphere.
const float transmittanceModifier = 0.5;
float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0);
vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance;
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
float fadeInDist = u_nightFadeDistance.x;
float fadeOutDist = u_nightFadeDistance.y;
float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0);
float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0);
vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken);
finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity);
#endif
#ifndef HDR
finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb);
#else
finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6);
#endif
finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade);
#endif
}
#endif
#ifdef UNDERGROUND_COLOR
if (czm_backFacing())
{
float distanceFromEllipsoid = max(czm_eyeHeight, 0.0);
float distance = max(v_distance - distanceFromEllipsoid, 0.0);
float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance);
vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount);
finalColor = alphaBlend(undergroundColor, finalColor);
}
#endif
#ifdef TRANSLUCENT
if (inTranslucencyRectangle())
{
vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance;
finalColor.a *= interpolateByDistance(alphaByDistance, v_distance);
}
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u62AC\u5347
#ifdef APPLY_MARS3D_UPLIFT
if(u_mars_uplift_enabled) {
bool isInSlopeRampRectangle = inAreaMars3DRange(u_mars_uplift_rectangle, u_mars_uplift_texture);
if(isInSlopeRampRectangle == u_mars_uplift_hideInsideOrOutside) {
discard;
}
}
#endif
out_FragColor = finalColor;
}
#ifdef SHOW_REFLECTIVE_OCEAN
float waveFade(float edge0, float edge1, float x)
{
float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
return pow(1.0 - y, 5.0);
}
float linearFade(float edge0, float edge1, float x)
{
return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
}
// Based on water rendering by Jonas Wagner:
// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog
// low altitude wave settings
const float oceanFrequencyLowAltitude = 825000.0;
const float oceanAnimationSpeedLowAltitude = 0.004;
const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0;
const float oceanSpecularIntensity = 0.5;
// high altitude wave settings
const float oceanFrequencyHighAltitude = 125000.0;
const float oceanAnimationSpeedHighAltitude = 0.008;
const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0;
vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade)
{
vec3 positionToEyeEC = -positionEyeCoordinates;
float positionToEyeECLength = length(positionToEyeEC);
// The double normalize below works around a bug in Firefox on Android devices.
vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC));
// Fade out the waves as the camera moves far from the surface.
float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength);
#ifdef SHOW_OCEAN_WAVES
// high altitude waves
float time = czm_frameNumber * oceanAnimationSpeedHighAltitude;
vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0);
vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude);
// low altitude waves
time = czm_frameNumber * oceanAnimationSpeedLowAltitude;
noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0);
vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude);
// blend the 2 wave layers based on distance to surface
float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength);
float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength);
vec3 normalTangentSpace =
(highAltitudeFade * normalTangentSpaceHighAltitude) +
(lowAltitudeFade * normalTangentSpaceLowAltitude);
normalTangentSpace = normalize(normalTangentSpace);
// fade out the normal perturbation as we move farther from the water surface
normalTangentSpace.xy *= waveIntensity;
normalTangentSpace = normalize(normalTangentSpace);
#else
vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0);
#endif
vec3 normalEC = enuToEye * normalTangentSpace;
const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6);
// Use diffuse light to highlight the waves
float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue;
vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade);
#ifdef SHOW_OCEAN_WAVES
// Where diffuse light is low or non-existent, use wave highlights based solely on
// the wave bumpiness and no particular light direction.
float tsPerturbationRatio = normalTangentSpace.z;
vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity);
#else
vec3 nonDiffuseHighlight = vec3(0.0);
#endif
// Add specular highlights in 3D, and in all modes when zoomed in.
float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0);
float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue);
float specular = specularIntensity * surfaceReflectance;
#ifdef HDR
specular *= 1.4;
float e = 0.2;
float d = 3.3;
float c = 1.7;
vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular));
#else
vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular;
#endif
return vec4(color, imageryColor.a);
}
#endif // #ifdef SHOW_REFLECTIVE_OCEAN
`;var bU=`#ifdef QUANTIZATION_BITS12
in vec4 compressed0;
in float compressed1;
#else
in vec4 position3DAndHeight;
in vec4 textureCoordAndEncodedNormals;
#endif
#ifdef GEODETIC_SURFACE_NORMALS
in vec3 geodeticSurfaceNormal;
#endif
#ifdef EXAGGERATION
uniform vec2 u_verticalExaggerationAndRelativeHeight;
#endif
uniform vec3 u_center3D;
uniform mat4 u_modifiedModelView;
uniform mat4 u_modifiedModelViewProjection;
uniform vec4 u_tileRectangle;
// Uniforms for 2D Mercator projection
uniform vec2 u_southAndNorthLatitude;
uniform vec2 u_southMercatorYAndOneOverHeight;
out vec3 v_positionMC;
out vec3 v_positionEC;
out vec3 v_textureCoordinates;
out vec3 v_normalMC;
out vec3 v_normalEC;
#ifdef APPLY_MATERIAL
out float v_slope;
out float v_aspect;
out float v_height;
#endif
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
out float v_distance;
#endif
#if defined(FOG) || defined(GROUND_ATMOSPHERE)
out vec3 v_atmosphereRayleighColor;
out vec3 v_atmosphereMieColor;
out float v_atmosphereOpacity;
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
uniform highp sampler2D u_clippingExtents;
out vec2 v_clippingPosition;
flat out int v_regionIndex;
#endif
// These functions are generated at runtime.
vec4 getPosition(vec3 position, float height, vec2 textureCoordinates);
float get2DYPositionFraction(vec2 textureCoordinates);
vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates)
{
return u_modifiedModelViewProjection * vec4(position, 1.0);
}
float get2DMercatorYPositionFraction(vec2 textureCoordinates)
{
// The width of a tile at level 11, in radians and assuming a single root tile, is
// 2.0 * czm_pi / pow(2.0, 11.0)
// We want to just linearly interpolate the 2D position from the texture coordinates
// when we're at this level or higher. The constant below is the expression
// above evaluated and then rounded up at the 4th significant digit.
const float maxTileWidth = 0.003068;
float positionFraction = textureCoordinates.y;
float southLatitude = u_southAndNorthLatitude.x;
float northLatitude = u_southAndNorthLatitude.y;
if (northLatitude - southLatitude > maxTileWidth)
{
float southMercatorY = u_southMercatorYAndOneOverHeight.x;
float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y;
float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y);
currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude);
positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight);
}
return positionFraction;
}
float get2DGeographicYPositionFraction(vec2 textureCoordinates)
{
return textureCoordinates.y;
}
vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates)
{
float yPositionFraction = get2DYPositionFraction(textureCoordinates);
vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0);
return u_modifiedModelViewProjection * rtcPosition2D;
}
vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates)
{
return getPositionPlanarEarth(position, 0.0, textureCoordinates);
}
vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates)
{
return getPositionPlanarEarth(position, height, textureCoordinates);
}
vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates)
{
// We do not do RTC while morphing, so there is potential for jitter.
// This is unlikely to be noticeable, though.
vec3 position3DWC = position + u_center3D;
float yPositionFraction = get2DYPositionFraction(textureCoordinates);
vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0);
vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime);
return czm_modelViewProjection * morphPosition;
}
#ifdef QUANTIZATION_BITS12
uniform vec2 u_minMaxHeight;
uniform mat4 u_scaleAndBias;
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u538B\u5E73
#ifdef APPLY_MARS3D_FLAT
uniform bool u_mars_flat_enabled;
uniform vec4 u_mars_flat_rectangle;
uniform highp sampler2D u_mars_flat_texture;
uniform highp float u_mars_inverseTileWidth;
uniform highp vec2 u_mars_cartographicTileRectangle;
vec4 getAreaMars3DRange(vec4 rectangle, sampler2D rangeTexture, vec2 textureCoordinates) {
float lo = textureCoordinates.x / u_mars_inverseTileWidth + u_mars_cartographicTileRectangle.x;
float la = textureCoordinates.y / u_mars_inverseTileWidth + u_mars_cartographicTileRectangle.y;
float newX = (lo - rectangle.x) / rectangle.z;
float newY = (la - rectangle.y) / rectangle.w;
vec4 point;
if(newX >= 0.0 && newX <= 1.0 && newY >= 0.0 && newY <= 1.0){
vec4 point = texture(rangeTexture, vec2(newX, newY));
return point;
}else{
return vec4(0.0);
}
}
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u538B\u5E73
void main()
{
#ifdef QUANTIZATION_BITS12
vec2 xy = czm_decompressTextureCoordinates(compressed0.x);
vec2 zh = czm_decompressTextureCoordinates(compressed0.y);
vec3 position = vec3(xy, zh.x);
float height = zh.y;
vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z);
height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x;
position = (u_scaleAndBias * vec4(position, 1.0)).xyz;
#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL)
float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x;
float encodedNormal = compressed1;
#elif defined(INCLUDE_WEB_MERCATOR_Y)
float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x;
float encodedNormal = 0.0;
#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)
float webMercatorT = textureCoordinates.y;
float encodedNormal = compressed0.w;
#else
float webMercatorT = textureCoordinates.y;
float encodedNormal = 0.0;
#endif
#else
// A single float per element
vec3 position = position3DAndHeight.xyz;
float height = position3DAndHeight.w;
vec2 textureCoordinates = textureCoordAndEncodedNormals.xy;
#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y)
float webMercatorT = textureCoordAndEncodedNormals.z;
float encodedNormal = textureCoordAndEncodedNormals.w;
#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)
float webMercatorT = textureCoordinates.y;
float encodedNormal = textureCoordAndEncodedNormals.z;
#elif defined(INCLUDE_WEB_MERCATOR_Y)
float webMercatorT = textureCoordAndEncodedNormals.z;
float encodedNormal = 0.0;
#else
float webMercatorT = textureCoordinates.y;
float encodedNormal = 0.0;
#endif
#endif
vec3 position3DWC = position + u_center3D;
#ifdef GEODETIC_SURFACE_NORMALS
vec3 ellipsoidNormal = geodeticSurfaceNormal;
#else
vec3 ellipsoidNormal = normalize(position3DWC);
#endif
#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS)
float exaggeration = u_verticalExaggerationAndRelativeHeight.x;
float relativeHeight = u_verticalExaggerationAndRelativeHeight.y;
float newHeight = (height - relativeHeight) * exaggeration + relativeHeight;
// stop from going through center of earth
float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z);
newHeight = max(newHeight, -minRadius);
vec3 offset = ellipsoidNormal * (newHeight - height);
position += offset;
position3DWC += offset;
height = newHeight;
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u538B\u5E73
#ifdef APPLY_MARS3D_FLAT
if(u_mars_flat_enabled) {
vec4 isInside = getAreaMars3DRange(u_mars_flat_rectangle,u_mars_flat_texture,textureCoordinates);
if(isInside.r>0.0 || isInside.g>0.0 || isInside.b>0.0 || isInside.a>0.0){
float newHeight = czm_unpackFloat(isInside);
if(newHeight>-9999.0 && newHeight<9999.0){
vec3 offset = (newHeight - height) * ellipsoidNormal;
position += offset;
position3DWC += offset;
height = newHeight;
// vec3 newPosition = (position3DWC + offset) - u_center3D;
}
}
}
#endif
// \u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Muyao 2023-02-20 \u5730\u5F62\u538B\u5E73
gl_Position = getPosition(position, height, textureCoordinates);
v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz;
v_positionMC = position3DWC; // position in model coordinates
v_textureCoordinates = vec3(textureCoordinates, webMercatorT);
#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)
vec3 normalMC = czm_octDecode(encodedNormal);
#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS)
vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal;
vec3 rejection = normalMC - projection;
normalMC = normalize(projection + rejection * exaggeration);
#endif
v_normalMC = normalMC;
v_normalEC = czm_normal3D * v_normalMC;
#endif
#ifdef ENABLE_CLIPPING_POLYGONS
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC);
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
vec2 minDistance = vec2(czm_infinity);
v_clippingPosition = vec2(czm_infinity);
v_regionIndex = -1;
for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) {
vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex);
vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz;
vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0));
vec2 distance = abs(rectUv - clamped) * extents.wz;
float threshold = 0.01;
if (minDistance.x > distance.x || minDistance.y > distance.y) {
minDistance = distance;
v_clippingPosition = rectUv;
if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) {
v_regionIndex = regionIndex;
}
}
}
#endif
#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE))
bool dynamicLighting = false;
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING))
dynamicLighting = true;
#endif
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN)
vec3 atmosphereLightDirection = czm_sunDirectionWC;
#else
vec3 atmosphereLightDirection = czm_lightDirectionWC;
#endif
vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC));
computeAtmosphereScattering(
position3DWC,
lightDirection,
v_atmosphereRayleighColor,
v_atmosphereMieColor,
v_atmosphereOpacity
);
#endif
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz);
#endif
#ifdef APPLY_MATERIAL
float northPoleZ = czm_ellipsoidRadii.z;
vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ);
vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal));
float dotProd = abs(dot(ellipsoidNormal, v_normalMC));
v_slope = acos(dotProd);
vec3 normalRejected = ellipsoidNormal * dotProd;
vec3 normalProjected = v_normalMC - normalRejected;
vec3 aspectVector = normalize(normalProjected);
v_aspect = acos(dot(aspectVector, vectorEastMC));
float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal);
v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect);
v_height = height;
#endif
}
`;var zI=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) {
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
float atmosphereInnerRadius = length(positionWC);
computeScattering(
primaryRay,
length(cameraToPositionWC),
lightDirection,
atmosphereInnerRadius,
rayleighColor,
mieColor,
opacity
);
}
`;var ost=new U;function rst(e,t){let n=e.unionClippingRegions,i=e.length,o=Es.useFloatTexture(t),r=Es.getTextureResolution(e,t,ost),s=r.x,a=r.y,c=o?cst(s,a):lst(s,a);return c+=`
`,c+=n?sst(i):ast(i),c}function sst(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix)
{
vec4 position = czm_windowToEyeCoordinates(fragCoord);
vec3 clipNormal = vec3(0.0);
vec3 clipPosition = vec3(0.0);
float clipAmount;
float pixelWidth = czm_metersPerPixel(position);
bool breakAndDiscard = false;
for (int i = 0; i < ${e}; ++i)
{
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
clipNormal = clippingPlane.xyz;
clipPosition = -clippingPlane.w * clipNormal;
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount));
if (amount <= 0.0)
{
breakAndDiscard = true;
break;
}
}
if (breakAndDiscard) {
discard;
}
return clipAmount;
}
`}function ast(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix)
{
bool clipped = true;
vec4 position = czm_windowToEyeCoordinates(fragCoord);
vec3 clipNormal = vec3(0.0);
vec3 clipPosition = vec3(0.0);
float clipAmount = 0.0;
float pixelWidth = czm_metersPerPixel(position);
for (int i = 0; i < ${e}; ++i)
{
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
clipNormal = clippingPlane.xyz;
clipPosition = -clippingPlane.w * clipNormal;
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
clipAmount = max(amount, clipAmount);
clipped = clipped && (amount <= 0.0);
}
if (clipped)
{
discard;
}
return clipAmount;
}
`}function cst(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform)
{
int pixY = clippingPlaneNumber / ${e};
int pixX = clippingPlaneNumber - (pixY * ${e});
float u = (float(pixX) + 0.5) * ${o};
float v = (float(pixY) + 0.5) * ${r};
vec4 plane = texture(packedClippingPlanes, vec2(u, v));
return czm_transformPlane(plane, transform);
}
`}function lst(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform)
{
int clippingPlaneStartIndex = clippingPlaneNumber * 2;
int pixY = clippingPlaneStartIndex / ${e};
int pixX = clippingPlaneStartIndex - (pixY * ${e});
float u = (float(pixX) + 0.5) * ${o};
float v = (float(pixY) + 0.5) * ${r};
vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0;
vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w);
vec4 plane;
plane.xyz = czm_octDecode(oct, 65535.0);
plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v)));
return czm_transformPlane(plane, transform);
}
`}var $y=rst;function ust(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function JY(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function fst(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ne.SCENE3D:o=t;break;case ne.SCENE2D:case ne.COLUMBUS_VIEW:o=n;break;case ne.MORPHING:o=i;break}return o}function dst(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex);
}`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
}`}function hst(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
return czm_unpackClippingExtents(extentsTexture, index);
}`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
return vec4();
}`}function mst(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}JY.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,p=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,x=e.enableLighting,b=e.dynamicAtmosphereLighting,T=e.dynamicAtmosphereLightingFromSun,C=e.showGroundAtmosphere,A=e.perFragmentGroundAtmosphere,E=e.hasVertexNormals,v=e.useWebMercatorProjection,D=e.enableFog,R=e.enableClippingPlanes,O=e.clippingPlanes,M=e.enableClippingPolygons,N=e.clippingPolygons,_=e.clippedByBoundaries,S=e.hasImageryLayerCutout,w=e.colorCorrect,I=e.highlightFillTile,L=e.colorToAlpha,B=e.hasGeodeticSurfaceNormals,H=e.hasExaggeration,V=e.showUndergroundColor,G=e.translucent,k=e.marsOptions||{},W=0,q="",j=n.renderedMesh.encoding;j.quantization===xa.BITS12&&(W=1,q="QUANTIZATION_BITS12");let Q=0,he="";_&&(Q=1,he="TILE_LIMIT_RECTANGLE");let ye=0,re="";S&&(ye=1,re="APPLY_IMAGERY_CUTOUT");let _e=t.mode,be=_e|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|p<<8|g<<9|m<<10|x<<11|b<<12|T<<13|C<<14|A<<15|E<<16|v<<17|D<<18|W<<19|h<<20|R<<21|M<<22|Q<<23|ye<<24|w<<25|I<<26|L<<27|B<<28|H<<29|V<<30|G<<31|f<<32,we=0;l(O)&&O.length>0&&(we=R?O.clippingPlanesState:0);let De=0;l(N)&&N.length>0&&(De=M?N.clippingPolygonsState:0);let Me=n.surfaceShader;if(l(Me)&&Me.numberOfDayTextures===i&&Me.flags===be&&Me.material===this.material&&Me.clippingShaderState===we&&Me.clippingPolygonShaderState===De)return Me.shaderProgram;let Re=this._shadersByTexturesFlags[i];if(l(Re)||(Re=this._shadersByTexturesFlags[i]=[]),Me=Re[be],!l(Me)||Me.material!==this.material||Me.clippingShaderState!==we||Me.clippingPolygonShaderState!==De){let rt=this.baseVertexShaderSource.clone(),Ye=this.baseFragmentShaderSource.clone();we!==0&&Ye.sources.unshift($y(O,t.context)),De!==0&&(Ye.sources.unshift(dst(t.context)),rt.sources.unshift(hst(t.context))),k.enableUplift&&Ye.defines.push("APPLY_MARS3D_UPLIFT"),k.enableFlat&&rt.defines.push("APPLY_MARS3D_FLAT"),k.enableClip&&Ye.defines.push("APPLY_MARS3D_CLIP"),k.enableFlood&&Ye.defines.push("APPLY_MARS3D_FLOOD"),rt.defines.push(q),Ye.defines.push(`TEXTURE_UNITS ${i}`,he,re),o&&Ye.defines.push("APPLY_BRIGHTNESS"),r&&Ye.defines.push("APPLY_CONTRAST"),s&&Ye.defines.push("APPLY_HUE"),a&&Ye.defines.push("APPLY_SATURATION"),c&&Ye.defines.push("APPLY_GAMMA"),k.invertColor&&Ye.defines.push("APPLY_INVERT_COLOR_MARS3D"),k.filterColor&&Ye.defines.push("APPLY_FILTER_COLOR_MARS3D"),u&&Ye.defines.push("APPLY_ALPHA"),f&&Ye.defines.push("APPLY_DAY_NIGHT_ALPHA"),p&&Ye.defines.push("HAS_WATER_MASK"),g&&(Ye.defines.push("SHOW_REFLECTIVE_OCEAN"),rt.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&Ye.defines.push("SHOW_OCEAN_WAVES"),L&&Ye.defines.push("APPLY_COLOR_TO_ALPHA"),V&&(rt.defines.push("UNDERGROUND_COLOR"),Ye.defines.push("UNDERGROUND_COLOR")),G&&(rt.defines.push("TRANSLUCENT"),Ye.defines.push("TRANSLUCENT")),x&&(E?(rt.defines.push("ENABLE_VERTEX_LIGHTING"),Ye.defines.push("ENABLE_VERTEX_LIGHTING")):(rt.defines.push("ENABLE_DAYNIGHT_SHADING"),Ye.defines.push("ENABLE_DAYNIGHT_SHADING"))),b&&(rt.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),Ye.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),T&&(rt.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),Ye.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),C&&(rt.defines.push("GROUND_ATMOSPHERE"),Ye.defines.push("GROUND_ATMOSPHERE"),A&&(rt.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),Ye.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),rt.defines.push("INCLUDE_WEB_MERCATOR_Y"),Ye.defines.push("INCLUDE_WEB_MERCATOR_Y"),D&&(rt.defines.push("FOG"),Ye.defines.push("FOG")),h&&Ye.defines.push("APPLY_SPLIT"),R&&Ye.defines.push("ENABLE_CLIPPING_PLANES"),M&&(Ye.defines.push("ENABLE_CLIPPING_POLYGONS"),rt.defines.push("ENABLE_CLIPPING_POLYGONS"),N.inverse&&Ye.defines.push("CLIPPING_INVERSE"),Ye.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${N.extentsCount}`),rt.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${N.extentsCount}`)),w&&Ye.defines.push("COLOR_CORRECT"),I&&Ye.defines.push("HIGHLIGHT_FILL_TILE"),B&&rt.defines.push("GEODETIC_SURFACE_NORMALS"),H&&rt.defines.push("EXAGGERATION");let dt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend)
{
vec4 color = initialColor;
`;S&&(dt+=` vec4 cutoutAndColorResult;
bool texelUnclipped;
`);for(let _t=0;_t<i;++_t)S?dt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${_t}];
texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y;
cutoutAndColorResult = sampleAndBlend(
`:dt+=` color = sampleAndBlend(
`,dt+=` color,
u_dayTextures[${_t}],
u_dayTextureUseWebMercatorT[${_t}] ? textureCoordinates.xz : textureCoordinates.xy,
u_dayTextureTexCoordsRectangle[${_t}],
u_dayTextureTranslationAndScale[${_t}],
${u?`u_dayTextureAlpha[${_t}]`:"1.0"},
${f?`u_dayTextureNightAlpha[${_t}]`:"1.0"},
${f?`u_dayTextureDayAlpha[${_t}]`:"1.0"},
${o?`u_dayTextureBrightness[${_t}]`:"0.0"},
${r?`u_dayTextureContrast[${_t}]`:"0.0"},
${s?`u_dayTextureHue[${_t}]`:"0.0"},
${a?`u_dayTextureSaturation[${_t}]`:"0.0"},
${c?`u_dayTextureOneOverGamma[${_t}]`:"0.0"},
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
${k.invertColor?`u_mars3dTextureInvertColor[${_t}]`:"false"},
${k.filterColor?`u_mars3dTextureFilterColor[${_t}]`:"vec3(1.0)"},
//\u3010\u706B\u661F\u79D1\u6280marsgis.cn\u3011 Hao 2022-1-5 \u74E6\u7247\u6EE4\u955C\u6548\u679C
${h?`u_dayTextureSplit[${_t}]`:"0.0"},
${L?`u_colorsToAlpha[${_t}]`:"vec4(0.0)"},
nightBlend );
`,S&&(dt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color);
`);dt+=` return color;
}`,Ye.sources.push(dt),rt.sources.push(fst(_e)),rt.sources.push(mst(v));let Xe=Jt.fromCache({context:t.context,vertexShaderSource:rt,fragmentShaderSource:Ye,attributeLocations:j.getAttributeLocations()});Me=Re[be]=new ust(i,be,this.material,Xe,we,De)}return n.surfaceShader=Me,Me.shaderProgram};JY.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var TU=JY;var pst={NONE:-1,PARTIAL:0,FULL:1},Ar=Object.freeze(pst);function CU(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=y(r,0),this.retry=!1,this.error=s}CU.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new CU(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${T_(i)}`),c};CU.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var Oo=CU;var _st={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},Jn=Object.freeze(_st);var gst={START:0,LOADING:1,DONE:2,FAILED:3},ba=Object.freeze(gst);var yst={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},po=Object.freeze(yst);function tr(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new oe(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=po.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new ce,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(tr.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===po.RECEIVING||e===po.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==Jn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var xst=new fe;function eX(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ne.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,xst);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var bst=new d,Tst=new d,Cst=new d;tr.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let p=a[h],g=a[h+1],m=a[h+2],x=eX(c,t,n,s,p,bst),b=eX(c,t,n,s,g,Tst),T=eX(c,t,n,s,m,Cst),C=ti.rayTriangleParametric(e,x,b,T,i);l(C)&&C<f&&C>=0&&(f=C)}return f!==Number.MAX_VALUE?pn.getPoint(e,f,o):void 0};tr.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=po.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};tr.prototype.freeVertexArray=function(){tr._freeVertexArray(this.vertexArray),this.vertexArray=void 0,tr._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};tr.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new tr),e.state===ba.START&&(Ast(e,t,n),e.state=ba.LOADING)};tr.processStateMachine=function(e,t,n,i,o,r,s){tr.initialize(e,n,i);let a=e.data;if(e.state===ba.LOADING&&Est(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===po.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,p={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(p[g]=h[g]));e._loadedCallbacks=p,e.state=ba.DONE}c&&(e.renderable=!0)};tr.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===Jn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let p=h.processStateMachine(e,n,i);a=a&&p,s=s||p||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===Jn.FAILED||h.loadingImagery.state===Jn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function uge(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=el.clone(s);c.hasGeodeticSurfaceNormals=t,c=el.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(tr._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=tr._createVertexArrayForMesh(i.context,o)):(tr._freeVertexArray(e.vertexArray),e.vertexArray=tr._createVertexArrayForMesh(i.context,o)),tr._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}tr.prototype.addGeodeticSurfaceNormals=function(e,t){uge(this,!0,e,t)};tr.prototype.removeGeodeticSurfaceNormals=function(e){uge(this,!1,void 0,e)};tr.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,p=h.length;for(let g=0;g<p;g++){let m=h[g];m.level=-1}}}};function Ast(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=po.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function Est(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===po.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||tr.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===po.FAILED&&Sst(s,e,t,n,e.x,e.y,e.level),s.terrainState===po.UNLOADED&&vst(s,n,e.x,e.y,e.level),s.terrainState===po.RECEIVED&&Dst(s,t,n,e.x,e.y,e.level),s.terrainState===po.TRANSFORMED&&(Ist(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=po.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)Ost(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function Sst(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=ba.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let p=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(p)&&(e.terrainState=po.RECEIVING,Promise.resolve(p).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=po.RECEIVED)}).catch(function(){e.terrainState=po.FAILED}))}function vst(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=po.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=po.RECEIVED,e.request=void 0}function s(c){if(e.request.state===ei.CANCELLED){e.terrainData=void 0,e.terrainState=po.UNLOADED,e.request=void 0;return}e.terrainState=po.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=Oo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new rr({throttle:!1,throttleByServer:!0,type:Ts.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=po.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=po.UNLOADED,e.request=void 0)}a()}var wst={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function Dst(e,t,n,i,o,r){let s=n.tilingScheme,a=wst;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=po.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=po.TRANSFORMED}).catch(function(){e.terrainState=po.FAILED}))}tr._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Tt.createVertexBuffer({context:e,typedArray:n,usage:ke.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Tt.createIndexBuffer({context:e,typedArray:a,usage:ke.STATIC_DRAW,indexDatatype:Be.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new oi({context:e,attributes:o,indexBuffer:s})};tr._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function Ist(e,t,n,i,o,r,s){e.vertexArray=tr._createVertexArrayForMesh(t,e.mesh),e.terrainState=po.READY,e.fill=e.fill&&e.fill.destroy(s)}function Pst(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Rt.create({context:e,pixelFormat:nt.LUMINANCE,pixelDatatype:Ke.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function Ost(e,t){let n=t.terrainData.waterMask,i=Pst(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Rt.create({context:e,pixelFormat:nt.LUMINANCE,pixelDatatype:Ke.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,oe.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}tr.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};tr.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var lh=tr;function Zy(e){if(e=y(e,y.EMPTY_OBJECT),this._ellipsoid=y(e.ellipsoid,ee.default),this._numberOfLevelZeroTilesX=y(e.numberOfLevelZeroTilesX,1),this._numberOfLevelZeroTilesY=y(e.numberOfLevelZeroTilesY,1),this._projection=new Ni(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new U(-i,-i),this._rectangleNortheastInMeters=new U(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(Zy.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});Zy.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};Zy.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};Zy.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};Zy.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};Zy.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new U(o.west,o.south)),a=r.unproject(new U(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};Zy.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),p=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=p/a|0;m>=o&&(m=o-1);let x=g/u|0;return x>=r&&(x=r-1),l(n)?(n.x=m,n.y=x,n):new U(m,x)};var ms=Zy;var tX,fge="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmR-yn9MvzP-kKlsEftvba-Ksa9fy6DfgprKJvVPrYflNktZkc_R1DWiCclyPfJDVoQFVG5RAYgC6zo1Y0tjygPXWzKh6a7QBgk7gX6xm7vkHmbExafWckqkicqYw9UkxFf1Fjya64KizMRumKKV-VXV6_CwU0hR7Zv4pDhQDz4bwoyMxi_abRmOIS58oUlATyE.AT1_X4rsxcr3",HE={};HE.defaultAccessToken=fge;HE.defaultWorldImageryServer=new Ee({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});HE.defaultWorldHillshadeServer=new Ee({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});HE.defaultWorldOceanServer=new Ee({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});HE.getDefaultTokenCredit=function(e){if(e===fge){if(!l(tX)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';tX=new vt(t,!0)}return tX}};var Yf=HE;function nX(e){e=y(e,y.EMPTY_OBJECT),this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=Ee.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=vh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let p=u[f],g=p.x*4+p.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}nX.prototype.isReady=function(){return this._isReady};nX.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=vh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var AU=nX;function iX(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}iX.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};iX.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var zm=iX;function GE(){de.throwInstantiationError()}Object.defineProperties(GE.prototype,{rectangle:{get:de.throwInstantiationError},tileWidth:{get:de.throwInstantiationError},tileHeight:{get:de.throwInstantiationError},maximumLevel:{get:de.throwInstantiationError},minimumLevel:{get:de.throwInstantiationError},tilingScheme:{get:de.throwInstantiationError},tileDiscardPolicy:{get:de.throwInstantiationError},errorEvent:{get:de.throwInstantiationError},credit:{get:de.throwInstantiationError},proxy:{get:de.throwInstantiationError},hasAlphaChannel:{get:de.throwInstantiationError}});GE.prototype.getTileCredits=function(e,t,n){de.throwInstantiationError()};GE.prototype.requestImage=function(e,t,n,i){de.throwInstantiationError()};GE.prototype.pickFeatures=function(e,t,n,i,o){de.throwInstantiationError()};var Rst=/\.ktx2$/i;GE.loadImage=function(e,t){let n=Ee.createIfNeeded(t);return Rst.test(n.url)?eu(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Hl=GE;var Mst={SATELLITE:1,OCEANS:2,HILLSHADE:3},Hm=Object.freeze(Mst);function dge(e){this.useTiles=y(e.usePreCachedTilesIfAvailable,!0);let t=e.ellipsoid;this.tilingScheme=y(e.tilingScheme,new Qi({ellipsoid:t})),this.rectangle=y(e.rectangle,this.tilingScheme.rectangle),this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new vt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=y(e.tileWidth,256),this.tileHeight=y(e.tileHeight,256),this.maximumLevel=e.maximumLevel}dge.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new AU({missingImageUrl:hge(e,0,0,this.maximumLevel).url,pixelsToCheck:[new U(0,0),new U(200,20),new U(20,200),new U(80,110),new U(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function Lst(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new ms({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new Qi({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new se(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Ni,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new se(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new vt(e.copyrightText)]:t.credit=new vt(e.copyrightText))}function Nst(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new se(n)}async function Fst(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();Lst(i,t)}catch(i){Nst(e,i)}}function Gm(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=y(e.tileWidth,256),this._tileHeight=y(e.tileHeight,256),this._maximumLevel=e.maximumLevel,this._tilingScheme=y(e.tilingScheme,new Qi({ellipsoid:e.ellipsoid})),this._useTiles=y(e.usePreCachedTilesIfAvailable,!0),this._rectangle=y(e.rectangle,this._tilingScheme.rectangle),this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new vt(t)),this.enablePickFeatures=y(e.enablePickFeatures,!0),this._errorEvent=new me}Gm.fromBasemapType=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n,i,o;switch(e){case Hm.SATELLITE:{n=y(t.token,Yf.defaultAccessToken),i=Ee.createIfNeeded(Yf.defaultWorldImageryServer),i.appendForwardSlash();let r=Yf.getDefaultTokenCredit(n);l(r)&&(o=vt.clone(r))}break;case Hm.OCEANS:{n=y(t.token,Yf.defaultAccessToken),i=Ee.createIfNeeded(Yf.defaultWorldOceanServer),i.appendForwardSlash();let r=Yf.getDefaultTokenCredit(n);l(r)&&(o=vt.clone(r))}break;case Hm.HILLSHADE:{n=y(t.token,Yf.defaultAccessToken),i=Ee.createIfNeeded(Yf.defaultWorldHillshadeServer),i.appendForwardSlash();let r=Yf.getDefaultTokenCredit(n);l(r)&&(o=vt.clone(r))}break;default:}return Gm.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function hge(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Ri?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(Gm.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});Gm.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=Ee.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new Gm(t);i._resource=n;let o=new dge(t);return y(t.usePreCachedTilesIfAvailable,!0)&&await Fst(n,o),o.build(i),i};Gm.prototype.getTileCredits=function(e,t,n){return this._tileCredits};Gm.prototype.requestImage=function(e,t,n,i){return Hl.loadImage(this,hge(this,e,t,n,i))};Gm.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Ri)s=P.toDegrees(i),a=P.toDegrees(o),c="4326";else{let p=this._tilingScheme.projection.project(new fe(i,o,0));s=p.x,a=p.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(p){let g=[],m=p.results;if(!l(m))return g;for(let x=0;x<m.length;++x){let b=m[x],T=new zm;if(T.data=b,T.name=b.value,T.properties=b.attributes,T.configureDescriptionFromProperties(b.attributes),b.geometryType==="esriGeometryPoint"&&b.geometry){let C=b.geometry.spatialReference&&b.geometry.spatialReference.wkid?b.geometry.spatialReference.wkid:4326;if(C===4326||C===4283)T.position=fe.fromDegrees(b.geometry.x,b.geometry.y,b.geometry.z);else if(C===102100||C===900913||C===3857){let A=new Ni;T.position=A.unproject(new d(b.geometry.x,b.geometry.y,b.geometry.z))}}g.push(T)}return g})};Gm._metadataCache={};var Qy=Gm;var Bst={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},HI=Object.freeze(Bst);function GI(e){}GI.prototype.isReady=function(){return!0};GI.prototype.shouldDiscardImage=function(e){return GI.EMPTY_IMAGE===e};var EU;Object.defineProperties(GI,{EMPTY_IMAGE:{get:function(){return l(EU)||(EU=new Image,EU.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),EU}}});var WI=GI;function mge(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}mge.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof vt)break;o.credit=new vt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(P.toRadians(u[1]),P.toRadians(u[0]),P.toRadians(u[3]),P.toRadians(u[2]))}}};function kst(e,t){if(e.resourceSets.length!==1)throw new se("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>{var r;return(r=o.coverageAreas)==null?void 0:r.some(s=>l(s.bbox))})),t.attributionList=i}function Vst(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),Oo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new se(i)}async function Ust(e,t,n){let i=e.url,o=Os._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Os._metadataCache[i]=o);try{let r=await o;return kst(r,t)}catch(r){Vst(e,r,n)}}function Os(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=y(e.mapStyle,HI.AERIAL),this._mapLayer=e.mapLayer,this._culture=y(e.culture,""),this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new WI),this._proxy=e.proxy,this._credit=new vt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Os.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new ms({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new me}Object.defineProperties(Os.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Os.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=y(t.mapStyle,HI.AERIAL),o=Ee.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Os(t);a._resource=o;let c=new mge(t);return await Ust(s,c),c.build(a),a};var zst=new ae;Os.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,zst);return Wst(this._attributionList,n,i)};Os.prototype.requestImage=function(e,t,n,i){let o=Hl.loadImage(this,Hst(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?WI.EMPTY_IMAGE:Promise.reject(r)})};Os.prototype.pickFeatures=function(e,t,n,i,o){};Os.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Os.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Os._logoUrl=void 0;Object.defineProperties(Os,{logoUrl:{get:function(){return l(Os._logoUrl)||(Os._logoUrl=nn("Assets/Images/bing_maps_credit.png")),Os._logoUrl},set:function(e){Os._logoUrl=e}}});function Hst(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Os.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var Gst=new ae;function Wst(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let p=ae.intersection(n,h.bbox,Gst);l(p)&&(c=!0)}}c&&i.push(s.credit)}return i}Os._metadataCache={};var SU=Os;var pge=/{[^}]+}/g,_ge={x:Xst,y:$st,z:Jst,s:eat,reverseX:Kst,reverseY:Zst,reverseZ:Qst,westDegrees:tat,southDegrees:nat,eastDegrees:iat,northDegrees:oat,westProjected:rat,southProjected:sat,eastProjected:aat,northProjected:cat,width:lat,height:uat},jst=At(_ge,{i:fat,j:dat,reverseI:hat,reverseJ:mat,longitudeDegrees:_at,latitudeDegrees:gat,longitudeProjected:yat,latitudeProjected:xat,format:Tat});function jI(e){e=y(e,y.EMPTY_OBJECT),this._errorEvent=new me;let t=Ee.createIfNeeded(e.url),n=Ee.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=y(e.tileWidth,256),this._tileHeight=y(e.tileHeight,256),this._minimumLevel=y(e.minimumLevel,0),this._maximumLevel=e.maximumLevel,this._tilingScheme=y(e.tilingScheme,new ms({ellipsoid:e.ellipsoid})),this._rectangle=y(e.rectangle,this._tilingScheme.rectangle),this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new vt(o)),this._credit=o,this._hasAlphaChannel=y(e.hasAlphaChannel,!0);let r=e.customTags,s=At(_ge,r),a=At(jst,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=y(e.enablePickFeatures,!0)}Object.defineProperties(jI.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});jI.prototype.getTileCredits=function(e,t,n){};jI.prototype.requestImage=function(e,t,n,i){return Hl.loadImage(this,qst(this,e,t,n,i))};jI.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=Yst(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var vU=!1,Pu=new ae,wU=!1,qI=new ae;function qst(e,t,n,i,o){vU=!1,wU=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(pge);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var oX=!1,jE=new U,rX=!1;function Yst(e,t,n,i,o,r,s){vU=!1,wU=!1,oX=!1,rX=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(pge);return l(h)&&h.forEach(function(p){let g=p.substring(1,p.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function qE(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function Xst(e,t,n,i){return qE(e,"{x}",t)}function Kst(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return qE(e,"{reverseX}",o)}function $st(e,t,n,i){return qE(e,"{y}",n)}function Zst(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return qE(e,"{reverseY}",o)}function Qst(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return qE(e,"{reverseZ}",r)}function Jst(e,t,n,i){return qE(e,"{z}",i)}function eat(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function DU(e,t,n,i){vU||(e.tilingScheme.tileXYToRectangle(t,n,i,Pu),Pu.west=P.toDegrees(Pu.west),Pu.south=P.toDegrees(Pu.south),Pu.east=P.toDegrees(Pu.east),Pu.north=P.toDegrees(Pu.north),vU=!0)}function tat(e,t,n,i){return DU(e,t,n,i),Pu.west}function nat(e,t,n,i){return DU(e,t,n,i),Pu.south}function iat(e,t,n,i){return DU(e,t,n,i),Pu.east}function oat(e,t,n,i){return DU(e,t,n,i),Pu.north}function IU(e,t,n,i){wU||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,qI),wU=!0)}function rat(e,t,n,i){return IU(e,t,n,i),qI.west}function sat(e,t,n,i){return IU(e,t,n,i),qI.south}function aat(e,t,n,i){return IU(e,t,n,i),qI.east}function cat(e,t,n,i){return IU(e,t,n,i),qI.north}function lat(e,t,n,i){return e.tileWidth}function uat(e,t,n,i){return e.tileHeight}function fat(e,t,n,i,o,r,s){return PU(e,t,n,i,o,r),jE.x}function dat(e,t,n,i,o,r,s){return PU(e,t,n,i,o,r),jE.y}function hat(e,t,n,i,o,r,s){return PU(e,t,n,i,o,r),e.tileWidth-jE.x-1}function mat(e,t,n,i,o,r,s){return PU(e,t,n,i,o,r),e.tileHeight-jE.y-1}var pat=new ae,WE=new d;function PU(e,t,n,i,o,r,s){if(oX)return;sX(e,t,n,i,o,r);let a=WE,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,pat);jE.x=e.tileWidth*(a.x-c.west)/c.width|0,jE.y=e.tileHeight*(c.north-a.y)/c.height|0,oX=!0}function _at(e,t,n,i,o,r,s){return P.toDegrees(o)}function gat(e,t,n,i,o,r,s){return P.toDegrees(r)}function yat(e,t,n,i,o,r,s){return sX(e,t,n,i,o,r),WE.x}function xat(e,t,n,i,o,r,s){return sX(e,t,n,i,o,r),WE.y}var bat=new fe;function sX(e,t,n,i,o,r,s){if(!rX){if(e.tilingScheme.projection instanceof Ri)WE.x=P.toDegrees(o),WE.y=P.toDegrees(r);else{let a=bat;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,WE)}rX=!0}}function Tat(e,t,n,i,o,r,s){return s}var dc=jI;function Xf(e){dc.call(this,e)}Xf._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return Xf._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof lp)return Xf._metadataFailure(e,t);throw o}};Xf.fromUrl=async function(e,t){let n=Ee.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=y(t,y.EMPTY_OBJECT);let r=await Xf._requestMetadata(t,i,o);return new Xf(r)};l(Object.create)&&(Xf.prototype=Object.create(dc.prototype),Xf.prototype.constructor=Xf);function gge(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function yge(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}Xf._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,p=[],g=e.childNodes[0].childNodes;for(let O=0;O<g.length;O++)if(r.test(g.item(O).nodeName))u=g.item(O);else if(a.test(g.item(O).nodeName)){h=g.item(O);let M=g.item(O).childNodes;for(let N=0;N<M.length;N++)s.test(M.item(N).nodeName)&&p.push(M.item(N))}else c.test(g.item(O).nodeName)&&(f=g.item(O));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&Oo.reportError(void 0,o,o.errorEvent,m),new se(m);let x=y(t.fileExtension,u.getAttribute("extension")),b=y(t.tileWidth,parseInt(u.getAttribute("width"),10)),T=y(t.tileHeight,parseInt(u.getAttribute("height"),10)),C=y(t.minimumLevel,parseInt(p[0].getAttribute("order"),10)),A=y(t.maximumLevel,parseInt(p[p.length-1].getAttribute("order"),10)),E=h.getAttribute("profile"),v=t.tilingScheme;if(!l(v))if(E==="geodetic"||E==="global-geodetic")v=new Qi({ellipsoid:t.ellipsoid});else if(E==="mercator"||E==="global-mercator")v=new ms({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${E}.`,l(o)&&Oo.reportError(void 0,o,o.errorEvent,m),new se(m);let D=ae.clone(t.rectangle);if(!l(D)){let O,M,N,_;y(t.flipXY,!1)?(N=new U(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),_=new U(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(N=new U(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),_=new U(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let w=E==="geodetic"||E==="mercator";if(v.projection instanceof Ri||w)O=fe.fromDegrees(N.x,N.y),M=fe.fromDegrees(_.x,_.y);else{let I=v.projection;O=I.unproject(N),M=I.unproject(_)}D=new ae(O.longitude,O.latitude,M.longitude,M.latitude)}return D=gge(D,v),C=yge(v,D,C),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${x}`}),tilingScheme:v,rectangle:D,tileWidth:b,tileHeight:T,minimumLevel:C,maximumLevel:A,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};Xf._metadataFailure=function(e,t){let n=y(e.fileExtension,"png"),i=y(e.tileWidth,256),o=y(e.tileHeight,256),r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new ms({ellipsoid:e.ellipsoid}),a=y(e.rectangle,s.rectangle);a=gge(a,s);let c=yge(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var vb=Xf;function xge(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}xge.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function Cat(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new se(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new se(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new Qi({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new ms({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new se(o)}return!0}function Aat(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),Oo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new se(i)}async function Eat(e,t,n){try{let i=await e.fetchText();Cat(i,t)}catch(i){Aat(i,e,n)}}function Gl(e){e=y(e,{}),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new vt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${Gl.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new me}Object.defineProperties(Gl.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});Gl.fromUrl=async function(e,t,n){n=y(n,{});let i=y(n.path,"/default_map"),o=Ee.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new xge(n);s.channel=t,await Eat(r,s);let a=new Gl(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};Gl.prototype.getTileCredits=function(e,t,n){};Gl.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Hl.loadImage(this,o)};Gl.prototype.pickFeatures=function(e,t,n,i,o){};Gl._logoUrl=void 0;Object.defineProperties(Gl,{logoUrl:{get:function(){return l(Gl._logoUrl)||(Gl._logoUrl=nn("Assets/Images/google_earth_credit.png")),Gl._logoUrl},set:function(e){Gl._logoUrl=e}}});var OU=Gl;var Sat=/\/$/,bge=new vt('&copy; <a href="https://www.mapbox.com/about/maps/">Mapbox</a> &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function YE(e){e=y(e,y.EMPTY_OBJECT);let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ee.createIfNeeded(y(e.url,"https://{s}.tiles.mapbox.com/v4/"));this._mapId=t,this._accessToken=n;let o=y(e.format,"png");/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();Sat.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new vt(s))):s=bge,this._resource=i,this._imageryProvider=new dc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(YE.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});YE.prototype.getTileCredits=function(e,t,n){};YE.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};YE.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};YE._defaultCredit=bge;var RU=YE;function wb(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=y(e.rectangle,ae.MAX_VALUE),n=new Qi({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new me;let i=e.credit;typeof i=="string"&&(i=new vt(i)),this._credit=i;let o=Ee.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(wb.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function vat(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=Oo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return aX(e,n,r);throw l(n)&&(n._hasError=!0),new se(o)}async function aX(e,t,n){try{return await Hl.loadImage(null,e)}catch(i){return vat(e,i,t,n)}}wb.fromUrl=async function(e,t){let n=Ee.createIfNeeded(e),i=await aX(n);t=y(t,y.EMPTY_OBJECT);let o=new wb({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};wb.prototype.getTileCredits=function(e,t,n){};wb.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await aX(this._resource,this);return this._image=o,Oo.reportSuccess(this._errorEvent),o}return this._image};wb.prototype.pickFeatures=function(e,t,n,i,o){};var MU=wb;function wat(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=Dat:e==="xml"?n=Rat:(e==="html"||e==="text")&&(n=Tge)),this.callback=n}function Dat(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new zm;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=fe.fromDegrees(s,a)}t.push(r)}return t}var cX="http://www.mapinfo.com/mxp",Iat="http://www.esri.com/wms",Pat="http://www.opengis.net/wfs",Oat="http://www.opengis.net/gml";function Rat(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===cX)return Mat(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===Iat)return Lat(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===Pat)return Nat(e);if(t.localName==="ServiceExceptionReport")throw new se(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?Fat(e):Bat(e)}function Mat(e){let t=[],i=e.documentElement.getElementsByTagNameNS(cX,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(cX,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),p=f.textContent.trim();s[h]=p}}let c=new zm;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function Lat(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(LU(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(LU(a,i))}}return n}function Nat(e){let t=[],i=e.documentElement.getElementsByTagNameNS(Oat,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};lX(r,s),t.push(LU(r,s))}return t}function Fat(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new se("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};lX(s,a),t.push(LU(s,a))}}return t}function lX(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&lX(o,t)&&(t[o.localName]=o.textContent)}return n}function LU(e,t){let n=new zm;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function Bat(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new zm;return o.data=e,o.description=n.innerHTML,[o]}var kat=/<body>\s*<\/body>/im,Vat=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,Uat=/<title>([\s\S]*)<\/title>/im;function Tge(e){if(kat.test(e)||Vat.test(e))return;let t,n=Uat.exec(e);n&&n.length>1&&(t=n[1]);let i=new zm;return i.name=t,i.description=e,i.data=e,[i]}var XE=wat;function YI(e){e=y(e,y.EMPTY_OBJECT),this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(YI.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});YI.prototype.getFromCache=function(e,t,n,i){let o=Cge(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};YI.prototype.checkApproachingInterval=function(e,t,n,i){let o=Cge(e,t,n),r=this._tilesRequestedForInterval,s=Age(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Ege(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};YI.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=Age(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Ege(this,c,r),a||s.push(c)}}};function Cge(e,t,n){return`${e}-${t}-${n}`}function zat(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function Age(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=$.secondsDifference(c.stop,i),++a):(s=$.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Ege(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=zat(s),c=new rr({throttle:!1,throttleByServer:!0,type:Ts.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var KE=YI;var Hat=[3034,3035,3042,3043,3044],Gat=[4471,4559];function uh(e){if(e=y(e,y.EMPTY_OBJECT),l(e.times)&&!l(e.clock))throw new de("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=y(e.getFeatureInfoUrl,e.url);let t=Ee.createIfNeeded(e.url),n=Ee.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(uh.DefaultParameters,!0),n.setQueryParameters(uh.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(Sge(e.parameters,e.toLowerCase)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(Sge(e.getFeatureInfoParameters,e.toLowerCase));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new KE({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return vge(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=y(e.crs,e.tilingScheme&&e.tilingScheme.projection instanceof Ni?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!Gat.includes(a)||Hat.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=y(e.srs,e.tilingScheme&&e.tilingScheme.projection instanceof Ni?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new dc({url:t,pickFeaturesUrl:n,tilingScheme:y(e.tilingScheme,new Qi({ellipsoid:e.ellipsoid})),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:y(e.getFeatureInfoFormats,uh.DefaultGetFeatureInfoFormats),enablePickFeatures:e.enablePickFeatures})}function vge(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function Wat(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(uh.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});uh.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};uh.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=vge(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};uh.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return Wat(this,e,t,n,i,o,s)};uh.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});uh.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});uh.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new XE("json","application/json")),Object.freeze(new XE("xml","text/xml")),Object.freeze(new XE("text","text/html"))]);function Sge(e,t=!0){if(t){let n={};for(let i in e)e.hasOwnProperty(i)&&(n[i.toLowerCase()]=e[i]);return n}return e}var NU=uh;var jat=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function XI(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=Ee.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(jat),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=y(e.format,"image/jpeg"),this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ms({ellipsoid:e.ellipsoid}),this._tileWidth=y(e.tileWidth,256),this._tileHeight=y(e.tileHeight,256),this._minimumLevel=y(e.minimumLevel,0),this._maximumLevel=e.maximumLevel,this._rectangle=y(e.rectangle,this._tilingScheme.rectangle),this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new KE({clock:e.clock,times:e.times,requestImageFunction:function(h,p,g,m,x){return wge(s,h,p,g,m,x)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new me;let f=e.credit;this._credit=typeof f=="string"?new vt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function wge(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,p;if(!e._useKvp)p={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(p),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=At(g,u)),l(f)&&(g=At(g,f)),p={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(p)}return Hl.loadImage(e,h)}Object.defineProperties(XI.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});XI.prototype.getTileCredits=function(e,t,n){};XI.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=wge(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};XI.prototype.pickFeatures=function(e,t,n,i,o){};var FU=XI;var qat={ARCGIS_MAPSERVER:Qy.fromUrl,BING:async(e,t)=>SU.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,OU.fromUrl(e,n,t)},MAPBOX:(e,t)=>new RU({url:e,...t}),SINGLE_TILE:MU.fromUrl,TMS:vb.fromUrl,URL_TEMPLATE:(e,t)=>new dc({url:e,...t}),WMS:(e,t)=>new NU({url:e,...t}),WMTS:(e,t)=>new FU({url:e,...t})};function Wm(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new me}Object.defineProperties(Wm.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Wm.fromAssetId=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=cf._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Wm._endpointCache[i];l(o)||(o=n.fetchJson(),Wm._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new se(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await vb.fromUrl(new cf(r,n));else{let u=qat[a];if(!l(u))throw new se(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new Wm(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=cf.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Wm.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Wm.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Wm.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Wm._endpointCache={};var Jy=Wm;var Yat={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},e0=Object.freeze(Yat);function Xat(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.style,e0.AERIAL);return Jy.fromAssetId(t)}var t0=Xat;var BU=`uniform sampler2D u_texture;
in vec2 v_textureCoordinates;
void main()
{
out_FragColor = texture(u_texture, v_textureCoordinates);
}
`;var kU=`in vec4 position;
in float webMercatorT;
uniform vec2 u_textureDimensions;
out vec2 v_textureCoordinates;
void main()
{
v_textureCoordinates = vec2(position.x, webMercatorT);
gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0));
}
`;function $E(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=Jn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}$E.createPlaceholder=function(e){let t=new $E(e,0,0,0);return t.addReference(),t.state=Jn.PLACEHOLDER,t};$E.prototype.addReference=function(){++this.referenceCount};$E.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};$E.prototype.processStateMachine=function(e,t,n){this.state===Jn.UNLOADED&&!n&&(this.state=Jn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===Jn.RECEIVED&&(this.state=Jn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===Jn.READY&&t&&!this.texture;(this.state===Jn.TEXTURE_LOADED||i)&&(this.state=Jn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var KI=$E;function uX(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}uX.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};uX.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===Jn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==Jn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==Jn.FAILED&&r.state!==Jn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===Jn.FAILED||i.state===Jn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var $I=uX;function gi(e,t){this._imageryProvider=e,this._readyEvent=new me,this._errorEvent=new me,t=y(t,y.EMPTY_OBJECT),e=y(e,y.EMPTY_OBJECT),this.alpha=y(t.alpha,y(e._defaultAlpha,1)),this.nightAlpha=y(t.nightAlpha,y(e._defaultNightAlpha,1)),this.dayAlpha=y(t.dayAlpha,y(e._defaultDayAlpha,1)),this.brightness=y(t.brightness,y(e._defaultBrightness,gi.DEFAULT_BRIGHTNESS)),this.contrast=y(t.contrast,y(e._defaultContrast,gi.DEFAULT_CONTRAST)),this.hue=y(t.hue,y(e._defaultHue,gi.DEFAULT_HUE)),this.saturation=y(t.saturation,y(e._defaultSaturation,gi.DEFAULT_SATURATION)),this.gamma=y(t.gamma,y(e._defaultGamma,gi.DEFAULT_GAMMA)),this.splitDirection=y(t.splitDirection,gi.DEFAULT_SPLIT),this.minificationFilter=y(t.minificationFilter,y(e._defaultMinificationFilter,gi.DEFAULT_MINIFICATION_FILTER)),this.magnificationFilter=y(t.magnificationFilter,y(e._defaultMagnificationFilter,gi.DEFAULT_MAGNIFICATION_FILTER)),this.show=y(t.show,!0),this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=y(t.rectangle,ae.MAX_VALUE),this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new $I(KI.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=y(t.colorToAlphaThreshold,gi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD),this._marsOptions=y(t.marsOptions,{}),this._initByMars3D&&this._initByMars3D(e,t)}Object.defineProperties(gi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});gi.DEFAULT_BRIGHTNESS=1;gi.DEFAULT_CONTRAST=1;gi.DEFAULT_HUE=0;gi.DEFAULT_SATURATION=1;gi.DEFAULT_GAMMA=1;gi.DEFAULT_SPLIT=Gr.NONE;gi.DEFAULT_MINIFICATION_FILTER=$t.LINEAR;gi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;gi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;gi.fromProviderAsync=function(e,t){let n=new gi(void 0,t);return Jat(n,Promise.resolve(e)),n};gi.fromWorldImagery=function(e){return e=y(e,y.EMPTY_OBJECT),gi.fromProviderAsync(t0({style:e.style}),e)};gi.prototype.isBaseLayer=function(){return this._isBaseLayer};gi.prototype.isDestroyed=function(){return!1};gi.prototype.destroy=function(){return ue(this)};var Pge=new ae,Dge=new ae,fX=new ae,Oge=new ae;gi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};gi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Ni&&e.rectangle.north<Ni.MaximumLatitude&&e.rectangle.south>-Ni.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Pge),a=ae.intersection(e.rectangle,s,Dge);if(!l(a)){if(!this.isBaseLayer())return!1;let w=s,I=e.rectangle;a=Dge,I.south>=w.north?a.north=a.south=w.north:I.north<=w.south?a.north=a.south=w.south:(a.south=Math.max(I.south,w.south),a.north=Math.min(I.north,w.north)),I.west>=w.east?a.west=a.east=w.east:I.east<=w.west?a.west=a.east=w.west:(a.west=Math.max(I.west,w.west),a.east=Math.min(I.east,w.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=Zat(this,f,c);h=Math.max(0,h);let p=o.maximumLevel;if(h>p&&(h=p),l(o.minimumLevel)){let w=o.minimumLevel;h<w&&(h=w)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),x=g.positionToTileXY(ae.southeast(a),h),b=e.rectangle.width/512,T=e.rectangle.height/512,C=g.tileXYToRectangle(m.x,m.y,h);Math.abs(C.south-e.rectangle.north)<T&&m.y<x.y&&++m.y,Math.abs(C.east-e.rectangle.west)<b&&m.x<x.x&&++m.x;let A=g.tileXYToRectangle(x.x,x.y,h);Math.abs(A.north-e.rectangle.south)<T&&x.y>m.y&&--x.y,Math.abs(A.west-e.rectangle.east)<b&&x.x>m.x&&--x.x;let E=ae.clone(e.rectangle,Oge),v=g.tileXYToRectangle(m.x,m.y,h),D=ae.intersection(v,s,fX),R;r?(g.rectangleToNativeRectangle(E,E),g.rectangleToNativeRectangle(v,v),g.rectangleToNativeRectangle(D,D),g.rectangleToNativeRectangle(s,s),R=g.tileXYToNativeRectangle.bind(g),b=E.width/512,T=E.height/512):R=g.tileXYToRectangle.bind(g);let O,M=0,N=1,_;!this.isBaseLayer()&&Math.abs(D.west-E.west)>=b&&(M=Math.min(1,(D.west-E.west)/E.width)),!this.isBaseLayer()&&Math.abs(D.north-E.north)>=T&&(N=Math.max(0,(D.north-E.south)/E.height));let S=N;for(let w=m.x;w<=x.x;w++)if(O=M,v=R(w,m.y,h),D=ae.simpleIntersection(v,s,fX),!!l(D)){M=Math.min(1,(D.east-E.west)/E.width),w===x.x&&(this.isBaseLayer()||Math.abs(D.east-E.east)<b)&&(M=1),N=S;for(let I=m.y;I<=x.y;I++){if(_=N,v=R(w,I,h),D=ae.simpleIntersection(v,s,fX),!l(D))continue;N=Math.max(0,(D.south-E.south)/E.height),I===x.y&&(this.isBaseLayer()||Math.abs(D.south-E.south)<T)&&(N=0);let L=new oe(O,N,M,_),B=this.getImageryFromCache(w,I,h);i.imagery.splice(n,0,new $I(B,L,r)),++n}}return!0};gi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Pge),i=c.rectangleToNativeRectangle(i,Oge)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new oe(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};gi.prototype._requestImagery=function(e){if(l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel)return e.state=Jn.FAILED,e.request=void 0,!1;if(l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return e.state=Jn.FAILED,e.request=void 0,!1;let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=Jn.RECEIVED,e.request=void 0,Oo.reportSuccess(n._requestImageError),n._marsOptions.onAddTileSuccess&&n._marsOptions.onAddTileSuccess(e)}function o(s){if(e.request.state===ei.CANCELLED){e.state=Jn.UNLOADED,e.request=void 0;return}e.state=Jn.FAILED,e.request=void 0;let a=`\u65E0\u6CD5\u83B7\u5F97\u56FE\u5757 x:${e.x},y: ${e.y},z:${e.level}. `;t._resource&&t._resource._last_url&&(a+=t._resource._last_url),n._requestImageError=Oo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r(),n._marsOptions.onAddTileError&&n._marsOptions.onAddTileError(e)}function r(){let s=new rr({throttle:!1,throttleByServer:!0,type:Ts.IMAGERY});e.request=s,e.state=Jn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=Jn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),n._marsOptions.onAddTile&&n._marsOptions.onAddTile(e),a.then?a.then(function(c){i(c)}).catch(function(c){o(c)}):i(a)}r()};gi.prototype._createTextureWebGL=function(e,t){let n=new Zt({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Rt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Rt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?nt.RGBA:nt.RGB,sampler:n})};gi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=Jn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=Jn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Ni?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=Jn.TEXTURE_LOADED};function Ige(e,t,n){return`${e}:${t}:${n}`}gi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===$t.LINEAR&&i===pi.LINEAR&&!nt.isCompressedFormat(t.pixelFormat)&&P.isPowerOfTwo(t.width)&&P.isPowerOfTwo(t.height)){n=$t.LINEAR_MIPMAP_LINEAR;let r=kt.maximumTextureFilterAnisotropy,s=Math.min(r,y(this._maximumAnisotropy,r)),a=Ige(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(_p.NICEST),t.sampler=u}else{let r=Ige(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};gi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=y(n,!0),n&&!(this._imageryProvider.tilingScheme.projection instanceof Ri)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Al({persists:!0,owner:this,preExecute:function(c){$at(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=Jn.READY,t.releaseReference()},canceled:function(){t.state=Jn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=Jn.READY};gi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};gi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};gi.prototype.getImageryFromCache=function(e,t,n,i){let o=Rge(e,t,n),r=this._imageryCache[o];return l(r)||(r=new KI(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};gi.prototype.removeImageryFromCache=function(e){this._marsOptions.onRemoveTile&&this._marsOptions.onRemoveTile(e);let t=Rge(e.x,e.y,e.level);delete this._imageryCache[t]};function Rge(e,t,n){return JSON.stringify([e,t,n])}var VU={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new U,texture:void 0},Kat=Ht.supportsTypedArrays()?new Float32Array(2*64):void 0;function $at(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let b=new Float32Array(2*64*2),T=0;for(let D=0;D<64;++D){let R=D/63;b[T++]=0,b[T++]=R,b[T++]=1,b[T++]=R}let C={position:0,webMercatorT:1},A=hs.getRegularGridIndices(2,64),E=Tt.createIndexBuffer({context:t,typedArray:A,usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT});o.vertexArray=new oi({context:t,attributes:[{index:C.position,vertexBuffer:Tt.createVertexBuffer({context:t,typedArray:b,usage:ke.STATIC_DRAW}),componentsPerAttribute:2},{index:C.webMercatorT,vertexBuffer:Tt.createVertexBuffer({context:t,sizeInBytes:64*2*4,usage:ke.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:E});let v=new Ue({sources:[kU]});o.shaderProgram=Jt.fromCache({context:t,vertexShaderSource:v,fragmentShaderSource:BU,attributeLocations:C}),o.sampler=new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;VU.textureDimensions.x=r,VU.textureDimensions.y=s,VU.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Rt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});P.isPowerOfTwo(r)&&P.isPowerOfTwo(s)&&h.generateMipmap(_p.NICEST);let p=i.south,g=i.north,m=Kat,x=0;for(let b=0;b<64;++b){let T=b/63,C=P.lerp(p,g,T);a=Math.sin(C);let E=(.5*Math.log((1+a)/(1-a))-c)*f;m[x++]=E,m[x++]=E}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=VU,e.vertexArray=o.vertexArray}function Zat(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Ri?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function Qat(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function Jat(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){Qat(e._errorEvent,i)}}var hc=gi;var ect={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},_n=ect;var Mge={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=Mge.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},Kn=Mge;function QE(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new oe}QE.prototype.update=function(e,t,n){this.changedThisFrame&&(Uge(e,t,this.tile,n),this.changedThisFrame=!1)};QE.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};QE.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):lh._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var tct=new bx;QE.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=tct;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),p=c.findTileToNorth(r);Rs(e,n,c,u,s,_n.EAST,!1,a,i),Rs(e,n,c,f,s,_n.NORTH,!1,a,i),Rs(e,n,c,h,s,_n.WEST,!1,a,i),Rs(e,n,c,p,s,_n.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),x=h.findTileToNorth(r),b=h.findTileToSouth(r);Rs(e,n,c,g,s,_n.SOUTHEAST,!1,a,i),Rs(e,n,c,x,s,_n.SOUTHWEST,!1,a,i),Rs(e,n,c,m,s,_n.NORTHEAST,!1,a,i),Rs(e,n,c,b,s,_n.NORTHWEST,!1,a,i),c=a.dequeue()}};function Rs(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||Kn.wasKicked(u._lastSelectionResult)||Kn.originalResult(u._lastSelectionResult)===Kn.CULLED);){if(s)return;let f=u.parent;if(r>=_n.NORTHWEST&&f!==void 0)switch(r){case _n.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case _n.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case _n.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case _n.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===Kn.RENDERED){if(l(u.data.vertexArray))return;nct(e,t,n,u,r,o,a,c);return}if(Kn.originalResult(i._lastSelectionResult)!==Kn.CULLED)switch(r){case _n.WEST:Rs(e,t,n,i.northwestChild,o,r,!0,a,c),Rs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case _n.EAST:Rs(e,t,n,i.southeastChild,o,r,!0,a,c),Rs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case _n.SOUTH:Rs(e,t,n,i.southwestChild,o,r,!0,a,c),Rs(e,t,n,i.southeastChild,o,r,!0,a,c);break;case _n.NORTH:Rs(e,t,n,i.northeastChild,o,r,!0,a,c),Rs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case _n.NORTHWEST:Rs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case _n.NORTHEAST:Rs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case _n.SOUTHWEST:Rs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case _n.SOUTHEAST:Rs(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new de("Invalid edge")}}}function nct(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new QE(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),ict(e,t,n,i,o,a)}function ict(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(Uge(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case _n.WEST:u=s.westMeshes,f=s.westTiles;break;case _n.SOUTH:u=s.southMeshes,f=s.southTiles;break;case _n.EAST:u=s.eastMeshes,f=s.eastTiles;break;case _n.NORTH:u=s.northMeshes,f=s.northTiles;break;case _n.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case _n.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case _n.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case _n.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,p,g,m,x=n.rectangle,b,T=i.rectangle;switch(o){case _n.WEST:for(b=(T.north-T.south)*P.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!P.greaterThan(x.north,m.south,b));++h);for(p=h;p<f.length&&(g=f[p],m=g.rectangle,!P.greaterThanOrEquals(x.south,m.north,b));++p);break;case _n.SOUTH:for(b=(T.east-T.west)*P.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!P.lessThan(x.west,m.east,b));++h);for(p=h;p<f.length&&(g=f[p],m=g.rectangle,!P.lessThanOrEquals(x.east,m.west,b));++p);break;case _n.EAST:for(b=(T.north-T.south)*P.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!P.lessThan(x.south,m.north,b));++h);for(p=h;p<f.length&&(g=f[p],m=g.rectangle,!P.lessThanOrEquals(x.north,m.south,b));++p);break;case _n.NORTH:for(b=(T.east-T.west)*P.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!P.greaterThan(x.east,m.west,b));++h);for(p=h;p<f.length&&(g=f[p],m=g.rectangle,!P.greaterThanOrEquals(x.west,m.east,b));++p);break}p-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,p-h,a),f.splice(h,p-h,n))}var Db=new fe,oct=new fe,ZE=new d,pX=new d,dX=new U,hX=new U,Ou=new U;function qU(){this.height=0,this.encodedNormal=new U}function UU(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,p=0,g=0;l(h)&&(p=h.minimumHeight,g=h.maximumHeight),u=(p+g)*.5}return zge(e,t,n,i,u,c),c}var rct={minimumHeight:0,maximumHeight:0},sct=new d,Lge=new qU,Nge=new qU,Fge=new qU,Bge=new qU,act=typeof Uint8Array<"u"?new Uint8Array(9*9):void 0,cct={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function Uge(e,t,n,i){lh.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=HU(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,Fge),p=HU(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,Lge),g=HU(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,Nge),m=HU(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,Bge);h=UU(r,f,0,1,h,p,m,g,Fge),p=UU(r,f,0,0,p,h,g,m,Lge),g=UU(r,f,1,1,g,p,m,h,Nge),m=UU(r,f,1,1,m,g,h,p,Bge);let x=p.height,b=g.height,T=h.height,C=m.height,A=Math.min(x,b,T,C),E=Math.max(x,b,T,C),v=(A+E)*.5,D,R,O=e.getLevelMaximumGeometricError(n.level),M=f.maximumRadius-O,N=Math.acos(M/f.maximumRadius)*4;if(N*=1.5,s.width>N&&E-A<=O){let w=new fc({width:9,height:9,buffer:act,structure:{heightOffset:E}}),I=cct;I.tilingScheme=n.tilingScheme,I.x=n.x,I.y=n.y,I.level=n.level,I.exaggeration=a,I.exaggerationRelativeHeight=c,r.mesh=w._createMeshSync(I)}else{let w=u,I=ae.center(s,oct);I.height=v;let L=f.cartographicToCartesian(I,sct),B=new el(L,void 0,void 0,void 0,void 0,!0,!0,w,a,c),H=5,V;for(V=r.westMeshes,D=0,R=V.length;D<R;++D)H+=V[D].eastIndicesNorthToSouth.length;for(V=r.southMeshes,D=0,R=V.length;D<R;++D)H+=V[D].northIndicesWestToEast.length;for(V=r.eastMeshes,D=0,R=V.length;D<R;++D)H+=V[D].westIndicesSouthToNorth.length;for(V=r.northMeshes,D=0,R=V.length;D<R;++D)H+=V[D].southIndicesEastToWest.length;let G=rct;G.minimumHeight=A,G.maximumHeight=E;let k=B.stride,W=new Float32Array(H*k),q=0,J=q;q=zU(f,s,B,W,q,0,1,h.height,h.encodedNormal,1,G),q=WU(r,f,B,W,q,r.westTiles,r.westMeshes,_n.EAST,G);let j=q;q=zU(f,s,B,W,q,0,0,p.height,p.encodedNormal,0,G),q=WU(r,f,B,W,q,r.southTiles,r.southMeshes,_n.NORTH,G);let K=q;q=zU(f,s,B,W,q,1,0,g.height,g.encodedNormal,0,G),q=WU(r,f,B,W,q,r.eastTiles,r.eastMeshes,_n.WEST,G);let Q=q;q=zU(f,s,B,W,q,1,1,m.height,m.encodedNormal,1,G),q=WU(r,f,B,W,q,r.northTiles,r.northMeshes,_n.SOUTH,G),A=G.minimumHeight,E=G.maximumHeight;let he=Dn.fromRectangle(s,A,E,n.tilingScheme.ellipsoid),ye=Ni.geodeticLatitudeToMercatorAngle(s.south),re=1/(Ni.geodeticLatitudeToMercatorAngle(s.north)-ye),_e=(Ni.geodeticLatitudeToMercatorAngle(I.latitude)-ye)*re,be=f.geodeticSurfaceNormalCartographic(Db,pX),we=Bn.octEncode(be,dX),De=q;B.encode(W,q*k,he.center,U.fromElements(.5,.5,Ou),v,we,_e,be),++q;let Me=q,Re=Me<256?1:2,rt=(Me-1)*3,Ye=rt*Re,dt=(W.length-Me*k)*Float32Array.BYTES_PER_ELEMENT,Xe;if(dt>=Ye){let Te=Me*k*Float32Array.BYTES_PER_ELEMENT;Xe=Me<256?new Uint8Array(W.buffer,Te,rt):new Uint16Array(W.buffer,Te,rt)}else Xe=Me<256?new Uint8Array(rt):new Uint16Array(rt);W=new Float32Array(W.buffer,0,Me*k);let _t=0;for(D=0;D<Me-2;++D)Xe[_t++]=De,Xe[_t++]=D,Xe[_t++]=D+1;Xe[_t++]=De,Xe[_t++]=D,Xe[_t++]=0;let ft=[];for(D=j;D>=J;--D)ft.push(D);let ht=[];for(D=K;D>=j;--D)ht.push(D);let vn=[];for(D=Q;D>=K;--D)vn.push(D);let tn=[];for(tn.push(0),D=De-1;D>=Q;--D)tn.push(D);r.mesh=new ch(B.center,W,Xe,rt,Me,A,E,ce.fromOrientedBoundingBox(he),pct(e,he.center,s,A,E),B.stride,he,B,ft,ht,vn,tn)}let _=t.context;r._destroyVertexArray(i),r.vertexArray=lh._createVertexArrayForMesh(_,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let S=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let w=o._findAncestorTileWithTerrainData(n);l(w)&&l(w.data.waterMaskTexture)&&(r.waterMaskTexture=w.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,w,r.waterMaskTranslationAndScale))}l(S)&&(--S.referenceCount,S.referenceCount===0&&S.destroy())}function zU(e,t,n,i,o,r,s,a,c,u,f){let h=Db;h.longitude=P.lerp(t.west,t.east,r),h.latitude=P.lerp(t.south,t.north,s),h.height=a;let p=e.cartographicToCartesian(h,ZE),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(p,pX));let m=hX;return m.x=r,m.y=s,n.encode(i,o*n.stride,p,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var jU=new ae;function ZI(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,jU),o.west-=P.TWO_PI,o.east-=P.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,jU),o.west+=P.TWO_PI,o.east+=P.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,p=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(p)<Math.EPSILON5?p=0:Math.abs(p-1)<Math.EPSILON5&&(p=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=p,i.y=g,i}var lct=new U;function mX(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var uct=new U,fct=new d;function dct(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,p=ZI(t,n,f.decodeTextureCoordinates(h,o,Ou),Ou),g=ZI(t,n,f.decodeTextureCoordinates(h,r,hX),hX),m;c?m=(s-p.x)/(g.x-p.x):m=(a-p.y)/(g.y-p.y);let x=f.decodeHeight(h,o),b=f.decodeHeight(h,r),T=n.rectangle;Db.longitude=P.lerp(T.west,T.east,s),Db.latitude=P.lerp(T.south,T.north,a),u.height=Db.height=P.lerp(x,b,m);let C;if(f.hasVertexNormals){let A=f.getOctEncodedNormal(h,o,lct),E=f.getOctEncodedNormal(h,r,uct),v=Bn.octDecode(A.x,A.y,ZE),D=Bn.octDecode(E.x,E.y,fct);C=d.lerp(v,D,m,ZE),d.normalize(C,C),Bn.octEncode(C,u.encodedNormal)}else C=e.geodeticSurfaceNormalCartographic(Db,ZE),Bn.octEncode(C,u.encodedNormal)}function zge(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(Db,ZE);Bn.octEncode(s,r.encodedNormal)}function HU(e,t,n,i,o,r,s,a,c,u,f){if(Vge(e,t,a,s,!1,n,i,f)||Vge(e,t,u,c,!0,n,i,f))return f;let p;if(_X(o,r))return n===0?i===0?p=r.eastIndicesNorthToSouth[0]:p=r.southIndicesEastToWest[0]:i===0?p=r.northIndicesWestToEast[0]:p=r.westIndicesSouthToNorth[0],mX(r,p,n,i,f),f;let g;if(n===0?i===0?g=GU(e.westMeshes,e.westTiles,_n.EAST,e.southMeshes,e.southTiles,_n.NORTH,n,i):g=GU(e.northMeshes,e.northTiles,_n.SOUTH,e.westMeshes,e.westTiles,_n.EAST,n,i):i===0?g=GU(e.southMeshes,e.southTiles,_n.NORTH,e.eastMeshes,e.eastTiles,_n.WEST,n,i):g=GU(e.eastMeshes,e.eastTiles,_n.WEST,e.northMeshes,e.northTiles,_n.SOUTH,n,i),l(g))return zge(e,t,n,i,g,f),f}function GU(e,t,n,i,o,r,s,a){let c=kge(e,t,!1,n,s,a),u=kge(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function WU(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=hct(e,t,n,i,o,r[u],s[u],a,c);return o}function hct(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===_n.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,jU),u.west-=P.TWO_PI,u.east-=P.TWO_PI):a===_n.WEST&&r.x===0&&(u=ae.clone(r.rectangle,jU),u.west+=P.TWO_PI,u.east+=P.TWO_PI);let f=e.tile.rectangle,h,p;o>0&&(n.decodeTextureCoordinates(i,o-1,Ou),h=Ou.x,p=Ou.y);let g,m;switch(a){case _n.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case _n.NORTH:g=s.northIndicesWestToEast,m=!0;break;case _n.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case _n.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let x=r,b=e.tile,T=s.encoding,C=s.vertices,A=n.stride,E,v;T.hasWebMercatorT&&(E=Ni.geodeticLatitudeToMercatorAngle(f.south),v=1/(Ni.geodeticLatitudeToMercatorAngle(f.north)-E));for(let D=0;D<g.length;++D){let R=g[D],O=T.decodeTextureCoordinates(C,R,Ou);ZI(x,b,O,O);let M=O.x,N=O.y,_=m?M:N;if(_<0||_>1||Math.abs(M-h)<P.EPSILON5&&Math.abs(N-p)<P.EPSILON5)continue;let S=Math.abs(M)<P.EPSILON5||Math.abs(M-1)<P.EPSILON5,w=Math.abs(N)<P.EPSILON5||Math.abs(N-1)<P.EPSILON5;if(S&&w)continue;let I=T.decodePosition(C,R,ZE),L=T.decodeHeight(C,R),B;T.hasVertexNormals?B=T.getOctEncodedNormal(C,R,dX):(B=dX,B.x=0,B.y=0);let H=N;if(T.hasWebMercatorT){let G=P.lerp(f.south,f.north,N);H=(Ni.geodeticLatitudeToMercatorAngle(G)-E)*v}let V;n.hasGeodeticSurfaceNormals&&(V=t.geodeticSurfaceNormal(I,pX)),n.encode(i,o*A,I,O,L,B,H,V),c.minimumHeight=Math.min(c.minimumHeight,L),c.maximumHeight=Math.max(c.maximumHeight,L),++o}return o}function kge(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!_X(h,f))continue;let p;switch(i){case _n.WEST:p=f.westIndicesSouthToNorth;break;case _n.SOUTH:p=f.southIndicesEastToWest;break;case _n.EAST:p=f.eastIndicesNorthToSouth;break;case _n.NORTH:p=f.northIndicesWestToEast;break}let g=p[n?0:p.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function _X(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function Vge(e,t,n,i,o,r,s,a){let c,u,f,h,p,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(_X(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,p=c[h],m.encoding.decodeTextureCoordinates(m.vertices,p,Ou);let x=ZI(g,e.tile,Ou,Ou);if(x.x===r&&x.y===s)return mX(m,p,r,s,a),!0;if(h=No(c,u?r:s,function(b,T){m.encoding.decodeTextureCoordinates(m.vertices,b,Ou);let C=ZI(g,e.tile,Ou,Ou);return f?u?C.x-r:C.y-s:u?r-C.x:s-C.y}),h<0){if(h=~h,h>0&&h<c.length)return dct(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return mX(m,c[h],r,s,a),!0}return!1}var mct=[new d,new d,new d,new d];function pct(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=mct;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var QI=QE;function nr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=yn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new me,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(nr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(nr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(nr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(nr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new me,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new z(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0,this._initByMars3D&&this._initByMars3D(e)}Object.defineProperties(nr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=oe.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Es.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){tm.setOwner(e,this,"_clippingPolygons")}}});function _ct(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}nr.prototype.update=function(e){this._imageryLayers._update()};function gct(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}nr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(_ct)})),gct(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)lh._freeVertexArray(t[i]);t.length=0};nr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};nr.prototype.endUpdate=function(e){var s;if(!l(this._renderState)){this._renderState=Ve.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Dc.LESS}}),this._blendRenderState=Ve.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Dc.LESS_OR_EQUAL},blending:fn.ALPHA_BLEND});let a=He(this._renderState,!0);a.cull.enabled=!1,this._disableCullingRenderState=Ve.fromCache(a),a=He(this._blendRenderState,!0),a.cull.enabled=!1,this._disableCullingBlendRenderState=Ve.fromCache(a)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&QI.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(a){a.data.updateExaggeration(a,e,t)});let r=this._tilesToRenderByTextureCount;for(let a=0,c=r.length;a<c;++a){let u=r[a];if(l(u))for(let f=0,h=u.length;f<h;++f){let p=u[f],g=p.data.tileBoundingRegion;qge(this,p,e,!1);let m=(s=this.marsOptions)==null?void 0:s.uplift;if(m&&m.enabled&&m.height!==0&&m.rectangles){for(let x=0;x<m.rectangles.length;x++)if(ae.intersection(g.rectangle,m.rectangles[x])){qge(this,p,e,!0);break}}e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,g.minimumHeight)}}};function Yge(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}nr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)Yge(t[n],e)};nr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};nr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};nr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===Kn.CULLED_BUT_NEEDED,o=n.terrainState),lh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Ar.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,lh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var yct=new ce,Xge=new ae,xct=new ae,bct=new fe;function XU(e,t){if(t.west<t.east)return t;let n=ae.clone(t,xct);return ae.center(e,bct).longitude>0?n.east=P.PI:n.west=-P.PI,n}function Kge(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}nr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=Kge(this,t);if(t.fog.enabled&&!o&&P.fog(i,t.fog.density)>=1)return Ar.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Ar.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=XU(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,Xge);if(!l(f))return Ar.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ne.SCENE3D&&(c=yct,ce.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ne.MORPHING&&l(r.renderedMesh)&&(c=ce.union(s.boundingSphere,c,c))),!l(c))return Ar.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let b=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=b!==jt.INSIDE,b===jt.OUTSIDE)return Ar.NONE}let p=this._clippingPolygons;if(l(p)&&p.enabled){let b=p.computeIntersectionWithBoundingVolume(s);e.isClipped=b!==jt.OUTSIDE}let g,m=a.computeVisibility(c);if(m===jt.OUTSIDE?g=Ar.NONE:m===jt.INTERSECTING?g=Ar.PARTIAL:m===jt.INSIDE&&(g=Ar.FULL),g===Ar.NONE)return g;let x=t.mode===ne.SCENE3D&&t.camera.frustum instanceof an;if(t.mode===ne.SCENE3D&&!x&&l(n)&&!o){let b=r.occludeePointInScaledSpace;return!l(b)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(b,s.minimumHeight)?g:Ar.NONE}return g};nr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Tct=[],Cct=[];nr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Tct;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===po.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],p=h.loadingImagery,g=!l(p)||p.state===Jn.FAILED||p.state===Jn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=Cct;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),p=h._lastSelectionResultFrame===u?h._lastSelectionResult:Kn.NONE;if(p===Kn.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===po.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let x=m[a],b=x.loadingImagery,T=!l(b)||b.state===Jn.FAILED||b.state===Jn.INVALID,C=(x.loadingImagery||x.readyImagery).imageryLayer._layerIndex;if(T&&!i[C])return!1}}else p===Kn.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Act=new d;nr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,Act),a=d.magnitude(s);return a<P.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var Hge=new F,YU=new F,Ect=new oe,Sct=new oe,vct=new oe,wct=new d,Gge=new d,Dct=new d,Ict=new d;nr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var Pct=[new d,new d,new d,new d];function Wge(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Pct;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}nr.prototype.computeDistanceToTile=function(e,t){Oct(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function Oct(e,t,n){var b,T,C;let i=e.data;i===void 0&&(i=e.data=new lh);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new If({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=0,h=(b=t.marsOptions)==null?void 0:b.flat;if(h&&h.enabled&&h.rectangles){for(let A=0;A<h.rectangles.length;A++)if(ae.intersection(e.rectangle,h.rectangles[A])){f=(T=h.rectangles[A]._flatHeight)!=null?T:h.heights[A];break}}let p=(C=t.marsOptions)==null?void 0:C.uplift,g=0;if(p&&p.enabled&&p.height!==0&&p.rectangles){for(let A=0;A<p.rectangles.length;A++)if(ae.intersection(r.rectangle,p.rectangles[A])){g=p.height;break}}let m=i.mesh,x=i.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0)r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight,c=!0;else if(x!==void 0&&x._minimumHeight!==void 0&&x._maximumHeight!==void 0)r.minimumHeight=x._minimumHeight,r.maximumHeight=x._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let E=A.data;if(E!==void 0){let v=E.mesh,D=E.terrainData;if(v!==void 0&&v.minimumHeight!==void 0&&v.maximumHeight!==void 0){r.minimumHeight=v.minimumHeight,r.maximumHeight=v.maximumHeight;break}else if(D!==void 0&&D._minimumHeight!==void 0&&D._maximumHeight!==void 0){r.minimumHeight=D._minimumHeight,r.maximumHeight=D._maximumHeight;break}}A=A.parent}u=A}if(r.maximumHeight+=g,r.minimumHeight-=f,u!==void 0){let A=n.verticalExaggeration,E=n.verticalExaggerationRelativeHeight;if((A!==1||f!==0)&&(c=!1,r.minimumHeight=Rr.getHeight(r.minimumHeight,A,E),r.maximumHeight=Rr.getHeight(r.maximumHeight,A,E)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Dn.clone(m.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=ce.clone(m.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(m.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=Wge(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let D=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||D)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=Wge(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}nr.prototype.isDestroyed=function(){return!1};nr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function Rct(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=y(o.readyImagery,o.loadingImagery),r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?y(o.readyImagery,o.loadingImagery):void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}nr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if(y(g.readyImagery,g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let p=f+h;e._createTileImagerySkeletons(s,n,p)&&(s._loadedCallbacks[e._layerIndex]=Rct(h,e,n),s.state=ba.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=ba.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==Kn.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};nr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};nr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};nr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Mct=new F,Lct=new F;function jge(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=F.multiplyByPoint(i,this.properties.rtc,Gge);return F.setTranslation(i,o,Hge),Hge},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=F.multiplyByPoint(i,this.properties.rtc,Gge);return F.setTranslation(i,r,YU),F.multiply(o,YU,YU),YU},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?F.multiply(e.context.uniformState.view,i.modelMatrix,Mct):F.IDENTITY;return F.inverseTranspose(o,Lct)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},u_mars3dTextureInvertColor:function(){return this.properties.mars3dTextureInvertColor},u_mars3dTextureFilterColor:function(){return this.properties.mars3dTextureFilterColor},u_mars_inverseTileWidth:function(){return this.properties.mars_inverseTileWidth},u_mars_cartographicTileRectangle:function(){return this.properties.mars_cartographicTileRectangle},u_mars_flat_enabled:function(){return this.properties.mars_flat_enabled},u_mars_flat_rectangle:function(){return this.properties.mars_flat_rectangle},u_mars_flat_texture:function(){return l(this.properties.mars_flat_texture)?this.properties.mars_flat_texture:e.context.defaultTexture},u_mars_uplift_enabled:function(){return this.properties.mars_uplift_enabled},u_mars_uplift_hideInsideOrOutside:function(){return this.properties.mars_uplift_hideInsideOrOutside},u_mars_uplift_rectangle:function(){return this.properties.mars_uplift_rectangle},u_mars_uplift_texture:function(){return l(this.properties.mars_uplift_texture)?this.properties.mars_uplift_texture:e.context.defaultTexture},u_mars_clip_enabled:function(){return this.properties.mars_clip_enabled},u_mars_clip_rectangle:function(){return this.properties.mars_clip_rectangle},u_mars_clip_texture:function(){return l(this.properties.mars_clip_texture)?this.properties.mars_clip_texture:e.context.defaultTexture},u_mars_clip_only:function(){return this.properties.mars_clip_only},u_mars_flood_enabled:function(){return this.properties.mars_flood_enabled},u_mars_flood_rectangle:function(){return this.properties.mars_flood_rectangle},u_mars_flood_texture:function(){return l(this.properties.mars_flood_texture)?this.properties.mars_flood_texture:e.context.defaultTexture},u_mars_flood_only:function(){return this.properties.mars_flood_only},properties:{initialColor:new oe(0,0,.5,1),fillHighlightColor:new z(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new U(65e5,9e6),nightFadeDistance:new U(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new F,tileRectangle:new oe,verticalExaggerationAndRelativeHeight:new U(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new U,southMercatorYAndOneOverHeight:new U,waterMask:void 0,waterMaskTranslationAndScale:new oe,minMaxHeight:new U,scaleAndBias:new F,clippingPlanesEdgeColor:z.clone(z.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new oe,frontFaceAlphaByDistance:new oe,backFaceAlphaByDistance:new oe,localizedTranslucencyRectangle:new oe,undergroundColor:z.clone(z.TRANSPARENT),undergroundColorAlphaByDistance:new oe,lambertDiffuseMultiplier:0,vertexShadowDarkness:0,mars3dTextureInvertColor:[],mars3dTextureFilterColor:[],mars_inverseTileWidth:0,mars_cartographicTileRectangle:void 0,mars_flat_enabled:!1,mars_flat_rectangle:new oe,mars_flat_texture:void 0,mars_uplift_enabled:!1,mars_uplift_hideInsideOrOutside:!1,mars_uplift_rectangle:new oe,mars_uplift_texture:void 0,mars_clip_enabled:!1,mars_clip_rectangle:new oe,mars_clip_texture:void 0,mars_clip_only:!1,mars_flood_enabled:!1,mars_flood_rectangle:new oe,mars_flood_texture:void 0,mars_flood_only:!1}};return l(t.materialUniformMap)?At(n,t.materialUniformMap):n}function Nct(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=Fct(e,r,o),i.wireframeVertexArray.mesh=o}}function Fct(e,t,n){let o={indices:n.indices,primitiveType:Ne.TRIANGLES};kn.toWireframe(o);let r=o.indices,s=Tt.createIndexBuffer({context:e,typedArray:r,usage:ke.STATIC_DRAW,indexDatatype:Be.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new oi({context:e,attributes:t._attributes,indexBuffer:s})}var $ge,Zge,KU;(function(){let e=new Dt({geometry:Oh.fromDimensions({dimensions:new d(2,2,2)})}),t=new Dt({geometry:new oy({radius:1})}),n=new F,i,o;function r(s){return new Pn({geometryInstances:s,appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})}$ge=function(s,a){return s===i||(KU(),i=s,n=F.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=Wt.fromColor(a),o=r(e)),o},Zge=function(s,a){return s===i||(KU(),i=s,n=F.fromTranslation(s.center,n),n=F.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=Wt.fromColor(a),o=r(t)),o},KU=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var Bct=new oe(0,0,0,0),kct={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},Vct=z.TRANSPARENT,Uct=new Vt;function qge(e,t,n,i){var Mn,Ro,Wo,Sr,ea,ys,ta,Fe,st,tt,$e,St,Gt,Tn,Mo,So,Tc,Cc,Si,Oi,Sa;let o=t.data;l(o.vertexArray)||(o.fill===void 0&&(o.fill=new QI(t)),o.fill.update(e,n));let r=n.creditDisplay,s=o.terrainData;if(l(s)&&l(s.credits)){let un=s.credits;for(let Ln=0,Hi=un.length;Ln<Hi;++Ln)r.addCreditToNextFrame(un[Ln])}let a=kt.maximumTextureImageUnits,c=o.waterMaskTexture,u=o.waterMaskTranslationAndScale;!l(c)&&l(o.fill)&&(c=o.fill.waterMaskTexture,u=o.fill.waterMaskTranslationAndScale);let f=n.cameraUnderground,h=n.globeTranslucencyState,p=h.translucent,g=h.frontFaceAlphaByDistance,m=h.backFaceAlphaByDistance,x=h.rectangle,b=y(e.undergroundColor,Vct),T=y(e.undergroundColorAlphaByDistance,Uct),C=Kge(e,n)&&n.mode===ne.SCENE3D&&b.alpha>0&&(T.nearValue>0||T.farValue>0),A=e.lambertDiffuseMultiplier,E=e.vertexShadowDarkness,v=e.hasWaterMask&&l(c),D=v&&e.showWaterEffect,R=e.oceanNormalMap,O=D&&l(R),M=e.terrainProvider,N=l(M)&&e.terrainProvider.hasVertexNormals,_=n.fog.enabled&&n.fog.renderable&&!f,S=e.showGroundAtmosphere&&n.mode===ne.SCENE3D,w=yn.castShadows(e.shadows)&&!p,I=yn.receiveShadows(e.shadows)&&!p,L=e.hueShift,B=e.saturationShift,H=e.brightnessShift,V=!(P.equalsEpsilon(L,0,P.EPSILON7)&&P.equalsEpsilon(B,0,P.EPSILON7)&&P.equalsEpsilon(H,0,P.EPSILON7)),G=!1;if(S){let un=d.magnitude(n.camera.positionWC),Ln=e.nightFadeOutDistance;G=un>Ln}v&&--a,O&&--a,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--a,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--a,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--a,--a),a-=h.numberOfTextureUniforms;let k=o.renderedMesh,W=k.center,q=k.encoding,J=o.tileBoundingRegion,j=n.verticalExaggeration,K=n.verticalExaggerationRelativeHeight,Q=(Mn=e.marsOptions)==null?void 0:Mn.uplift;i&&Q&&(K=n.verticalExaggerationRelativeHeight-Q.height/(j-1)),(Wo=(Ro=e.marsOptions)==null?void 0:Ro.uplift)!=null&&Wo.enabled&&--a,(ea=(Sr=e.marsOptions)==null?void 0:Sr.clip)!=null&&ea.enabled&&--a,(ta=(ys=e.marsOptions)==null?void 0:ys.flat)!=null&&ta.enabled&&--a,(st=(Fe=e.marsOptions)==null?void 0:Fe.flood)!=null&&st.enabled&&--a;let he=j!==1,ye=q.hasGeodeticSurfaceNormals,re=Ect,_e=0,be=0,we=0,De=0,Me=!1;if(n.mode!==ne.SCENE3D){let un=n.mapProjection,Ln=un.project(ae.southwest(t.rectangle),Dct),Hi=un.project(ae.northeast(t.rectangle),Ict);if(re.x=Ln.x,re.y=Ln.y,re.z=Hi.x,re.w=Hi.y,n.mode!==ne.MORPHING&&(W=wct,W.x=0,W.y=(re.z+re.x)*.5,W.z=(re.w+re.y)*.5,re.x-=W.y,re.y-=W.z,re.z-=W.y,re.w-=W.z),n.mode===ne.SCENE2D&&q.quantization===xa.BITS12){let We=1/(Math.pow(2,12)-1)*.5,cl=(re.z-re.x)*We,vo=(re.w-re.y)*We;re.x-=cl,re.y-=vo,re.z+=cl,re.w+=vo}un instanceof Ni&&(_e=t.rectangle.south,be=t.rectangle.north,we=Ni.geodeticLatitudeToMercatorAngle(_e),De=1/(Ni.geodeticLatitudeToMercatorAngle(be)-we),Me=!0)}let Re=kct;Re.frameState=n,Re.surfaceTile=o,Re.hasWaterMask=v,Re.showReflectiveOcean=D,Re.showOceanWaves=O,Re.enableLighting=e.enableLighting,Re.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Re.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Re.showGroundAtmosphere=S,Re.atmosphereLightIntensity=e.atmosphereLightIntensity,Re.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Re.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Re.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Re.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Re.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Re.perFragmentGroundAtmosphere=G,Re.hasVertexNormals=N,Re.useWebMercatorProjection=Me,Re.clippedByBoundaries=o.clippedByBoundaries,Re.hasGeodeticSurfaceNormals=ye,Re.hasExaggeration=he;let rt=o.imagery,Ye=0,dt=rt.length,Xe=e.showSkirts&&!f&&!p,_t=e.backFaceCulling&&!f&&!p,ft=_t?e._renderState:e._disableCullingRenderState,ht=_t?e._blendRenderState:e._disableCullingBlendRenderState,vn=ft,tn=e._firstPassInitialColor,Te=n.context;if(l(e._debug.boundingSphereTile)||KU(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let un=e._drawCommands.length;for(let Ln=0;Ln<un;++Ln)e._uniformMaps[Ln]=jge(n,e)}do{let un=0,Ln,Hi;if(e._drawCommands.length<=e._usedDrawCommands?(Ln=new Qe,Ln.owner=t,Ln.cull=!1,Ln.boundingVolume=new ce,Ln.orientedBoundingBox=void 0,Hi=jge(n,e),e._drawCommands.push(Ln),e._uniformMaps.push(Hi)):(Ln=e._drawCommands[e._usedDrawCommands],Hi=e._uniformMaps[e._usedDrawCommands]),Ln.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let fd=J.boundingVolume,Eh=J.boundingSphere;l(fd)?$ge(fd,z.RED).update(n):l(Eh)&&Zge(Eh,z.RED).update(n)}let We=Hi.properties;oe.clone(tn,We.initialColor),We.oceanNormalMap=R,We.lightingFadeDistance.x=e.lightingFadeOutDistance,We.lightingFadeDistance.y=e.lightingFadeInDistance,We.nightFadeDistance.x=e.nightFadeOutDistance,We.nightFadeDistance.y=e.nightFadeInDistance,We.atmosphereLightIntensity=e.atmosphereLightIntensity,We.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,We.atmosphereMieCoefficient=e.atmosphereMieCoefficient,We.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,We.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,We.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,We.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let cl=f?m:g,vo=f?g:m;l(cl)&&(oe.fromElements(cl.near,cl.nearValue,cl.far,cl.farValue,We.frontFaceAlphaByDistance),oe.fromElements(vo.near,vo.nearValue,vo.far,vo.farValue,We.backFaceAlphaByDistance)),oe.fromElements(T.near,T.nearValue,T.far,T.farValue,We.undergroundColorAlphaByDistance),z.clone(b,We.undergroundColor),We.lambertDiffuseMultiplier=A,We.vertexShadowDarkness=E;let ld=!l(o.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;ld&&z.clone(e.fillHighlightColor,We.fillHighlightColor),We.verticalExaggerationAndRelativeHeight.x=j,We.verticalExaggerationAndRelativeHeight.y=K,We.center3D=k.center,d.clone(W,We.rtc),oe.clone(re,We.tileRectangle),We.southAndNorthLatitude.x=_e,We.southAndNorthLatitude.y=be,We.southMercatorYAndOneOverHeight.x=we,We.southMercatorYAndOneOverHeight.y=De;let Gu=Sct,Ah=XU(t.rectangle,e.cartographicLimitRectangle),Wu=vct,V_=XU(t.rectangle,x);d.fromElements(L,B,H,We.hsbShift);let oo=t.rectangle,ju=1/oo.width,ud=1/oo.height;Gu.x=(Ah.west-oo.west)*ju,Gu.y=(Ah.south-oo.south)*ud,Gu.z=(Ah.east-oo.west)*ju,Gu.w=(Ah.north-oo.south)*ud,oe.clone(Gu,We.localizedCartographicLimitRectangle),Wu.x=(V_.west-oo.west)*ju,Wu.y=(V_.south-oo.south)*ud,Wu.z=(V_.east-oo.west)*ju,Wu.w=(V_.north-oo.south)*ud,We.mars_inverseTileWidth=ju,We.mars_cartographicTileRectangle=new U(oo.west,oo.south);let ll=(tt=e.marsOptions)==null?void 0:tt.clip;ll?(ll.rectangle?We.mars_clip_rectangle=new oe(ll.rectangle.west,ll.rectangle.south,ll.rectangle.width,ll.rectangle.height):We.mars_clip_rectangle=new oe,We.mars_clip_texture=ll.texture,We.mars_clip_only=ll.onlySelf,We.mars_clip_enabled=ll.enabled):(We.mars_clip_enabled=!1,We.mars_clip_rectangle=new oe,We.mars_clip_texture=void 0,We.mars_clip_only=!1);let Ls=($e=e.marsOptions)==null?void 0:$e.flood;Ls?(Ls.rectangle?We.mars_flood_rectangle=new oe(Ls.rectangle.west,Ls.rectangle.south,Ls.rectangle.width,Ls.rectangle.height):We.mars_flood_rectangle=new oe,We.mars_flood_texture=Ls.texture,We.mars_flood_only=Ls.onlySelf,We.mars_flood_enabled=Ls.enabled):(We.mars_flood_enabled=!1,We.mars_flood_rectangle=new oe,We.mars_flood_texture=void 0);let vr=(St=e.marsOptions)==null?void 0:St.flat;vr?(vr.rectangle?We.mars_flat_rectangle=new oe(vr.rectangle.west,vr.rectangle.south,vr.rectangle.width,vr.rectangle.height):We.mars_flat_rectangle=new oe,We.mars_flat_texture=vr.texture,We.mars_flat_enabled=vr.enabled):(We.mars_flat_enabled=!1,We.mars_flat_rectangle=new oe,We.mars_flat_texture=void 0);let Yt=(Gt=e.marsOptions)==null?void 0:Gt.uplift;Yt?(Yt.rectangle?We.mars_uplift_rectangle=new oe(Yt.rectangle.west,Yt.rectangle.south,Yt.rectangle.width,Yt.rectangle.height):We.mars_uplift_rectangle=new oe,We.mars_uplift_texture=Yt.texture,We.mars_uplift_enabled=(!Yt.showUp||Yt.enabled&&Yt.height!==0)&&l(Yt.rectangles)&&Yt.rectangles.length>0,We.mars_uplift_hideInsideOrOutside=!i):(We.mars_uplift_enabled=!1,We.mars_uplift_rectangle=new oe,We.mars_uplift_texture=void 0,We.mars_uplift_hideInsideOrOutside=!1),oe.clone(Wu,We.localizedTranslucencyRectangle);let Ce=_&&P.fog(t._distance,n.fog.density)>P.EPSILON3;V=V&&(Ce||S);let gt=!1,cn=!1,wo=!1,xs=!1,ns=!1,na=!1,Ua=!1,rp=!1,Ns=!1,fT=!1,dT=!1,ZG=!1;for(;un<a&&Ye<dt;){let fd=rt[Ye],Eh=fd.readyImagery;if(++Ye,!l(Eh)||Eh.imageryLayer.alpha===0)continue;let mEe=fd.useWebMercatorT?Eh.textureWebMercator:Eh.texture,wr=Eh.imageryLayer;l(fd.textureTranslationAndScale)||(fd.textureTranslationAndScale=wr._calculateTextureTranslationAndScale(t,fd)),We.dayTextures[un]=mEe,We.dayTextureTranslationAndScale[un]=fd.textureTranslationAndScale,We.dayTextureTexCoordsRectangle[un]=fd.textureCoordinateRectangle,We.dayTextureUseWebMercatorT[un]=fd.useWebMercatorT,We.dayTextureAlpha[un]=wr.alpha,na=na||We.dayTextureAlpha[un]!==1,We.dayTextureNightAlpha[un]=wr.nightAlpha,Ua=Ua||We.dayTextureNightAlpha[un]!==1,We.dayTextureDayAlpha[un]=wr.dayAlpha,Ua=Ua||We.dayTextureDayAlpha[un]!==1,We.dayTextureBrightness[un]=wr.brightness,gt=gt||We.dayTextureBrightness[un]!==hc.DEFAULT_BRIGHTNESS,We.dayTextureContrast[un]=wr.contrast,cn=cn||We.dayTextureContrast[un]!==hc.DEFAULT_CONTRAST,We.dayTextureHue[un]=wr.hue,wo=wo||We.dayTextureHue[un]!==hc.DEFAULT_HUE,We.dayTextureSaturation[un]=wr.saturation,xs=xs||We.dayTextureSaturation[un]!==hc.DEFAULT_SATURATION,We.dayTextureOneOverGamma[un]=1/wr.gamma,ns=ns||We.dayTextureOneOverGamma[un]!==1/hc.DEFAULT_GAMMA,We.dayTextureSplit[un]=wr.splitDirection,rp=rp||We.dayTextureSplit[un]!==0,dT=dT||!!wr.invertColor,We.mars3dTextureInvertColor[un]=!!wr.invertColor,ZG=ZG||!!wr.filterColor,wr.filterColor?We.mars3dTextureFilterColor[un]=new d(wr.filterColor.red,wr.filterColor.green,wr.filterColor.blue):We.mars3dTextureFilterColor[un]=new d(1,1,1);let O0=We.dayTextureCutoutRectangles[un];if(l(O0)||(O0=We.dayTextureCutoutRectangles[un]=new oe),oe.clone(oe.ZERO,O0),l(wr.cutoutRectangle)){let qu=XU(oo,wr.cutoutRectangle),ZS=ae.simpleIntersection(qu,oo,Xge);Ns=l(ZS)||Ns,O0.x=(qu.west-oo.west)*ju,O0.y=(qu.south-oo.south)*ud,O0.z=(qu.east-oo.west)*ju,O0.w=(qu.north-oo.south)*ud}let R0=We.colorsToAlpha[un];l(R0)||(R0=We.colorsToAlpha[un]=new oe);let lZ=l(wr.colorToAlpha)&&wr.colorToAlphaThreshold>0;if(fT=fT||lZ,lZ){let qu=wr.colorToAlpha;R0.x=qu.red,R0.y=qu.green,R0.z=qu.blue,R0.w=wr.colorToAlphaThreshold}else R0.w=-1;if(l(Eh.credits)){let qu=Eh.credits;for(let ZS=0,pEe=qu.length;ZS<pEe;++ZS)r.addCreditToNextFrame(qu[ZS])}++un}We.dayTextures.length=un,We.waterMask=c,oe.clone(u,We.waterMaskTranslationAndScale),We.minMaxHeight.x=q.minimumHeight,We.minMaxHeight.y=q.maximumHeight,F.clone(q.matrix,We.scaleAndBias);let $S=e._clippingPlanes,cZ=l($S)&&$S.enabled&&t.isClipped;cZ&&(We.clippingPlanesEdgeColor=z.clone($S.edgeColor,We.clippingPlanesEdgeColor),We.clippingPlanesEdgeWidth=$S.edgeWidth);let QG=e._clippingPolygons,dEe=l(QG)&&QG.enabled&&t.isClipped;Re.numberOfDayTextures=un,Re.applyBrightness=gt,Re.applyContrast=cn,Re.applyHue=wo,Re.applySaturation=xs,Re.applyGamma=ns,Re.applyAlpha=na,Re.applyDayNightAlpha=Ua,Re.applySplit=rp,Re.enableFog=Ce,Re.enableClippingPlanes=cZ,Re.clippingPlanes=$S,Re.enableClippingPolygons=dEe,Re.clippingPolygons=QG,Re.hasImageryLayerCutout=Ns,Re.colorCorrect=V,Re.highlightFillTile=ld,Re.colorToAlpha=fT,Re.showUndergroundColor=C,Re.translucent=p,Re.marsOptions={invertColor:dT,filterColor:ZG,enableUplift:(Mo=(Tn=e==null?void 0:e._marsOptions)==null?void 0:Tn.uplift)==null?void 0:Mo.enabled,enableFlat:(Tc=(So=e==null?void 0:e._marsOptions)==null?void 0:So.flat)==null?void 0:Tc.enabled,enableClip:(Si=(Cc=e==null?void 0:e._marsOptions)==null?void 0:Cc.clip)==null?void 0:Si.enabled,enableFlood:(Sa=(Oi=e==null?void 0:e._marsOptions)==null?void 0:Oi.flood)==null?void 0:Sa.enabled};let JG=o.renderedMesh.indices.length;Xe||(JG=o.renderedMesh.indexCountWithoutSkirts),Ln.shaderProgram=e._surfaceShaderSet.getShaderProgram(Re),Ln.castShadows=w,Ln.receiveShadows=I,Ln.renderState=vn,Ln.primitiveType=Ne.TRIANGLES,Ln.vertexArray=o.vertexArray||o.fill.vertexArray,Ln.count=JG,Ln.uniformMap=Hi,Ln.pass=ve.GLOBE,e._debug.wireframe&&(Nct(Te,e,t),l(o.wireframeVertexArray)&&(Ln.vertexArray=o.wireframeVertexArray,Ln.primitiveType=Ne.LINES,Ln.count=JG*2));let sp=Ln.boundingVolume,hEe=Ln.orientedBoundingBox;n.mode!==ne.SCENE3D?(ce.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,J.minimumHeight,J.maximumHeight,sp),d.fromElements(sp.center.z,sp.center.x,sp.center.y,sp.center),n.mode===ne.MORPHING&&(sp=ce.union(J.boundingSphere,sp,sp))):(Ln.boundingVolume=ce.clone(J.boundingSphere,sp),Ln.orientedBoundingBox=Dn.clone(J.boundingVolume,hEe)),Ln.dirty=!0,p&&h.updateDerivedCommands(Ln,n),Yge(Ln,n),vn=ht,tn=Bct}while(Ye<dt)}var $U=nr;function Qge(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(Qge.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=Vt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=Vt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var ZU=Qge;function ps(){this._layers=[],this.layerAdded=new me,this.layerRemoved=new me,this.layerMoved=new me,this.layerShownOrHidden=new me}Object.defineProperties(ps.prototype,{length:{get:function(){return this._layers.length}}});ps.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};ps.prototype.addImageryProvider=function(e,t){let n=new hc(e);return this.add(n,t),n};ps.prototype.remove=function(e,t){t=y(t,!0);let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};ps.prototype.removeAll=function(e){e=y(e,!0);let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};ps.prototype.contains=function(e){return this.indexOf(e)!==-1};ps.prototype.indexOf=function(e){return this._layers.indexOf(e)};ps.prototype.get=function(e){return this._layers[e]};function QU(e,t){return e.indexOf(t)}function Jge(e,t,n){let i=e._layers;if(t=P.clamp(t,0,i.length-1),n=P.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}ps.prototype.raise=function(e){let t=QU(this._layers,e);Jge(this,t,t+1)};ps.prototype.lower=function(e){let t=QU(this._layers,e);Jge(this,t,t-1)};ps.prototype.raiseToTop=function(e){let t=QU(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};ps.prototype.lowerToBottom=function(e){let t=QU(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var zct=new ae;function gX(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=zct,p=1/1024;h.west=P.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-p),h.east=P.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+p),h.south=P.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-p),h.north=P.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+p),ae.contains(h,t)&&i(u)}}ps.pickImageryHelper=gX;ps.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(gX(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};ps.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(gX(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let a=s.imageryLayer.imageryProvider;for(let u=0;u<r.length;u++)if(r[u]===s.imageryLayer)return;let c=a.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let p=u[h];p.imageryLayer=f,l(p.position)||(p.position=i),a.push(p)}}return a})};ps.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};ps.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};ps.prototype.isDestroyed=function(){return!1};ps.prototype.destroy=function(){return this.removeAll(!0),ue(this)};ps.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var JU=ps;function eye(e){this._ellipsoid=new hy(e.ellipsoid,d.ZERO)}Object.defineProperties(eye.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var ez=eye;function nl(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=Kn.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this.state=ba.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}nl.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new nl({tilingScheme:e,x:s,y:r,level:0});return i};nl.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(nl.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new nl({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new nl({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new nl({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new nl({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<ba.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});nl.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};nl.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};nl.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};nl.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};nl.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};nl.prototype.freeResources=function(){this.state=ba.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),tz(this._southwestChild),this._southwestChild=void 0,tz(this._southeastChild),this._southeastChild=void 0,tz(this._northwestChild),this._northwestChild=void 0,tz(this._northeastChild),this._northeastChild=void 0};function tz(e){l(e)&&e.freeResources()}var nz=nl;function iz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}iz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};iz.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),tye(this,t)),t=i}};function tye(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}iz.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&tye(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var oz=iz;function Kf(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new oz,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=y(e.maximumScreenSpaceError,2),this.tileCacheSize=y(e.tileCacheSize,100),this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new ez({ellipsoid:n}),this._tileLoadProgressEvent=new me,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(Kf.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});Kf.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function Hct(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,iye(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}Kf.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==ba.START&&e(t),t=t.replacementNext};Kf.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};Kf.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};Kf.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function iye(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}Kf.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(Hct(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),iye(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};Kf.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),qct(this,e),nlt(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function Gct(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=me.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}Kf.prototype.endFrame=function(e){!e.passes.render||e.mode===ne.MORPHING||(Qct(this,e),tlt(this,e),Gct(this,e))};Kf.prototype.isDestroyed=function(){return!1};Kf.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var eP,nye=new fe;function Wct(e,t){let n=ae.center(e.rectangle,nye),i=n.longitude-eP.longitude,o=n.latitude-eP.latitude;n=ae.center(t.rectangle,nye);let r=n.longitude-eP.longitude,s=n.latitude-eP.latitude;return i*i+o*o-(r*r+s*s)}var jct=new d,JI=[];function qct(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let x=r.tilingScheme;if(l(x)){let b=r.tilingScheme;e._levelZeroTiles=nz.createLevelZeroTiles(b);let T=e._levelZeroTiles.length;if(JI.length<T)for(JI=new Array(T),o=0;o<T;++o)JI[o]===void 0&&(JI[o]=new tP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;eP=t.camera.positionCartographic,a.sort(Wct);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,p;if(u.length>0||f.length>0){for(o=0,p=a.length;o<p;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=F.getTranslation(g.transform,jct);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,p=a.length;o<p;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?Ba(e,s,r,t,c,!1,JI[o]):(A_(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function A_(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function tP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function oye(){this.southwest=new tP,this.southeast=new tP,this.northwest=new tP,this.northeast=new tP}oye.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var bX=new Array(31);for(let e=0;e<bX.length;++e)bX[e]=new oye;function Yct(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=$ct(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,p=n._lastSelectionResultFrame===h?n._lastSelectionResult:Kn.NONE,g=e.tileProvider;if(s||i){let m=Kn.originalResult(p)===Kn.RENDERED,x=Kn.originalResult(p)===Kn.CULLED||p===Kn.NONE,b=n.state===ba.DONE,T=m||x||b;if(T||l(g.canRenderWithoutLosingDetail)&&(T=g.canRenderWithoutLosingDetail(n)),T){s&&A_(e,e._tileLoadQueueMedium,n,t),rz(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===Kn.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=Kn.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&A_(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){rz(e,n),A_(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===Kn.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=Kn.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=Kn.REFINED;let x=e._tilesToRender.length,b=e._tileLoadQueueLow.length,T=e._tileLoadQueueMedium.length,C=e._tileLoadQueueHigh.length,A=e._tileToUpdateHeights.length;if(Xct(e,a,c,u,f,t,i,o),x!==e._tilesToRender.length){let E=o.allAreRenderable,v=o.anyWereRenderedLastFrame,D=o.notYetRenderableCount,R=!1;if(!E&&!v){let O=e._tilesToRender;for(let N=x;N<O.length;++N){let _=O[N];for(;_!==void 0&&_._lastSelectionResult!==Kn.KICKED&&_!==n;)_._lastSelectionResult=Kn.kick(_._lastSelectionResult),_=_.parent}e._tilesToRender.length=x,e._tileToUpdateHeights.length=A,rz(e,n),n._lastSelectionResult=Kn.RENDERED;let M=p===Kn.RENDERED;!M&&D>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=b,e._tileLoadQueueMedium.length=T,e._tileLoadQueueHigh.length=C,A_(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,R=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=M,M||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!R&&A_(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=Kn.RENDERED,rz(e,n),A_(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===Kn.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function Xct(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=bX[t.level],p=h.southwest,g=h.southeast,m=h.northwest,x=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(Ba(e,t,u,r,f,s,p),Ba(e,n,u,r,f,s,g),Ba(e,i,u,r,f,s,m),Ba(e,o,u,r,f,s,x)):(Ba(e,i,u,r,f,s,m),Ba(e,t,u,r,f,s,p),Ba(e,o,u,r,f,s,x),Ba(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(Ba(e,n,u,r,f,s,g),Ba(e,t,u,r,f,s,p),Ba(e,o,u,r,f,s,x),Ba(e,i,u,r,f,s,m)):(Ba(e,o,u,r,f,s,x),Ba(e,i,u,r,f,s,m),Ba(e,n,u,r,f,s,g),Ba(e,t,u,r,f,s,p)),h.combine(a)}function Kct(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function Ba(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Ar.NONE)return Yct(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,Kct(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&A_(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:Kn.NONE;c!==Kn.CULLED_BUT_NEEDED&&c!==Kn.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=Kn.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(A_(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=Kn.CULLED):t._lastSelectionResult=Kn.CULLED;t._lastSelectionResultFrame=i.frameNumber}function $ct(e,t,n){if(t.mode===ne.SCENE2D||t.camera.frustum instanceof an||t.camera.frustum instanceof qr)return Zct(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=P.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function Zct(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ne.SCENE2D&&(h-=P.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function rz(e,t){e._tilesToRender.push(t)}function Qct(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Ai()+e._loadQueueTimeSlice,s=e._tileProvider,a=yX(e,t,s,r,n,!1);a=yX(e,t,s,r,i,a),yX(e,t,s,r,o,a)}function Jct(e,t){return e._loadPriority-t._loadPriority}function yX(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(Jct);for(let s=0,a=o.length;s<a&&(Ai()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var JE=new pn,xX=new fe,n0=new d,elt=[];function tlt(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=elt;n.length=0;let i=e._tileToUpdateHeights,o=Ai(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let x=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:Kn.NONE;(x===Kn.RENDERED||x===Kn.CULLED_BUT_NEEDED)&&n.push(h),i.shift(),e._lastTileIndex=0;continue}let p=h.customData,g=p.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let x=p[f],b=h.data.terrainData,T=l(b)&&b.wasCreatedByUpsampling();if(h.level>x.level&&!T){if(l(x.positionOnEllipsoidSurface)||(x.positionOnEllipsoidSurface=d.fromRadians(x.positionCartographic.longitude,x.positionCartographic.latitude,0,u)),a===ne.SCENE3D){let A=u.geodeticSurfaceNormal(x.positionOnEllipsoidSurface,JE.direction),E=u.getSurfaceNormalIntersectionWithZAxis(x.positionOnEllipsoidSurface,11500,JE.origin);if(!l(E)){let v=0;l(h.data.tileBoundingRegion)&&(v=h.data.tileBoundingRegion.minimumHeight);let D=Math.min(v,-11500),R=d.multiplyByScalar(A,Math.abs(D)+1,n0);d.subtract(x.positionOnEllipsoidSurface,R,JE.origin)}}else fe.clone(x.positionCartographic,xX),xX.height=-11500,c.project(xX,n0),d.fromElements(n0.z,n0.x,n0.y,n0),d.clone(n0,JE.origin),d.clone(d.UNIT_X,JE.direction);let C=h.data.pick(JE,a,c,!1,n0);l(C)&&(l(x.callback)&&x.callback(C),x.level=h.level)}if(Ai()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function nlt(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var sz=Kf;function fh(e){e=y(e,ee.default);let t=new zE({ellipsoid:e}),n=new JU;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new TU,this._material=void 0,this._surface=new sz({tileProvider:new $U({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new me,this._undergroundColor=z.clone(z.BLACK),this._undergroundColorAlphaByDistance=new Vt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new ZU,CX(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new Ee({url:nn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=ee.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=P.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=P.PI*e.minimumRadius,this.nightFadeOutDistance=P.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*P.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=yn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(fh.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&CX(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,CX(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=z.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=Vt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function CX(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[nm,zI];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(xU),e._surfaceShaderSet.baseVertexShaderSource=new Ue({sources:[nm,zI,bU],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new Ue({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function ilt(e){return function(t,n){let i=ce.distanceSquaredTo(t.pickBoundingSphere,e),o=ce.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var olt=[],rlt={start:0,stop:0};fh.prototype.pickWorldCoordinates=function(e,t,n,i){n=y(n,!0);let o=t.mode,r=t.mapProjection,s=olt;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let p=u.data;if(!l(p))continue;let g=p.pickBoundingSphere;if(o!==ne.SCENE3D)p.pickBoundingSphere=g=ce.fromRectangleWithHeights2D(u.rectangle,r,p.tileBoundingRegion.minimumHeight,p.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(p.renderedMesh))ce.clone(p.tileBoundingRegion.boundingSphere,g);else continue;let m=ti.raySphere(e,g,rlt);l(m)&&s.push(p)}s.sort(ilt(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var slt=new fe;fh.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ne.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,slt);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var alt=new d,rye=new d,clt=new fe,llt=new pn;function TX(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}fh.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=TX(n._southwestChild,e)||TX(n._southeastChild,e)||TX(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,alt),u=llt,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(y(g,0),-11500),x=d.multiplyByScalar(f,Math.abs(m)+1,rye);d.subtract(c,x,u.origin)}let p=n.data.pick(u,void 0,s,!1,rye);if(l(p))return a.cartesianToCartographic(p,clt).height};fh.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};fh.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Rt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ne.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};fh.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};fh.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};fh.prototype.isDestroyed=function(){return!1};fh.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var az=fh;function ult(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var cz=ult;var xye={},flt=32.184,dlt=2451545,sye=-.0529921,aye=-.1059842,cye=13.0120009,lye=13.3407154,uye=.9856003,fye=26.4057084,dye=13.064993,hye=.3287146,mye=1.7484877,pye=-.1589763,_ye=.0036096,gye=.1643573,yye=12.9590088,AX=new $;xye.ComputeMoon=function(e,t){l(e)||(e=$.now()),AX=$.addSeconds(e,flt,AX);let n=$.totalDays(AX)-dlt,i=n/Xn.DAYS_PER_JULIAN_CENTURY,o=(125.045+sye*n)*P.RADIANS_PER_DEGREE,r=(250.089+aye*n)*P.RADIANS_PER_DEGREE,s=(260.008+cye*n)*P.RADIANS_PER_DEGREE,a=(176.625+lye*n)*P.RADIANS_PER_DEGREE,c=(357.529+uye*n)*P.RADIANS_PER_DEGREE,u=(311.589+fye*n)*P.RADIANS_PER_DEGREE,f=(134.963+dye*n)*P.RADIANS_PER_DEGREE,h=(276.617+hye*n)*P.RADIANS_PER_DEGREE,p=(34.226+mye*n)*P.RADIANS_PER_DEGREE,g=(15.134+pye*n)*P.RADIANS_PER_DEGREE,m=(119.743+_ye*n)*P.RADIANS_PER_DEGREE,x=(239.961+gye*n)*P.RADIANS_PER_DEGREE,b=(25.053+yye*n)*P.RADIANS_PER_DEGREE,T=Math.sin(o),C=Math.sin(r),A=Math.sin(s),E=Math.sin(a),v=Math.sin(c),D=Math.sin(u),R=Math.sin(f),O=Math.sin(h),M=Math.sin(p),N=Math.sin(g),_=Math.sin(m),S=Math.sin(x),w=Math.sin(b),I=Math.cos(o),L=Math.cos(r),B=Math.cos(s),H=Math.cos(a),V=Math.cos(c),G=Math.cos(u),k=Math.cos(f),W=Math.cos(h),q=Math.cos(p),J=Math.cos(g),j=Math.cos(m),K=Math.cos(x),Q=Math.cos(b),he=(269.9949+.0031*i-3.8787*T-.1204*C+.07*A-.0172*E+.0072*D-.0052*N+.0043*w)*P.RADIANS_PER_DEGREE,ye=(66.5392+.013*i+1.5419*I+.0239*L-.0278*B+.0068*H-.0029*G+9e-4*k+8e-4*J-9e-4*Q)*P.RADIANS_PER_DEGREE,re=(38.3213+13.17635815*n-14e-13*n*n+3.561*T+.1208*C-.0642*A+.0158*E+.0252*v-.0066*D-.0047*R-.0046*O+.0028*M+.0052*N+.004*_+.0019*S-.0044*w)*P.RADIANS_PER_DEGREE,_e=(13.17635815-14e-13*(2*n)+3.561*I*sye+.1208*L*aye-.0642*B*cye+.0158*H*lye+.0252*V*uye-.0066*G*fye-.0047*k*dye-.0046*W*hye+.0028*q*mye+.0052*J*pye+.004*j*_ye+.0019*K*gye-.0044*Q*yye)/86400*P.RADIANS_PER_DEGREE;return l(t)||(t=new cz),t.rightAscension=he,t.declination=ye,t.rotation=re,t.rotationRate=_e,t};var lz=xye;function bye(e){(!l(e)||typeof e!="function")&&(e=lz.ComputeMoon),this._computeFunction=e}var hlt=new d,mlt=new d,plt=new d;function _lt(e,t,n){let i=hlt;i.x=Math.cos(e+P.PI_OVER_TWO),i.y=Math.sin(e+P.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=plt;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,mlt);return l(n)||(n=new Z),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var glt=new Z,ylt=new Le;bye.prototype.evaluate=function(e,t){l(e)||(e=$.now());let n=this._computeFunction(e),i=_lt(n.rightAscension,n.declination,t),o=P.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,ylt),s=Z.fromQuaternion(Le.conjugate(r,r),glt);return Z.multiply(s,i,i)};var uz=bye;var nP=`uniform vec3 u_radii;
uniform vec3 u_oneOverEllipsoidRadiiSquared;
in vec3 v_positionEC;
vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side)
{
vec3 positionEC = czm_pointAlongRay(ray, intersection);
vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz;
vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared));
vec3 sphericalNormal = normalize(positionMC / u_radii);
vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates
vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates
vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal);
vec3 positionToEyeEC = -positionEC;
czm_materialInput materialInput;
materialInput.s = st.s;
materialInput.st = st;
materialInput.str = (positionMC + u_radii) / u_radii;
materialInput.normalEC = normalEC;
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);
materialInput.positionToEyeEC = positionToEyeEC;
czm_material material = czm_getMaterial(materialInput);
#ifdef ONLY_SUN_LIGHTING
return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC);
#else
return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
#endif
}
void main()
{
// PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii
// in the vertex shader. Only when it is larger than some constant, march along the ray.
// Otherwise perform one intersection test which will be the common case.
// Test if the ray intersects a sphere with the ellipsoid's maximum radius.
// For very oblate ellipsoids, using the ellipsoid's radii for an intersection test
// may cause false negatives. This will discard fragments before marching the ray forward.
float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5;
vec3 direction = normalize(v_positionEC);
vec3 ellipsoidCenter = czm_modelView[3].xyz;
float t1 = -1.0;
float t2 = -1.0;
float b = -2.0 * dot(direction, ellipsoidCenter);
float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius;
float discriminant = b * b - 4.0 * c;
if (discriminant >= 0.0) {
t1 = (-b - sqrt(discriminant)) * 0.5;
t2 = (-b + sqrt(discriminant)) * 0.5;
}
if (t1 < 0.0 && t2 < 0.0) {
discard;
}
float t = min(t1, t2);
if (t < 0.0) {
t = 0.0;
}
// March ray forward to intersection with larger sphere and find
czm_ray ray = czm_ray(t * direction, direction);
vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z);
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii);
if (czm_isEmpty(intersection))
{
discard;
}
// If the viewer is outside, compute outsideFaceColor, with normals facing outward.
vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0);
// If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward.
vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0);
out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a);
out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a);
#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
t = (intersection.start != 0.0) ? intersection.start : intersection.stop;
vec3 positionEC = czm_pointAlongRay(ray, t);
vec4 positionCC = czm_projection * vec4(positionEC, 1.0);
#ifdef LOG_DEPTH
czm_writeLogDepth(1.0 + positionCC.w);
#else
float z = positionCC.z / positionCC.w;
float n = czm_depthRange.near;
float f = czm_depthRange.far;
gl_FragDepth = (z * (f - n) + f + n) * 0.5;
#endif
#endif
}
`;var iP=`in vec3 position;
uniform vec3 u_radii;
out vec3 v_positionEC;
void main()
{
// In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates.
// Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry,
// but doing it here allows us to change the radii without rewriting the vertex data, and
// allows all ellipsoids to reuse the same vertex data.
vec4 p = vec4(u_radii * position, 1.0);
v_positionEC = (czm_modelView * p).xyz; // position in eye coordinates
gl_Position = czm_modelViewProjection * p; // position in clip coordinates
// With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums
// and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the
// ellipsoid (does not write depth) that was rendered in the farther frustum.
//
// Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates
// artifacts since some fragments can be alpha blended twice. This is solved by only rendering
// the ellipsoid in the closest frustum to the viewer.
gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far);
czm_vertexLogDepth();
}
`;var EX={position:0};function fz(e){e=y(e,y.EMPTY_OBJECT),this.center=d.clone(y(e.center,d.ZERO)),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new ce,this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=new F,this._computedModelMatrix=new F,this.show=y(e.show,!0),this.material=y(e.material,Zi.fromType(Zi.ColorType)),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=y(e.debugShowBoundingVolume,!1),this.onlySunLighting=y(e.onlySunLighting,!1),this._onlySunLighting=!1,this._depthTestEnabled=y(e.depthTestEnabled,!0),this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new Qe({owner:y(e._owner,this)}),this._pickCommand=new Qe({owner:y(e._owner,this),pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function xlt(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=Ya.createGeometry(Ya.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Ie.POSITION_ONLY}));return t=oi.fromGeometry({context:e,geometry:n,attributeLocations:EX,bufferUsage:ke.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}fz.prototype.update=function(e){if(!this.show||e.mode!==ne.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ve.fromCache({cull:{enabled:!0,face:xi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?fn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=xlt(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let x=this._oneOverEllipsoidRadiiSquared;x.x=1/(r.x*r.x),x.y=1/(r.y*r.y),x.z=1/(r.z*r.z),o=!0}(!F.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(F.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),F.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),ce.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,p;(s||a||i||u)&&(h=new Ue({sources:[iP]}),p=new Ue({sources:[this.material.shaderSource,nP]}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._sp=Jt.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:EX}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=At(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?ve.TRANSLUCENT:ve.OPAQUE,g.push(f)),m.pick){let x=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new Ue({sources:[iP]}),p=new Ue({sources:[this.material.shaderSource,nP],pickColorQualifier:"uniform"}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._pickSP=Jt.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:EX}),x.vertexArray=this._va,x.renderState=this._rs,x.shaderProgram=this._pickSP,x.uniformMap=At(At(this._uniforms,this._pickUniforms),this.material._uniforms),x.executeInClosestFrustum=n),x.boundingVolume=this._boundingSphere,x.modelMatrix=this._computedModelMatrix,x.pass=n?ve.TRANSLUCENT:ve.OPAQUE,g.push(x)}};fz.prototype.isDestroyed=function(){return!1};fz.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var dz=fz;function oP(e){e=y(e,y.EMPTY_OBJECT);let t=e.textureUrl;l(t)||(t=nn("Assets/Textures/moonSmall.jpg")),this.show=y(e.show,!0),this.textureUrl=t,this._ellipsoid=y(e.ellipsoid,ee.MOON),this.onlySunLighting=y(e.onlySunLighting,!0),this._ellipsoidPrimitive=new dz({radii:this.ellipsoid.radii,material:Zi.fromType(Zi.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new uz}Object.defineProperties(oP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var hz=new Z,blt=new Z,Tlt=new d,mz=[];oP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(Mt.computeIcrfToFixedMatrix(n,hz))||Mt.computeTemeToPseudoFixedMatrix(n,hz);let i=this._axes.evaluate(n,blt);Z.transpose(i,i),Z.multiply(hz,i,i);let o=Eb.computeMoonPositionInEarthInertialFrame(n,Tlt);Z.multiplyByVector(hz,o,o),F.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=mz,mz.length=0,t.update(e),e.commandList=r,mz.length===1?mz[0]:void 0};oP.prototype.isDestroyed=function(){return!1};oP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var pz=oP;var SX=[],vX=[];function Clt(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=SX,u=vX,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let p=i;p<=r;++p){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[p]=g,++f):h<a&&(e[p]=m,++h)}}function wX(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);wX(e,t,n,i,r),wX(e,t,n,r+1,o),Clt(e,t,n,i,r,o)}function Alt(e,t,n){let i=e.length,o=Math.ceil(i*.5);SX.length=o,vX.length=o,wX(e,t,n,0,i-1),SX.length=0,vX.length=0}var i0=Alt;function mc(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var _z=new d;Object.defineProperties(mc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,_z),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,_z);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,_z),_z)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});mc.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new mc(e,t)};var Cye=new d;mc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,Cye),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var Elt=new d;mc.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,Elt),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Cye),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Slt=new d;mc.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Ar.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Slt),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Ar.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Ar.FULL:Ar.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Ar.PARTIAL:Ar.FULL))}}return Ar.NONE};var gz=new d;mc.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,gz),gz),c=-d.dot(a,o),u=mc._anyRotationVector(o,a,c),f=mc._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=mc._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let p=r/f;return d.add(o,d.multiplyByScalar(a,p,gz),gz)};var vlt=[];mc.computeOccludeePointFromRectangle=function(e,t){t=y(t,ee.default);let n=ae.subsample(e,t,0,vlt),i=ce.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return mc.computeOccludeePoint(new ce(o,t.minimumRadius),i.center,n)};var wlt=new d;mc._anyRotationVector=function(e,t,n){let i=d.abs(t,wlt),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var Dlt=new d;mc._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,Dlt);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>P.EPSILON13)return d.normalize(s,new d)}return o};var DX=new d,Ilt=new d,yz=new d,Tye=new d;mc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,DX),s=d.clone(e.center,Ilt),a=e.radius,c=d.subtract(s,r,yz),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,p=Math.sqrt(h),m=1/Math.sqrt(u),b=p*m*p;c=d.normalize(c,c);let T=d.add(r,d.multiplyByScalar(c,b,Tye),Tye),C=Math.sqrt(h-b*b),A=this._rotationVector(s,t,n,r,i),E=d.fromElements(A.x*A.x*c.x+(A.x*A.y-A.z)*c.y+(A.x*A.z+A.y)*c.z,(A.x*A.y+A.z)*c.x+A.y*A.y*c.y+(A.y*A.z-A.x)*c.z,(A.x*A.z-A.y)*c.x+(A.y*A.z+A.x)*c.y+A.z*A.z*c.z,DX);E=d.normalize(E,E);let v=d.multiplyByScalar(E,C,DX);A=d.normalize(d.subtract(d.add(T,v,yz),s,yz),yz);let D=d.dot(t,A);A=d.normalize(d.subtract(d.subtract(T,v,A),s,A),A);let R=d.dot(t,A);return D<R?D:R};var xz=mc;function jm(e){e=y(e,y.EMPTY_OBJECT),this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=y(e.near,1),this._near=this.near,this.far=y(e.far,5e8),this._far=this.far,this._cullingVolume=new As,this._perspectiveMatrix=new F,this._infinitePerspective=new F}function IX(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=F.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=F.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(jm.prototype,{projectionMatrix:{get:function(){return IX(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return IX(this),this._infinitePerspective}}});var Plt=new d,Olt=new d,Rlt=new d,Mlt=new d;jm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Plt),h=Olt;d.multiplyByScalar(t,c,h),d.add(e,h,h);let p=Rlt;d.multiplyByScalar(t,u,p),d.add(e,p,p);let g=Mlt;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new oe),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new oe),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new oe),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new oe),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new oe),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new oe),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,p),this._cullingVolume};jm.prototype.getPixelDimensions=function(e,t,n,i,o){IX(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};jm.prototype.clone=function(e){return l(e)||(e=new jm),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};jm.prototype.equals=function(e){return l(e)&&e instanceof jm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};jm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof jm&&P.equalsEpsilon(this.right,e.right,t,n)&&P.equalsEpsilon(this.left,e.left,t,n)&&P.equalsEpsilon(this.top,e.top,t,n)&&P.equalsEpsilon(this.bottom,e.bottom,t,n)&&P.equalsEpsilon(this.near,e.near,t,n)&&P.equalsEpsilon(this.far,e.far,t,n)};var Wl=jm;function jl(e){e=y(e,y.EMPTY_OBJECT),this._offCenterFrustum=new Wl,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=y(e.near,1),this._near=this.near,this.far=y(e.far,5e8),this._far=this.far,this.xOffset=y(e.xOffset,0),this._xOffset=this.xOffset,this.yOffset=y(e.yOffset,0),this._yOffset=this.yOffset}jl.packedLength=6;jl.pack=function(e,t,n){return n=y(n,0),t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};jl.unpack=function(e,t,n){return t=y(t,0),l(n)||(n=new jl),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function dh(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(jl.prototype,{projectionMatrix:{get:function(){return dh(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return dh(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return dh(this),this._fovy}},sseDenominator:{get:function(){return dh(this),this._sseDenominator}},offCenterFrustum:{get:function(){return dh(this),this._offCenterFrustum}}});jl.prototype.computeCullingVolume=function(e,t,n){return dh(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};jl.prototype.getPixelDimensions=function(e,t,n,i,o){return dh(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};jl.prototype.clone=function(e){return l(e)||(e=new jl),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};jl.prototype.equals=function(e){return!l(e)||!(e instanceof jl)?!1:(dh(this),dh(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};jl.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof jl)?!1:(dh(this),dh(e),P.equalsEpsilon(this.fov,e.fov,t,n)&&P.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Pi=jl;var bz=`in vec2 v_textureCoordinates;
const float M_PI = 3.141592653589793;
float vdcRadicalInverse(int i)
{
float r;
float base = 2.0;
float value = 0.0;
float invBase = 1.0 / base;
float invBi = invBase;
for (int x = 0; x < 100; x++)
{
if (i <= 0)
{
break;
}
r = mod(float(i), base);
value += r * invBi;
invBi *= invBase;
i = int(float(i) * invBase);
}
return value;
}
vec2 hammersley2D(int i, int N)
{
return vec2(float(i) / float(N), vdcRadicalInverse(i));
}
vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N)
{
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
float phi = 2.0 * M_PI * xi.x;
float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y));
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
vec3 tangentX = normalize(cross(upVector, N));
vec3 tangentY = cross(N, tangentX);
return tangentX * H.x + tangentY * H.y + N * H.z;
}
/**
* Estimate the geometric self-shadowing of the microfacets in a surface,
* using the Smith Joint GGX visibility function.
* Note: Vis = G / (4 * NdotL * NdotV)
* see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3
* see Real-Time Rendering. Page 331 to 336.
* see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg)
*
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
* @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source.
* @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera.
*/
float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV)
{
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0
if (GGX > 0.0)
{
return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0
}
return 0.0;
}
vec2 integrateBrdf(float roughness, float NdotV)
{
vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV);
float A = 0.0;
float B = 0.0;
const int NumSamples = 1024;
float alphaRoughness = roughness * roughness;
for (int i = 0; i < NumSamples; i++)
{
vec2 xi = hammersley2D(i, NumSamples);
vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0));
vec3 L = 2.0 * dot(V, H) * H - V;
float NdotL = clamp(L.z, 0.0, 1.0);
float NdotH = clamp(H.z, 0.0, 1.0);
float VdotH = clamp(dot(V, H), 0.0, 1.0);
if (NdotL > 0.0)
{
float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV);
float G_Vis = 4.0 * G * VdotH * NdotL / NdotH;
float Fc = pow(1.0 - VdotH, 5.0);
A += (1.0 - Fc) * G_Vis;
B += Fc * G_Vis;
}
}
return vec2(A, B) / float(NumSamples);
}
void main()
{
out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0);
}
`;function rP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(rP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function Llt(e,t,n){let i=t.createViewportQuadCommand(bz,{framebuffer:n,renderState:Ve.fromCache({viewport:new je(0,0,256,256)})});e._drawCommand=i}rP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Rt({context:t,width:256,height:256,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,sampler:Zt.NEAREST});this._colorTexture=n;let i=new Wr({context:t,colorTextures:[n],destroyAttachments:!1});Llt(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};rP.prototype.isDestroyed=function(){return!1};rP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var Tz=rP;var vye={};function Nlt(e,t,n){let i,o,r;if(e instanceof Pi){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof Wl)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Flt=new d,Aye=new d;function wye(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let p=(f-o)/a;return P.lerp(e,-P.PI_OVER_TWO,p)}let h=(f-r)/c;return P.lerp(-P.PI_OVER_TWO,t,1-h)}}return function(o){return P.lerp(e,t,o)}}function OX(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,p=d.subtract(a,c,Flt),g=d.magnitude(d.multiplyByScalar(u,d.dot(p,u),Aye)),m=d.magnitude(d.multiplyByScalar(f,d.dot(p,f),Aye));r=Math.min(Nlt(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let p=h*(f-u)+u;return-Math.pow(p,8)/1e6+r}}return function(a){return P.lerp(n,i,a)}}function sP(e,t){return P.equalsEpsilon(e,P.TWO_PI,P.EPSILON11)&&(e=0),t>e+Math.PI?e+=P.TWO_PI:t<e-Math.PI&&(e-=P.TWO_PI),e}var Dye=new d;function Blt(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,Dye),f=c.pitch,h=sP(c.heading,i),p=sP(c.roll,r),g=OX(c,n,u.z,n.z,s),m=wye(f,o,g,a);function x(b){let T=b.time/t;c.setView({orientation:{heading:P.lerp(h,i,T),pitch:m(T),roll:P.lerp(p,r,T)}}),U.lerp(u,n,T,c.position),c.position.z=g(T)}return x}function klt(e,t){e.longitude<t.longitude?e.longitude+=P.TWO_PI:t.longitude+=P.TWO_PI}function Vlt(e,t){let n=e.longitude-t.longitude;n<-P.PI?e.longitude+=P.TWO_PI:n>P.PI&&(t.longitude+=P.TWO_PI)}var Ult=new fe,zlt=new fe;function Hlt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,p=e.mapProjection.ellipsoid,g=fe.clone(f.positionCartographic,Ult),m=f.pitch,x=sP(f.heading,i),b=sP(f.roll,r),T=p.cartesianToCartographic(n,zlt);g.longitude=P.zeroToTwoPi(g.longitude),T.longitude=P.zeroToTwoPi(T.longitude);let C=!1;if(l(a)){let D=P.zeroToTwoPi(a),R=Math.min(g.longitude,T.longitude),O=Math.max(g.longitude,T.longitude),M=D>=R&&D<=O;if(l(c)){let N=Math.abs(g.longitude-T.longitude),_=P.TWO_PI-N;(M?N:_)<(M?_:N)*c&&!M&&(C=!0)}else M||(C=!0)}C?klt(g,T):Vlt(g,T);let A=OX(f,n,g.height,T.height,s),E=wye(m,o,A,u);function v(){let D=g.longitude,R=T.longitude,O=g.latitude,M=T.latitude;return function(_){let S=_.time/t,w=d.fromRadians(P.lerp(D,R,S),P.lerp(O,M,S),A(S),p);f.setView({destination:w,orientation:{heading:P.lerp(x,i,S),pitch:E(S),roll:P.lerp(b,r,S)}})}}return v()}function Glt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,Dye),u=sP(a.heading,i),f=a.frustum.right-a.frustum.left,h=OX(a,n,f,n.z,s);function p(g){let m=g.time/t;a.setView({orientation:{heading:P.lerp(u,i,m)}}),U.lerp(c,n,m,a.position);let x=h(m),b=a.frustum,T=b.top/b.right,C=(x-(b.right-b.left))*.5;b.right+=C,b.left-=C,b.top=T*b.right,b.bottom=-b.top}return p}var Eye=new fe,Wlt=new d;function PX(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function Sye(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}vye.createTween=function(e,t){t=y(t,y.EMPTY_OBJECT);let n=t.destination,i=e.mode;if(i===ne.MORPHING)return PX();let o=y(t.convert,!0),r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ne.SCENE3D&&(s.cartesianToCartographic(n,Eye),n=r.project(Eye,Wlt));let p=e.camera,g=t.endTransform;l(g)&&p._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(p.position,n)/1e6)+2,m=Math.min(m,3));let x=y(t.heading,0),b=y(t.pitch,-P.PI_OVER_TWO),T=y(t.roll,0),C=e.screenSpaceCameraController;C.enableInputs=!1;let A=Sye(C,t.complete),E=Sye(C,t.cancel),v=p.frustum,D=e.mode===ne.SCENE2D;if(D=D&&U.equalsEpsilon(p.position,n,P.EPSILON6),D=D&&P.equalsEpsilon(Math.max(v.right-v.left,v.top-v.bottom),n.z,P.EPSILON6),D=D||e.mode!==ne.SCENE2D&&d.equalsEpsilon(n,p.position,P.EPSILON10),D=D&&P.equalsEpsilon(P.negativePiToPi(x),P.negativePiToPi(p.heading),P.EPSILON10)&&P.equalsEpsilon(P.negativePiToPi(b),P.negativePiToPi(p.pitch),P.EPSILON10)&&P.equalsEpsilon(P.negativePiToPi(T),P.negativePiToPi(p.roll),P.EPSILON10),D)return PX(A,E);let R=new Array(4);if(R[ne.SCENE2D]=Glt,R[ne.SCENE3D]=Hlt,R[ne.COLUMBUS_VIEW]=Blt,m<=0)return PX(function(){R[i](e,1,n,x,b,T,a,c,u,f)({time:1}),typeof A=="function"&&A()},E);let O=R[i](e,m,n,x,b,T,a,c,u,f);if(!l(h)){let M=p.positionCartographic.height,N=i===ne.SCENE3D?s.cartesianToCartographic(n).height:n.z;M>N&&M>11500?h=Jr.CUBIC_OUT:h=Jr.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:O,complete:A,cancel:E}};var Cz=vye;var jlt={ROTATE:0,INFINITE_SCROLL:1},Ru=Object.freeze(jlt);function Qt(e){this._scene=e,this._transform=F.clone(F.IDENTITY),this._invTransform=F.clone(F.IDENTITY),this._actualTransform=F.clone(F.IDENTITY),this._actualInvTransform=F.clone(F.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new fe,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new Pi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=P.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new me,this._moveEnd=new me,this._changed=new me,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new F,this._invViewMatrix=new F,Fye(this),this._mode=ne.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new fe(Math.PI,P.PI_OVER_TWO)),this._max2Dfrustum=void 0,Xye(this,Qt.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*Qt.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}Qt.TRANSFORM_2D=new F(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);Qt.TRANSFORM_2D_INVERSE=F.inverseTransformation(Qt.TRANSFORM_2D,new F);Qt.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);Qt.DEFAULT_VIEW_FACTOR=.5;Qt.DEFAULT_OFFSET=new Jd(0,-P.PI_OVER_FOUR,0);function Fye(e){F.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),F.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),F.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function qlt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Ai()):e.timeSinceMoved=Math.max(Ai()-e._lastMovedTimestamp,0)/1e3}}Qt.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ne.SCENE2D};Qt.prototype._updateCameraChanged=function(){let e=this;if(qlt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%P.TWO_PI;i=i>P.PI?P.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%P.TWO_PI;s=s>P.PI?P.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ne.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let p=e.position,g=e._changedPosition,m=e.frustum,x=e._changedFrustum,b=p.x+m.left,T=p.x+m.right,C=g.x+x.left,A=g.x+x.right,E=p.y+m.bottom,v=p.y+m.top,D=g.y+x.bottom,R=g.y+x.top,O=Math.max(b,C),M=Math.min(T,A),N=Math.max(E,D),_=Math.min(v,R),S;if(O>=M||N>=v)S=1;else{let w=x;b<C&&T>A&&E<D&&v>R&&(w=m),S=1-(M-O)*(_-N)/((w.right-w.left)*(w.top-w.bottom))}S>t&&(e._changed.raiseEvent(S),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=P.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function Ylt(e){Mt.basisTo2D(e._projection,e._transform,e._actualTransform)}var Xlt=new fe,Klt=new d,Az=new d,$lt=new oe,Zlt=new oe,Qlt=new oe,Jlt=new oe,eut=new oe;function tut(e){let t=e._projection,n=t.ellipsoid,i=F.getColumn(e._transform,3,$lt),o=n.cartesianToCartographic(i,Xlt),r=t.project(o,Klt),s=Zlt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=oe.clone(oe.UNIT_X,eut),c=oe.add(F.getColumn(e._transform,0,Az),i,Az);n.cartesianToCartographic(c,o),t.project(o,r);let u=Qlt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=Jlt;if(d.magnitudeSquared(u)>P.EPSILON10)d.cross(a,u,f);else{let h=oe.add(F.getColumn(e._transform,1,Az),i,Az);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<P.EPSILON10&&(oe.clone(oe.UNIT_Y,u),oe.clone(oe.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),F.setColumn(e._actualTransform,0,u,e._actualTransform),F.setColumn(e._actualTransform,1,f,e._actualTransform),F.setColumn(e._actualTransform,2,a,e._actualTransform),F.setColumn(e._actualTransform,3,s,e._actualTransform)}var RX=new d;function _c(e){let t=e._mode,n=!1,i=0;t===ne.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let p=e._transformChanged||e._modeChanged;e._transformChanged=!1,p&&(F.inverseTransformation(e._transform,e._invTransform),e._mode===ne.COLUMBUS_VIEW||e._mode===ne.SCENE2D?F.equals(F.IDENTITY,e._transform)?F.clone(Qt.TRANSFORM_2D,e._actualTransform):e._mode===ne.COLUMBUS_VIEW?Ylt(e):tut(e):F.clone(e._transform,e._actualTransform),F.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||p)if(e._positionWC=F.multiplyByPoint(g,o,e._positionWC),t===ne.SCENE3D||t===ne.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=RX;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ne.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,RX));if(Math.abs(1-m)>P.EPSILON2){let x=1/d.magnitudeSquared(c),b=d.dot(c,s)*x,T=d.multiplyByScalar(s,b,RX);c=d.normalize(d.subtract(c,T,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||p)&&(e._directionWC=F.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||p)&&(e._upWC=F.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||p)&&(e._rightWC=F.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||p)&&Fye(e)}function Bye(e,t){let n;return P.equalsEpsilon(Math.abs(e.z),1,P.EPSILON3)?n=Math.atan2(t.y,t.x)-P.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-P.PI_OVER_TWO,P.TWO_PI-P.zeroToTwoPi(n)}function kye(e){return P.PI_OVER_TWO-P.acosClamped(e.z)}function Vye(e,t,n){let i=0;return P.equalsEpsilon(Math.abs(e.z),1,P.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=P.zeroToTwoPi(i+P.TWO_PI)),i}var vz=new F,wz=new F;Object.defineProperties(Qt.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return _c(this),this._invTransform}},viewMatrix:{get:function(){return _c(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return _c(this),this._invViewMatrix}},positionCartographic:{get:function(){return _c(this),this._positionCartographic}},positionWC:{get:function(){return _c(this),this._positionWC}},directionWC:{get:function(){return _c(this),this._directionWC}},upWC:{get:function(){return _c(this),this._upWC}},rightWC:{get:function(){return _c(this),this._rightWC}},heading:{get:function(){if(this._mode!==ne.MORPHING){let e=this._projection.ellipsoid,t=F.clone(this._transform,vz),n=Mt.eastNorthUpToFixedFrame(this.positionWC,e,wz);this._setTransform(n);let i=Bye(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ne.MORPHING){let e=this._projection.ellipsoid,t=F.clone(this._transform,vz),n=Mt.eastNorthUpToFixedFrame(this.positionWC,e,wz);this._setTransform(n);let i=kye(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ne.MORPHING){let e=this._projection.ellipsoid,t=F.clone(this._transform,vz),n=Mt.eastNorthUpToFixedFrame(this.positionWC,e,wz);this._setTransform(n);let i=Vye(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});Qt.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ne.MORPHING,t=this._mode===ne.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ne.SCENE2D&&Gye(this,this.position)};var nut=new d,iut=new d,out=new d;Qt.prototype._setTransform=function(e){let t=d.clone(this.positionWC,nut),n=d.clone(this.upWC,iut),i=d.clone(this.directionWC,out);F.clone(e,this._transform),this._transformChanged=!0,_c(this);let o=this._actualInvTransform;F.multiplyByPoint(o,t,this.position),F.multiplyByPointAsVector(o,i,this.direction),F.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),_c(this)};var rut=new U,sut=new pn,aut=new d,cut=new d;function Uye(e){if(!F.equals(F.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=rut;i.x=t.drawingBufferWidth/2,i.y=t.drawingBufferHeight/2;let o;if(l(n)){let a=e.getPickRay(i,sut);o=n.pickWorldCoordinates(a,t,!0,aut)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,cut));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}Qt.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof an&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=Uye(this)))};var Dz=new d,BX=new F,lut=new F,kX=new Le,VX=new Z,zye=new fe;function uut(e,t,n){let i=F.clone(e.transform,BX),o=Mt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,lut);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-P.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,kX),s=Z.fromQuaternion(r,VX);Z.getColumn(s,0,e.direction),Z.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function fut(e,t,n,i){let o=F.clone(e.transform,BX);if(e._setTransform(F.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,zye);t=a.project(c,Dz)}d.clone(t,e.position)}n.heading=n.heading-P.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,kX),s=Z.fromQuaternion(r,VX);Z.getColumn(s,0,e.direction),Z.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function dut(e,t,n,i){let o=F.clone(e.transform,BX);if(e._setTransform(F.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,zye);t=c.project(u,Dz)}U.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===Ru.ROTATE){n.heading=n.heading-P.PI_OVER_TWO,n.pitch=-P.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,kX),s=Z.fromQuaternion(r,VX);Z.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var hut=new d,mut=new d,put=new d;function Hye(e,t,n,i){let o=d.clone(n.direction,hut),r=d.clone(n.up,mut);if(e._scene.mode===ne.SCENE3D){let a=e._projection.ellipsoid,c=Mt.eastNorthUpToFixedFrame(t,a,vz),u=F.inverseTransformation(c,wz);F.multiplyByPointAsVector(u,o,o),F.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,put);return i.heading=Bye(o,r),i.pitch=kye(o),i.roll=Vye(o,r,s),i}var FX={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},eS=new Wa;Qt.prototype.setView=function(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.orientation,y.EMPTY_OBJECT),n=this._mode;if(n===ne.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=y(e.convert,!0),o=y(e.destination,d.clone(this.positionWC,Dz));l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,Dz),i=!1),l(t.direction)&&(t=Hye(this,o,t,FX.orientation)),eS.heading=y(t.heading,0),eS.pitch=y(t.pitch,-P.PI_OVER_TWO),eS.roll=y(t.roll,0),n===ne.SCENE3D?uut(this,o,eS):n===ne.SCENE2D?dut(this,o,eS,i):fut(this,o,eS,i)};var _ut=new d;Qt.prototype.flyHome=function(e){let t=this._mode;if(t===ne.MORPHING&&this._scene.completeMorph(),t===ne.SCENE2D)this.flyTo({destination:Qt.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:F.IDENTITY});else if(t===ne.SCENE3D){let n=this.getRectangleCameraCoordinates(Qt.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*Qt.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:F.IDENTITY})}else if(t===ne.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,_ut).z),roll:0},endTransform:F.IDENTITY,convert:!1})}};Qt.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new oe),_c(this),F.multiplyByVector(this._actualInvTransform,e,t)};Qt.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),_c(this),F.multiplyByPoint(this._actualInvTransform,e,t)};Qt.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),_c(this),F.multiplyByPointAsVector(this._actualInvTransform,e,t)};Qt.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new oe),_c(this),F.multiplyByVector(this._actualTransform,e,t)};Qt.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),_c(this),F.multiplyByPoint(this._actualTransform,e,t)};Qt.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),_c(this),F.multiplyByPointAsVector(this._actualTransform,e,t)};function Gye(e,t){let n=e._scene.mapMode2D===Ru.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var Iye=new d;Qt.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,Iye),d.add(n,Iye,n),this._mode===ne.SCENE2D&&Gye(this,n),this._adjustOrthographicFrustum(!0)};Qt.prototype.moveForward=function(e){e=y(e,this.defaultMoveAmount),this._mode===ne.SCENE2D?Iz(this,e):this.move(this.direction,e)};Qt.prototype.moveBackward=function(e){e=y(e,this.defaultMoveAmount),this._mode===ne.SCENE2D?Iz(this,-e):this.move(this.direction,-e)};Qt.prototype.moveUp=function(e){e=y(e,this.defaultMoveAmount),this.move(this.up,e)};Qt.prototype.moveDown=function(e){e=y(e,this.defaultMoveAmount),this.move(this.up,-e)};Qt.prototype.moveRight=function(e){e=y(e,this.defaultMoveAmount),this.move(this.right,e)};Qt.prototype.moveLeft=function(e){e=y(e,this.defaultMoveAmount),this.move(this.right,-e)};Qt.prototype.lookLeft=function(e){e=y(e,this.defaultLookAmount),this._mode!==ne.SCENE2D&&this.look(this.up,-e)};Qt.prototype.lookRight=function(e){e=y(e,this.defaultLookAmount),this._mode!==ne.SCENE2D&&this.look(this.up,e)};Qt.prototype.lookUp=function(e){e=y(e,this.defaultLookAmount),this._mode!==ne.SCENE2D&&this.look(this.right,-e)};Qt.prototype.lookDown=function(e){e=y(e,this.defaultLookAmount),this._mode!==ne.SCENE2D&&this.look(this.right,e)};var gut=new Le,yut=new Z;Qt.prototype.look=function(e,t){let n=y(t,this.defaultLookAmount),i=Le.fromAxisAngle(e,-n,gut),o=Z.fromQuaternion(i,yut),r=this.direction,s=this.up,a=this.right;Z.multiplyByVector(o,r,r),Z.multiplyByVector(o,s,s),Z.multiplyByVector(o,a,a)};Qt.prototype.twistLeft=function(e){e=y(e,this.defaultLookAmount),this.look(this.direction,e)};Qt.prototype.twistRight=function(e){e=y(e,this.defaultLookAmount),this.look(this.direction,-e)};var xut=new Le,but=new Z;Qt.prototype.rotate=function(e,t){let n=y(t,this.defaultRotateAmount),i=Le.fromAxisAngle(e,-n,xut),o=Z.fromQuaternion(i,but);Z.multiplyByVector(o,this.position,this.position),Z.multiplyByVector(o,this.direction,this.direction),Z.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};Qt.prototype.rotateDown=function(e){e=y(e,this.defaultRotateAmount),Wye(this,e)};Qt.prototype.rotateUp=function(e){e=y(e,this.defaultRotateAmount),Wye(this,-e)};var Tut=new d,Cut=new d,Aut=new d,Pye=new d;function Wye(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,P.EPSILON2)){let i=d.normalize(n,Tut),o=d.equalsEpsilon(i,e.constrainedAxis,P.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,Pye),P.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,Cut),a=d.dot(i,s),c=P.acosClamped(a);t>0&&t>c&&(t=c-P.EPSILON4),a=d.dot(i,d.negate(s,Pye)),c=P.acosClamped(a),t<0&&-t>c&&(t=-c+P.EPSILON4);let u=d.cross(s,i,Aut);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}Qt.prototype.rotateRight=function(e){e=y(e,this.defaultRotateAmount),jye(this,-e)};Qt.prototype.rotateLeft=function(e){e=y(e,this.defaultRotateAmount),jye(this,e)};function jye(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function Iz(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===Ru.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===Ru.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function qye(e,t){e.move(e.direction,t)}Qt.prototype.zoomIn=function(e){e=y(e,this.defaultZoomAmount),this._mode===ne.SCENE2D?Iz(this,e):qye(this,e)};Qt.prototype.zoomOut=function(e){e=y(e,this.defaultZoomAmount),this._mode===ne.SCENE2D?Iz(this,-e):qye(this,-e)};Qt.prototype.getMagnitude=function(){if(this._mode===ne.SCENE3D)return d.magnitude(this.position);if(this._mode===ne.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ne.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var Eut=new F;Qt.prototype.lookAt=function(e,t){let n=this._scene,i=y(n.ellipsoid,ee.default),o=Mt.eastNorthUpToFixedFrame(e,i,Eut);this.lookAtTransform(o,t)};var Sut=new d,vut=new Le,wut=new Le,Dut=new Z;function Yye(e,t,n){t=P.clamp(t,-P.PI_OVER_TWO,P.PI_OVER_TWO),e=P.zeroToTwoPi(e)-P.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,vut),o=Le.fromAxisAngle(d.UNIT_Z,-e,wut),r=Le.multiply(o,i,o),s=Z.fromQuaternion(r,Dut),a=d.clone(d.UNIT_X,Sut);return Z.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}Qt.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=Yye(t.heading,t.pitch,t.range):n=t,this._mode===ne.SCENE2D){U.clone(U.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<P.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(F.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<P.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var aP=new fe,Iut=new fe,Put=new d,Out=new d,Rut=new d,Mut=new d,Lut=new d,Nut=new d,Fut=new d,MX=new d,But={direction:new d,right:new d,up:new d},Oye;function pc(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function Xye(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:But,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=P.TWO_PI);let f=(c+u)*.5,h;if(a<-P.PI_OVER_TWO+P.RADIANS_PER_DEGREE&&s>P.PI_OVER_TWO-P.RADIANS_PER_DEGREE)h=0;else{let M=aP;M.longitude=f,M.latitude=s,M.height=0;let N=Iut;N.longitude=f,N.latitude=a,N.height=0;let _=Oye;(!l(_)||_.ellipsoid!==o)&&(Oye=_=new tg(void 0,void 0,o)),_.setEndPoints(M,N),h=_.interpolateUsingFraction(.5,aP).latitude}let p=aP;p.longitude=f,p.latitude=h,p.height=0;let g=o.cartographicToCartesian(p,Fut),m=aP;m.longitude=u,m.latitude=s;let x=o.cartographicToCartesian(m,Put);m.longitude=c;let b=o.cartographicToCartesian(m,Rut);m.longitude=f;let T=o.cartographicToCartesian(m,Lut);m.latitude=a;let C=o.cartographicToCartesian(m,Nut);m.longitude=u;let A=o.cartographicToCartesian(m,Mut);m.longitude=c;let E=o.cartographicToCartesian(m,Out);d.subtract(b,g,b),d.subtract(A,g,A),d.subtract(x,g,x),d.subtract(E,g,E),d.subtract(T,g,T),d.subtract(C,g,C);let v=o.geodeticSurfaceNormal(g,r.direction);d.negate(v,v);let D=d.cross(v,d.UNIT_Z,r.right);d.normalize(D,D);let R=d.cross(D,v,r.up),O;if(e.frustum instanceof an){let M=Math.max(d.distance(x,b),d.distance(A,E)),N=Math.max(d.distance(x,A),d.distance(b,E)),_,S,w=e.frustum._offCenterFrustum,I=w.right/w.top,L=N*I;M>L?(_=M,S=_/I):(S=N,_=L),O=Math.max(_,S)}else{let M=Math.tan(e.frustum.fovy*.5),N=e.frustum.aspectRatio*M;if(O=Math.max(pc(v,R,b,M),pc(v,R,A,M),pc(v,R,x,M),pc(v,R,E,M),pc(v,R,T,M),pc(v,R,C,M),pc(v,D,b,N),pc(v,D,A,N),pc(v,D,x,N),pc(v,D,E,N),pc(v,D,T,N),pc(v,D,C,N)),a<0&&s>0){let _=aP;_.longitude=c,_.latitude=0,_.height=0;let S=o.cartographicToCartesian(_,MX);d.subtract(S,g,S),O=Math.max(O,pc(v,R,S,M),pc(v,D,S,N)),_.longitude=u,S=o.cartographicToCartesian(_,MX),d.subtract(S,g,S),O=Math.max(O,pc(v,R,S,M),pc(v,D,S,N))}}return d.add(g,d.multiplyByScalar(v,-O,MX),n)}var kut=new fe,Vut=new d,Uut=new d;function zut(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=kut;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,Vut);F.multiplyByPoint(o,a,a),F.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,Uut);if(F.multiplyByPoint(o,c,c),F.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var Hut=new fe,Gut=new d,Wut=new d;function jut(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===Ru.INFINITE_SCROLL?o+=P.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=Hut;r.longitude=o,r.latitude=t.north;let s=i.project(r,Gut);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,Wut),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,p=e.frustum.right/e.frustum.top,g=u*p;return c>g?(f=c,h=f/p):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}Qt.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ne.SCENE3D)return Xye(this,e,t);if(n===ne.COLUMBUS_VIEW)return zut(this,e,t);if(n===ne.SCENE2D)return jut(this,e,t)};var qut=new pn;function Yut(e,t,n,i){n=y(n,ee.default);let o=e.getPickRay(t,qut),r=ti.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return pn.getPoint(o,s,i)}var Xut=new pn;function Kut(e,t,n,i){let r=e.getPickRay(t,Xut).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-P.PI_OVER_TWO||s.latitude>P.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var $ut=new pn;function Zut(e,t,n,i){let o=e.getPickRay(t,$ut),r=-o.origin.x/o.direction.x;pn.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-P.PI_OVER_TWO||s.latitude>P.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}Qt.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=y(t,ee.default),this._mode===ne.SCENE3D)n=Yut(this,e,t,n);else if(this._mode===ne.SCENE2D)n=Kut(this,e,this._projection,n);else if(this._mode===ne.COLUMBUS_VIEW)n=Zut(this,e,this._projection,n);else return;return n}};var Qut=new d,Jut=new d,eft=new d;function tft(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let p=d.multiplyByScalar(e.directionWC,c,Qut);d.add(h,p,p);let g=d.multiplyByScalar(e.rightWC,u*c*a,Jut),m=d.multiplyByScalar(e.upWC,f*c*s,eft),x=d.add(p,g,n.direction);return d.add(x,m,x),d.subtract(x,h,x),d.normalize(x,x),n}var Ez=new d;function nft(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.position,f),d.multiplyByScalar(e.right,c,Ez),d.add(Ez,f,f),d.multiplyByScalar(e.up,u,Ez),d.add(Ez,f,f),d.clone(e.directionWC,n.direction),(e._mode===ne.COLUMBUS_VIEW||e._mode===ne.SCENE2D)&&d.fromElements(n.origin.z,n.origin.x,n.origin.y,n.origin),n}Qt.prototype.getPickRay=function(e,t){l(t)||(t=new pn);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?tft(this,e,t):nft(this,e,t)};var ift=new d,oft=new d;Qt.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,ift),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),oft);return Math.max(0,d.magnitude(n)-e.radius)};var rft=new U;Qt.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,rft);return Math.max(o.x,o.y)};function sft(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:Jr.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var aft=new d,Rye=new d,cft=new d,lft=new d;function uft(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,aft),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,Rye),Rye);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,cft);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,lft)),f=c*u,h=a*u,p=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-p,p),x=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-x||n.y>x){let b=s.y<-m||s.y>m,T=s.z<-x||s.z>x;if(b||T)return sft(e,n,s,m,x,t)}}Qt.prototype.createCorrectPositionTween=function(e){if(this._mode===ne.COLUMBUS_VIEW)return uft(this,e)};var fft=new d,$s={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};Qt.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};Qt.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=$s.destination,e.orientation.heading=$s.heading,e.orientation.pitch=$s.pitch,e.orientation.roll=$s.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};Qt.prototype.flyTo=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.destination;if(this._mode===ne.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,fft));let o=y(e.orientation,y.EMPTY_OBJECT);if(l(o.direction)&&(o=Hye(this,t,o,FX.orientation)),l(e.duration)&&e.duration<=0){let f=FX;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;$s.destination=t,$s.heading=o.heading,$s.pitch=o.pitch,$s.roll=o.roll,$s.duration=e.duration,$s.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},$s.cancel=e.cancel,$s.endTransform=e.endTransform,$s.convert=i?!1:e.convert,$s.maximumHeight=e.maximumHeight,$s.pitchAdjustHeight=e.pitchAdjustHeight,$s.flyOverLongitude=e.flyOverLongitude,$s.flyOverLongitudeWeight=e.flyOverLongitudeWeight,$s.easingFunction=e.easingFunction;let a=this._scene,c=Cz.createTween(a,$s);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ne.SCENE2D&&(l(u)||(u=Qt.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function dft(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function hft(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var mft=100;function Kye(e,t,n){n=Jd.clone(l(n)?n:Qt.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=mft:e.frustum instanceof an||e._mode===ne.SCENE2D?n.range=hft(e,s):n.range=dft(e,s),n.range=P.clamp(n.range,i,o)}return n}Qt.prototype.viewBoundingSphere=function(e,t){t=Kye(this,e,t),this.lookAt(e.center,t)};var pft=new F,_ft=new d,gft=new d,yft=new d,xft=new d,bft=new oe,Tft=new Le,Cft=new Z;Qt.prototype.flyToBoundingSphere=function(e,t){t=y(t,y.EMPTY_OBJECT);let n=this._mode===ne.SCENE2D||this._mode===ne.COLUMBUS_VIEW;this._setTransform(F.IDENTITY);let i=Kye(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,_ft):o=Yye(i.heading,i.pitch,i.range);let r=this._scene,s=y(r.ellipsoid,ee.default),a=Mt.eastNorthUpToFixedFrame(e.center,s,pft);F.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,gft),d.normalize(c,c),u=F.multiplyByPointAsVector(a,d.UNIT_Z,yft),1-Math.abs(d.dot(c,u))<P.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,Tft),p=Z.fromQuaternion(h,Cft);d.fromCartesian4(F.getColumn(a,1,bft),u),Z.multiplyByVector(p,u,u)}let f=d.cross(c,u,xft);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var Mye=new d,Lye=new d,LX=new d,Nye=new d,cP=[new d,new d,new d,new d];function Aft(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,Mye),r=d.magnitude(o),s=d.normalize(o,Lye),a,c;d.equalsEpsilon(s,d.UNIT_Z,P.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,LX),LX),c=d.normalize(d.cross(s,a,Nye),Nye));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,Mye),h=u/r,p=d.multiplyByScalar(a,h,Lye),g=d.multiplyByScalar(c,h,LX),m=d.add(f,g,cP[0]);d.subtract(m,p,m),d.multiplyComponents(n,m,m);let x=d.subtract(f,g,cP[1]);d.subtract(x,p,x),d.multiplyComponents(n,x,x);let b=d.subtract(f,g,cP[2]);d.add(b,p,b),d.multiplyComponents(n,b,b);let T=d.add(f,g,cP[3]);return d.add(T,p,T),d.multiplyComponents(n,T,T),cP}var NX=new U,Eft=new d,o0=[new fe,new fe,new fe,new fe];function Sz(e,t,n,i,o,r){NX.x=e,NX.y=t;let s=i.pickEllipsoid(NX,o,Eft);return l(s)?(o0[n]=o.cartesianToCartographic(s,o0[n]),1):(o0[n]=o.cartesianToCartographic(r[n],o0[n]),0)}Qt.prototype.computeViewRectangle=function(e,t){e=y(e,ee.default);let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new ce(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===jt.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=Aft(this,e);if(c+=Sz(0,0,0,this,e,u),c+=Sz(0,a,1,this,e,u),c+=Sz(s,a,2,this,e,u),c+=Sz(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(o0,t);let f=0,h=o0[3].longitude;for(let p=0;p<4;++p){let g=o0[p].longitude,m=Math.abs(g-h);m>P.PI?f+=P.TWO_PI-m:f+=m,h=g}return P.equalsEpsilon(Math.abs(f),P.TWO_PI,P.EPSILON9)&&(t.west=-P.PI,t.east=P.PI,o0[0].latitude>=0?t.north=P.PI_OVER_TWO:t.south=-P.PI_OVER_TWO),t};Qt.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ne.SCENE2D||this.frustum instanceof Pi)return;let e=this._scene;this.frustum=new Pi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=P.toRadians(60)};Qt.prototype.switchToOrthographicFrustum=function(){if(this._mode===ne.SCENE2D||this.frustum instanceof an)return;let e=Uye(this),t=this._scene;this.frustum=new an,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};Qt.clone=function(e,t){return l(t)||(t=new Qt(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),F.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var lo=Qt;function Sft(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var hh=Sft;var e0e=Hr($l(),1),$ye=576,vft=100,lP="#ffffff",Pz="#48b";function t0e(e,t){this.credit=e,this.count=y(t,1)}function wft(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(vt.equals(o,t))return!0}return!1}function Dft(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;vt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var n0e="cesium-credit-delimiter";function Zye(e){let t=document.createElement("span");return t.textContent=e,t.className=n0e,t}function Qye(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function Jye(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(Zye(n));else{let f=o[u];f.className!==n0e&&e.replaceChild(Zye(n),f)}}let c=a.element;if(o.length<=r)e.appendChild(Qye(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild(Qye(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function Ift(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<$ye?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=$ye&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function Pft(e){let t=`
.cesium-credit-lightbox-overlay {
display: none;
z-index: 1;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(80, 80, 80, 0.8);
}
.cesium-credit-lightbox {
background-color: #303336;
color: ${lP};
position: relative;
min-height: ${vft}px;
margin: auto;
}
.cesium-credit-lightbox > ul > li a,
.cesium-credit-lightbox > ul > li a:visited,
.cesium-credit-wrapper a,
.cesium-credit-wrapper a:visited {
color: ${lP};
}
.cesium-credit-lightbox > ul > li a:hover {
color: ${Pz};
}
.cesium-credit-lightbox.cesium-credit-lightbox-expanded {
border: 1px solid #444;
border-radius: 5px;
max-width: 370px;
}
.cesium-credit-lightbox.cesium-credit-lightbox-mobile {
height: 100%;
width: 100%;
}
.cesium-credit-lightbox-title {
padding: 20px 20px 0 20px;
}
.cesium-credit-lightbox-close {
font-size: 18pt;
cursor: pointer;
position: absolute;
top: 0;
right: 6px;
color: ${lP};
}
.cesium-credit-lightbox-close:hover {
color: ${Pz};
}
.cesium-credit-lightbox > ul {
margin: 0;
padding: 12px 20px 12px 40px;
font-size: 13px;
}
.cesium-credit-lightbox > ul > li {
padding-bottom: 6px;
}
.cesium-credit-lightbox > ul > li * {
padding: 0;
margin: 0;
}
.cesium-credit-expand-link {
padding-left: 5px;
cursor: pointer;
text-decoration: underline;
color: ${lP};
}
.cesium-credit-expand-link:hover {
color: ${Pz};
}
.cesium-credit-text {
color: ${lP};
}
.cesium-credit-delimiter {
padding: 0 5px;
}
.cesium-credit-textContainer *,
.cesium-credit-logoContainer * {
display: inline;
}
.cesium-credit-textContainer a:hover {
color: ${Pz}
}
.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type {
padding-left: 5px;
}
`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=y(n(e),document.head),o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function dr(e,t,n){let i=this;n=y(n,document.body);let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="&times;",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let p=document.createElement("a");p.className="cesium-credit-expand-link",p.onclick=this.showLightbox.bind(this),p.textContent="Data attribution",e.appendChild(p),Pft(e);let g=vt.clone(dr.cesiumCredit);this._delimiter=y(t,"\u2022"),this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=p,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new wt,lightboxCredits:new wt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function i0e(e,t,n,i){i=y(i,1);let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new t0e(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}dr.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=vt.clone(o0e())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,i0e(this,t,e)};dr.prototype.addStaticCredit=function(e){let t=this._staticCredits;wft(t,e)||t.push(e)};dr.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};dr.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};dr.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};dr.prototype.update=function(){this._expanded&&Ift(this)};dr.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&vt.equals(dr.cesiumCredit,this._cesiumCredit)||i0e(this,s,r,Number.MAX_VALUE)}vt.equals(dr.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=vt.clone(dr.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};dr.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;Jye(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",Jye(this._creditList,t,void 0,"li"),Dft(this)};dr.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};dr.prototype.isDestroyed=function(){return!1};dr._cesiumCredit=void 0;dr._cesiumCreditInitialized=!1;var Oz;function o0e(){if(!l(Oz)){let e=nn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new e0e.default(e).path()),Oz=new vt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return dr._cesiumCreditInitialized||(dr._cesiumCredit=Oz,dr._cesiumCreditInitialized=!0),Oz}Object.defineProperties(dr,{cesiumCredit:{get:function(){return o0e(),dr._cesiumCredit},set:function(e){dr._cesiumCredit=e,dr._cesiumCreditInitialized=!0}}});dr.CreditDisplayElement=t0e;var Rz=dr;var Mz=0,Oft=1;function Ib(e){let t=e.frustum,n=e.orientation,i=e.origin,o=y(e.vertexFormat,Ie.DEFAULT),r=y(e._drawNearPlane,!0),s,a;t instanceof Pi?(s=Mz,a=Pi.packedLength):t instanceof an&&(s=Oft,a=an.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Ie.packedLength}Ib.pack=function(e,t,n){n=y(n,0);let i=e._frustumType,o=e._frustum;return t[n++]=i,i===Mz?(Pi.pack(o,t,n),n+=Pi.packedLength):(an.pack(o,t,n),n+=an.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Ie.pack(e._vertexFormat,t,n),n+=Ie.packedLength,t[n]=e._drawNearPlane?1:0,t};var Rft=new Pi,Mft=new an,Lft=new Le,Nft=new d,Fft=new Ie;Ib.unpack=function(e,t,n){t=y(t,0);let i=e[t++],o;i===Mz?(o=Pi.unpack(e,t,Rft),t+=Pi.packedLength):(o=an.unpack(e,t,Mft),t+=an.packedLength);let r=d.unpack(e,t,Nft);t+=d.packedLength;let s=Le.unpack(e,t,Lft);t+=Le.packedLength;let a=Ie.unpack(e,t,Fft);t+=Ie.packedLength;let c=e[t]===1;if(!l(n))return new Ib({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Ie.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function tS(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var Bft=new Z,kft=new F,UX=new F,r0e=new d,s0e=new d,a0e=new d,Vft=new d,Uft=new d,zft=new d,r0=new Array(3),uP=new Array(4);uP[0]=new oe(-1,-1,1,1);uP[1]=new oe(1,-1,1,1);uP[2]=new oe(1,1,1,1);uP[3]=new oe(-1,1,1,1);var c0e=new Array(4);for(let e=0;e<4;++e)c0e[e]=new oe;Ib._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=Z.fromQuaternion(t,Bft),u=y(r,r0e),f=y(s,s0e),h=y(a,a0e);u=Z.getColumn(c,0,u),f=Z.getColumn(c,1,f),h=Z.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let p=F.computeView(e,h,f,u,kft),g,m,x=i.projectionMatrix;if(n===Mz){let b=F.multiply(x,p,UX);m=F.inverse(b,UX)}else g=F.inverseTransformation(p,UX);l(m)?(r0[0]=i.near,r0[1]=i.far):(r0[0]=0,r0[1]=i.near,r0[2]=i.far);for(let b=0;b<2;++b)for(let T=0;T<4;++T){let C=oe.clone(uP[T],c0e[T]);if(l(m)){C=F.multiplyByVector(m,C,C);let A=1/C.w;d.multiplyByScalar(C,A,C),d.subtract(C,e,C),d.normalize(C,C);let E=d.dot(h,C);d.multiplyByScalar(C,r0[b]/E,C),d.add(C,e,C)}else{let A=i.offCenterFrustum;l(A)&&(i=A);let E=r0[b],v=r0[b+1];C.x=(C.x*(i.right-i.left)+i.left+i.right)*.5,C.y=(C.y*(i.top-i.bottom)+i.bottom+i.top)*.5,C.z=(C.z*(E-v)-E-v)*.5,C.w=1,F.multiplyByVector(g,C,C)}o[12*b+T*3]=C.x,o[12*b+T*3+1]=C.y,o[12*b+T*3+2]=C.z}};Ib.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(3*4*6);Ib._computeNearFarPlanes(i,o,t,n,c);let u=3*4*2;c[u]=c[3*4],c[u+1]=c[3*4+1],c[u+2]=c[3*4+2],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[3*3],c[u+7]=c[3*3+1],c[u+8]=c[3*3+2],c[u+9]=c[3*7],c[u+10]=c[3*7+1],c[u+11]=c[3*7+2],u+=3*4,c[u]=c[3*5],c[u+1]=c[3*5+1],c[u+2]=c[3*5+2],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[3*4],c[u+10]=c[3*4+1],c[u+11]=c[3*4+2],u+=3*4,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[3*5],c[u+4]=c[3*5+1],c[u+5]=c[3*5+2],c[u+6]=c[3*6],c[u+7]=c[3*6+1],c[u+8]=c[3*6+2],c[u+9]=c[3*2],c[u+10]=c[3*2+1],c[u+11]=c[3*2+2],u+=3*4,c[u]=c[3*2],c[u+1]=c[3*2+1],c[u+2]=c[3*2+2],c[u+3]=c[3*6],c[u+4]=c[3*6+1],c[u+5]=c[3*6+2],c[u+6]=c[3*7],c[u+7]=c[3*7+1],c[u+8]=c[3*7+2],c[u+9]=c[3*3],c[u+10]=c[3*3+1],c[u+11]=c[3*3+2],r||(c=c.subarray(3*4));let f=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let p=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(3*4*a):void 0,m=l(s.bitangent)?new Float32Array(3*4*a):void 0,x=l(s.st)?new Float32Array(2*4*a):void 0,b=r0e,T=s0e,C=a0e,A=d.negate(b,Vft),E=d.negate(T,Uft),v=d.negate(C,zft);u=0,r&&(tS(u,p,g,m,x,v,b,T),u+=3*4),tS(u,p,g,m,x,C,A,T),u+=3*4,tS(u,p,g,m,x,A,v,T),u+=3*4,tS(u,p,g,m,x,E,v,A),u+=3*4,tS(u,p,g,m,x,b,C,T),u+=3*4,tS(u,p,g,m,x,T,C,A),l(p)&&(f.normal=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:p})),l(g)&&(f.tangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:m})),l(x)&&(f.st=new Se({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:x}))}let h=new Uint16Array(6*a);for(let p=0;p<a;++p){let g=p*6,m=p*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ut({attributes:f,indices:h,primitiveType:Ne.TRIANGLES,boundingSphere:ce.fromVertices(c)})};var nS=Ib;var zX=0,Hft=1;function fP(e){let t=e.frustum,n=e.orientation,i=e.origin,o=y(e._drawNearPlane,!0),r,s;t instanceof Pi?(r=zX,s=Pi.packedLength):t instanceof an&&(r=Hft,s=an.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}fP.pack=function(e,t,n){n=y(n,0);let i=e._frustumType,o=e._frustum;return t[n++]=i,i===zX?(Pi.pack(o,t,n),n+=Pi.packedLength):(an.pack(o,t,n),n+=an.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var Gft=new Pi,Wft=new an,jft=new Le,qft=new d;fP.unpack=function(e,t,n){t=y(t,0);let i=e[t++],o;i===zX?(o=Pi.unpack(e,t,Gft),t+=Pi.packedLength):(o=an.unpack(e,t,Wft),t+=an.packedLength);let r=d.unpack(e,t,qft);t+=d.packedLength;let s=Le.unpack(e,t,jft);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new fP({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};fP.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(3*4*2);nS._computeNearFarPlanes(i,o,t,n,s);let a=new mn({position:new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),p=r?0:1;for(;p<2;++p)c=r?p*8:0,u=p*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(p=0;p<2;++p)c=(f+p)*8,u=p*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ut({attributes:a,indices:h,primitiveType:Ne.LINES,boundingSphere:ce.fromVertices(s)})};var Lz=fP;function Nz(e){e=y(e,y.EMPTY_OBJECT),this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=y(e.color,z.CYAN),this._updateOnChange=y(e.updateOnChange,!0),this.show=y(e.show,!0),this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var Yft=new d,Xft=new Z,Kft=new Le,$ft=new Pi,Zft=new Wl,Qft=new an,Jft=new qr,edt=new z,tdt=[1,1e5];Nz.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Pi?a=$ft:s instanceof Wl?a=Zft:s instanceof an?a=Qft:a=Jft,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=tdt,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,p=r.upWC,g=r.rightWC;g=d.negate(g,Yft);let m=Xft;Z.setColumn(m,0,g,m),Z.setColumn(m,1,p,m),Z.setColumn(m,2,h,m);let x=Le.fromRotationMatrix(m,Kft);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new Pn({geometryInstances:new Dt({geometry:new nS({origin:f,orientation:x,frustum:a,_drawNearPlane:i===0}),attributes:{color:Wt.fromColor(z.fromAlpha(this._color,.1,edt))},id:this.id,pickPrimitive:this}),appearance:new ln({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Pn({geometryInstances:new Dt({geometry:new Lz({origin:f,orientation:x,frustum:a,_drawNearPlane:i===0}),attributes:{color:Wt.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};Nz.prototype.isDestroyed=function(){return!1};Nz.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var E_=Nz;var Fz=`in vec4 positionEC;
void main()
{
vec3 position;
vec3 direction;
if (czm_orthographicIn3D == 1.0)
{
vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw;
vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom
vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top
position = vec3(mix(minPlane, maxPlane, uv), 0.0);
direction = vec3(0.0, 0.0, -1.0);
}
else
{
position = vec3(0.0);
direction = normalize(positionEC.xyz);
}
czm_ray ray = czm_ray(position, direction);
vec3 ellipsoid_center = czm_view[3].xyz;
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii);
if (!czm_isEmpty(intersection))
{
out_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
}
else
{
discard;
}
czm_writeLogDepth();
}
`;var Bz=`in vec4 position;
out vec4 positionEC;
void main()
{
positionEC = czm_modelView * position;
gl_Position = czm_projection * positionEC;
czm_vertexLogDepth();
}
`;function hP(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=y(e,0)}var dP=Ht.supportsTypedArrays()?new Float32Array(12):[],l0e=new d,u0e=new d,HX=new d,f0e=new d,kz=new d;function ndt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof an)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,p=d.multiplyComponents(e.oneOverRadii,h,l0e),g=d.normalize(p,u0e),m=d.normalize(d.cross(d.UNIT_Z,p,HX),HX),x=d.normalize(d.cross(g,m,f0e),f0e),b=d.magnitude(p),T=Math.sqrt(b*b-1);o=d.multiplyByScalar(g,1/b,l0e);let C=T/b;r=d.multiplyByScalar(m,C,u0e),s=d.multiplyByScalar(x,C,HX)}let a=d.add(o,s,kz);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,dP,0);let c=d.subtract(o,s,kz);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,dP,3);let u=d.add(o,s,kz);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,dP,6);let f=d.subtract(o,s,kz);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,dP,9),dP}hP.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ne.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new ee(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ve.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new Qe({renderState:this._rs,boundingVolume:new ce(d.ZERO,i.maximumRadius),pass:ve.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new Ue({sources:[Bz]}),a=new Ue({sources:[Fz]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=Jt.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=ndt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ut({attributes:{position:new Se({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Ne.TRIANGLES});this._va=oi.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:ke.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};hP.prototype.execute=function(e,t){this._mode===ne.SCENE3D&&this._command.execute(e,t)};hP.prototype.isDestroyed=function(){return!1};hP.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var Vz=hP;function oS(){}var idt=/\bgl_FragDepth\b/,odt=/\bdiscard\b/;function rdt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(idt.test(r[a])||odt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main()
{
out_FragColor = vec4(1.0);
}
`;i=new Ue({sources:[a]})}else if(!o&&s){let a=`void main()
{
out_FragColor = vec4(1.0);
czm_writeLogDepth();
}
`;i=new Ue({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function sdt(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ve.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ve.fromCache(o);return n[t.id]=r,r}oS.createDepthOnlyDerivedCommand=function(e,t,n,i){var s,a;l(i)||(i={});let o=(s=i.depthOnlyCommand)==null?void 0:s.shaderProgram,r=(a=i.depthOnlyCommand)==null?void 0:a.renderState;return i.depthOnlyCommand=Qe.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=rdt(n,t.shaderProgram),i.depthOnlyCommand.renderState=sdt(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var adt=/\s+czm_writeLogDepth\(/,cdt=/\s+czm_vertexLogDepth\(/;function ldt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(cdt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=Ue.replaceMain(c[h],"czm_log_depth_main");c.push(`
void main()
{
czm_log_depth_main();
czm_vertexLogDepth();
}
`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)adt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=Ue.replaceMain(c[f],"czm_log_depth_main");u=`
void main()
{
czm_log_depth_main();
czm_writeLogDepth();
}
`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}oS.createLogDepthCommand=function(e,t,n){var o;l(n)||(n={});let i=(o=n.command)==null?void 0:o.shaderProgram;return n.command=Qe.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=ldt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function udt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;Object.prototype.toString.call(n)==="[object Object]"&&(n.color?n=`vec4(${z.floatToByte(n.color.red)}, ${z.floatToByte(n.color.green)}, ${z.floatToByte(n.color.blue)}, ${z.floatToByte(n.color.alpha)})`:n="vec4(1.0)");let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main ()
{
czm_non_pick_main();
if (${c}.a == 0.0) {
discard;
}
${c} = ${n};
} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=Ue.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let p=new Ue({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:p,attributeLocations:o})}function d0e(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ve.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ve.fromCache(o);return n[t.id]=r,r}oS.createPickDerivedCommand=function(e,t,n,i){var s,a;l(i)||(i={});let o=(s=i.pickCommand)==null?void 0:s.shaderProgram,r=(a=i.pickCommand)==null?void 0:a.renderState;return i.pickCommand=Qe.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=udt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=d0e(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function iS(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function h0e(e){return e.isArray?e.arrayLength:lt.getComponentCount(e.type)}function fdt(e){let t=h0e(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function m0e(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function p0e(e,t){let n=Ft.getMaximum(t);return`(${e}) / float(${n})`}function ddt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=m0e(n,i,o)}return e.normalized||(n=p0e(n,e.componentType)),n}function hdt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=m0e(o,r,s)}return e.normalized||(o=p0e(o,e.componentType)),o}function mdt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=fdt(u),h=["0.0","0.0","0.0","0.0"],p=h0e(u);if(p===1)h[0]=ddt(u,c);else{let b=["x","y","z","w"];for(let T=0;T<p;T++)h[T]=hdt(u,c,b[T])}let g=t.fragmentShaderSource.defines.slice();g.push(yf.METADATA_PICKING_ENABLED),iS(g,yf.METADATA_PICKING_VALUE_TYPE,f),iS(g,yf.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),iS(g,yf.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),iS(g,yf.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),iS(g,yf.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),iS(g,yf.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new Ue({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}oS.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=Qe.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=mdt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=d0e(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function pdt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}oS.createHdrCommand=function(e,t,n){var o;l(n)||(n={});let i=(o=n.command)==null?void 0:o.shaderProgram;return n.command=Qe.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=pdt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var S_=oS;function Uz(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=P.toRadians(o),t._beta=P.toRadians(i.beta),t._gamma=P.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var _dt=new Le,_0e=new Le,gdt=new Z;function ydt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,_0e),c=Le.fromAxisAngle(r,i,_dt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,_0e);Le.multiply(f,u,u);let h=Z.fromQuaternion(u,gdt);Z.multiplyByVector(h,r,r),Z.multiplyByVector(h,s,s),Z.multiplyByVector(h,o,o)}Uz.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;ydt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};Uz.prototype.isDestroyed=function(){return!1};Uz.prototype.destroy=function(){return this._removeListener(),ue(this)};var zz=Uz;function GX(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(GX.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var xdt=new d;GX.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ne.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,P.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,xdt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var Hz=GX;function bdt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ne.SCENE3D,this.morphTime=ne.getMorphTime(ne.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var Gz=bdt;var Ta={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},Pb=Ta.DERIVED_COMMANDS_MAXIMUM_LENGTH,v0e=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function Ob(){this._frontFaceAlphaByDistance=new Vt(0,1,0,1),this._backFaceAlphaByDistance=new Vt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(Pb),this._derivedBlendCommandTypes=new Array(Pb),this._derivedPickCommandTypes=new Array(Pb),this._derivedCommandTypesToUpdate=new Array(Pb),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(Ob.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});Ob.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=g0e(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=g0e(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=y0e(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=y0e(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=Edt(this,e,t),this._sunVisibleThroughGlobe=Tdt(this,e),this._environmentVisible=Cdt(this,e),this._useDepthPlane=Adt(this,e),this._numberOfTextureUniforms=Sdt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),vdt(this,e)};function g0e(e,t,n,i){return e?l(n)?(Vt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function y0e(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function Tdt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function Cdt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function Adt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function Edt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ne.SCENE2D&&t.context.depthTexture}function Sdt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function vdt(e,t){e._derivedCommandsLength=WX(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=WX(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=WX(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<Pb;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=zdt())}function WX(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Ta.PICK_FRONT_FACE:u?Ta.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ta.TRANSLUCENT_FRONT_FACE,h=i?Ta.PICK_BACK_FACE:u?Ta.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ta.TRANSLUCENT_BACK_FACE;return t.mode===ne.SCENE2D?(o[r++]=Ta.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Ta.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Ta.DEPTH_ONLY_BACK_FACE),o[r++]=Ta.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ta.DEPTH_ONLY_FRONT_FACE),o[r++]=Ta.OPAQUE_BACK_FACE,o[r++]=f),r)}function $f(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function x0e(e,t){return e.indexOf(t)>-1}function wdt(e,t){$f(e.defines,"TRANSLUCENT"),$f(t.defines,"TRANSLUCENT")}function Ddt(e,t){$f(e.defines,"GROUND_ATMOSPHERE"),$f(t.defines,"GROUND_ATMOSPHERE"),$f(e.defines,"FOG"),$f(t.defines,"FOG"),$f(e.defines,"TRANSLUCENT"),$f(t.defines,"TRANSLUCENT")}function jX(e,t){if(x0e(t.defines,"TILE_LIMIT_RECTANGLE")||x0e(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main()
{
out_FragColor = vec4(1.0);
}
`;t.sources=[n]}function qX(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=Ue.replaceMain(n[r],"czm_globe_translucency_main");n.push(`
uniform sampler2D u_classificationTexture;
void main()
{
vec2 st = gl_FragCoord.xy / czm_viewport.zw;
#ifdef MANUAL_DEPTH_TEST
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st));
if (logDepthOrDepth != 0.0)
{
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
float depthEC = eyeCoordinate.z / eyeCoordinate.w;
if (v_positionEC.z < depthEC)
{
discard;
}
}
#endif
czm_globe_translucency_main();
vec4 classificationColor = texture(u_classificationTexture, st);
if (classificationColor.a > 0.0)
{
// Reverse premultiplication process to get the correct composited result of the classification primitives
classificationColor.rgb /= classificationColor.a;
}
out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a);
}
`)}function w0e(e,t){qX(e,t),$f(e.defines,"GROUND_ATMOSPHERE"),$f(t.defines,"GROUND_ATMOSPHERE"),$f(e.defines,"FOG"),$f(t.defines,"FOG")}function Idt(e,t){qX(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Pdt(e,t){w0e(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function b0e(e,t){let n=`uniform sampler2D u_classificationTexture;
void main()
{
vec2 st = gl_FragCoord.xy / czm_viewport.zw;
vec4 pickColor = texture(u_classificationTexture, st);
if (pickColor == vec4(0.0))
{
discard;
}
out_FragColor = pickColor;
}
`;t.sources=[n]}function Odt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Rdt(e){e.cull.face=xi.BACK,e.cull.enabled=!0}function Mdt(e){e.cull.face=xi.FRONT,e.cull.enabled=!0}function Ldt(e){e.cull.face=xi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Ndt(e){e.cull.face=xi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Fdt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function T0e(e){e.cull.face=xi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=fn.ALPHA_BLEND}function C0e(e){e.cull.face=xi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=fn.ALPHA_BLEND}function Bdt(e){e.cull.face=xi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function kdt(e){e.cull.face=xi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function Vdt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ve.getState(e);i(s),r=Ve.fromCache(s),o[e.id]=r}return r}function rS(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function Udt(e,t,n,i,o){return l(o)?!i&&l(n)?n:At(t,o(e),!1):t}function mh(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function zdt(){return[new mh({pass:ve.GLOBE,pickOnly:!1,getShaderProgramFunction:wdt,getRenderStateFunction:Rdt,getUniformMapFunction:void 0}),new mh({pass:ve.GLOBE,pickOnly:!1,getShaderProgramFunction:Ddt,getRenderStateFunction:Mdt,getUniformMapFunction:void 0}),new mh({pass:ve.GLOBE,pickOnly:!1,getShaderProgramFunction:jX,getRenderStateFunction:Ldt,getUniformMapFunction:void 0}),new mh({pass:ve.GLOBE,pickOnly:!1,getShaderProgramFunction:jX,getRenderStateFunction:Ndt,getUniformMapFunction:void 0}),new mh({pass:ve.GLOBE,pickOnly:!1,getShaderProgramFunction:jX,getRenderStateFunction:Fdt,getUniformMapFunction:void 0}),new mh({pass:ve.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:qX,getRenderStateFunction:T0e,getUniformMapFunction:rS}),new mh({pass:ve.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:w0e,getRenderStateFunction:C0e,getUniformMapFunction:rS}),new mh({pass:ve.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Idt,getRenderStateFunction:T0e,getUniformMapFunction:rS}),new mh({pass:ve.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Pdt,getRenderStateFunction:C0e,getUniformMapFunction:rS}),new mh({pass:ve.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:b0e,getRenderStateFunction:Bdt,getUniformMapFunction:rS}),new mh({pass:ve.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:b0e,getRenderStateFunction:kdt,getUniformMapFunction:rS})]}var A0e=new Array(Pb),E0e=new Array(Pb);Ob.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)E0e[o]=this._derivedCommandPacks[n[o]],A0e[o]=v0e[n[o]];Hdt(this,e,i,n,A0e,E0e,t)}};function Hdt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=y(a.uniformMapDirtyFrame,0),h=y(a.shaderProgramDirtyFrame,0),p=y(a.renderStateDirtyFrame,0),g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,x=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),x&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let b=0;b<n;++b){let T=r[b],C=i[b],A=o[b],E=a[A],v,D,R;l(E)?(v=E.uniformMap,D=E.shaderProgram,R=E.renderState):(v=void 0,D=void 0,R=void 0),E=Qe.shallowClone(t,E),a[A]=E;let O=y(E.derivedCommands.uniformMapDirtyFrame,0),M=y(E.derivedCommands.shaderProgramDirtyFrame,0),N=y(E.derivedCommands.renderStateDirtyFrame,0),_=g||O<f,S=m||M<h,w=x||N<p;_&&(E.derivedCommands.uniformMapDirtyFrame=u),S&&(E.derivedCommands.shaderProgramDirtyFrame=u),w&&(E.derivedCommands.renderStateDirtyFrame=u),E.derivedCommands.type=C,E.pass=T.pass,E.pickOnly=T.pickOnly,E.uniformMap=Udt(e,t.uniformMap,v,_,T.getUniformMapFunction),E.shaderProgram=Odt(s.context,t.shaderProgram,D,S,T.getShaderProgramFunction,A),E.renderState=Vdt(t.renderState,R,w,T.getRenderStateFunction,T.renderStateCache)}}}Ob.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=v0e[o[a]];n.commandList.push(s[c])}};function D0e(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function S0e(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var Gdt=[Ta.OPAQUE_FRONT_FACE,Ta.OPAQUE_BACK_FACE],Wdt=[Ta.DEPTH_ONLY_FRONT_FACE,Ta.DEPTH_ONLY_BACK_FACE,Ta.DEPTH_ONLY_FRONT_AND_BACK_FACE];Ob.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[ve.GLOBE],a=e.indices[ve.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),D0e(s,a,t,i,o,Gdt))};Ob.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[ve.GLOBE],c=e.indices[ve.GLOBE],u=e.commands[ve.TERRAIN_CLASSIFICATION],f=e.indices[ve.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,p=this._backFaceTranslucent;if((!h||!p)&&S0e(u,f,t,i,o),!h&&!p)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,D0e(a,c,t,i,o,Wdt),r.depthTexture){let x=n.packDepth(r,o);s.globeDepthTexture=x}S0e(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var Wz=Ob;var Mu=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
void main()
{
out_FragColor = texture(colorTexture, v_textureCoordinates);
}
`;function qm(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new _i({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new _i({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new ai({color:new z(0,0,0,0),owner:this}),this._clearCommand=new ai({color:new z(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(qm.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});qm.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var jdt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Hn.EQUAL,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},backFunction:Hn.NEVER,reference:0,mask:Ut.CLASSIFICATION_MASK},blending:fn.ALPHA_BLEND},qdt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Hn.NOT_EQUAL,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},backFunction:Hn.NEVER,reference:0,mask:Ut.CLASSIFICATION_MASK},blending:fn.ALPHA_BLEND},Ydt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Ut.setCesium3DTileBit(),stencilMask:Ut.CESIUM_3D_TILE_MASK,blending:fn.ALPHA_BLEND},Xdt=`uniform sampler2D colorTexture;
uniform sampler2D depthTexture;
uniform sampler2D classifiedTexture;
in vec2 v_textureCoordinates;
void main()
{
vec4 color = texture(colorTexture, v_textureCoordinates);
if (color.a == 0.0)
{
discard;
}
bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0)));
#ifdef UNCLASSIFIED
vec4 highlightColor = czm_invertClassificationColor;
if (isClassified)
{
discard;
}
#else
vec4 highlightColor = vec4(1.0);
if (!isClassified)
{
discard;
}
#endif
out_FragColor = color * highlightColor;
gl_FragDepth = texture(depthTexture, v_textureCoordinates).r;
}
`,Kdt=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
void main()
{
vec4 color = texture(colorTexture, v_textureCoordinates);
if (color.a == 0.0)
{
discard;
}
#ifdef UNCLASSIFIED
out_FragColor = color * czm_invertClassificationColor;
#else
out_FragColor = color;
#endif
}
`;qm.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Rt({context:e,width:s,height:a,pixelFormat:nt.DEPTH_STENCIL,pixelDatatype:Ke.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new gf({context:e,width:s,height:a,format:vl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ve.fromCache(jdt),this._rsClassified=Ve.fromCache(qdt),this._rsDefault=Ve.fromCache(Ydt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?Kdt:Xdt,f=new Ue({defines:["UNCLASSIFIED"],sources:[u]}),h=new Ue({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(Mu,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};qm.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};qm.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};qm.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};qm.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};qm.prototype.isDestroyed=function(){return!1};qm.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var mP=qm;function jz(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(jz.prototype,{total:{get:function(){return this._total}}});function s0(e){let t=new Array(ec.NUMBER_OF_JOB_TYPES);t[ec.TEXTURE]=new jz(l(e)?e[ec.TEXTURE]:10),t[ec.PROGRAM]=new jz(l(e)?e[ec.PROGRAM]:10),t[ec.BUFFER]=new jz(l(e)?e[ec.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}s0.getTimestamp=Ai;Object.defineProperties(s0.prototype,{totalBudget:{get:function(){return this._totalBudget}}});s0.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};s0.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};s0.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=s0.getTimestamp();e.execute();let a=s0.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var qz=s0;function Yz(e){e=y(e,y.EMPTY_OBJECT);let t=Rn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Ai(),this._lastMsSampleTime=Ai(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(Yz.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});Yz.prototype.update=function(e){let t=Ai(),n=y(e,!0);this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};Yz.prototype.destroy=function(){return ue(this)};var a0=Yz;var Ca={};Ca.decodeRawMetadataValue=function(e,t,n){switch(e){case Ft.INT8:return t.getInt8(n);case Ft.UINT8:return t.getUint8(n);case Ft.INT16:return t.getInt16(n,!0);case Ft.UINT16:return t.getUint16(n,!0);case Ft.INT32:return t.getInt32(n,!0);case Ft.UINT32:return t.getUint32(n,!0);case Ft.INT64:return t.getBigInt64(n,!0);case Ft.UINT64:return t.getBigUint64(n,!0);case Ft.FLOAT32:return t.getFloat32(n,!0);case Ft.FLOAT64:return t.getFloat64(n,!0)}throw new se(`Invalid component type: ${e}`)};Ca.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=Ca.decodeRawMetadataValue(i,t,n);return e.normalized?Ft.normalize(o,i):o};Ca.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=Ft.getSizeInBytes(i),r=e.type,s=lt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let p=n*a+h*o,g=Ca.decodeRawMetadataValueComponent(e,t,p);f[h]=g}return f}let c=n*a;return Ca.decodeRawMetadataValueComponent(e,t,c)};Ca.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=Ca.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return Ca.decodeRawMetadataValueElement(e,n,0)};Ca.convertToObjectType=function(e,t){if(!l(t)||e===lt.SCALAR||e===lt.STRING||e===lt.BOOLEAN||e===lt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case lt.VEC2:return U.unpack(n,0,new U);case lt.VEC3:return d.unpack(n,0,new d);case lt.VEC4:return oe.unpack(n,0,new oe);case lt.MAT2:return Mi.unpack(n,0,new Mi);case lt.MAT3:return Z.unpack(n,0,new Z);case lt.MAT4:return F.unpack(n,0,new F)}throw new se(`Invalid metadata object type: ${e}`)};Ca.convertFromObjectType=function(e,t){if(!l(t)||e===lt.SCALAR||e===lt.STRING||e===lt.BOOLEAN||e===lt.ENUM)return t;switch(e){case lt.VEC2:return U.pack(t,Array(2));case lt.VEC3:return d.pack(t,Array(3));case lt.VEC4:return oe.pack(t,Array(4));case lt.MAT2:return Mi.pack(t,Array(4));case lt.MAT3:return Z.pack(t,Array(9));case lt.MAT4:return F.pack(t,Array(16))}throw new se(`Invalid metadata object type: ${e}`)};Ca.decodeMetadataValues=function(e,t,n){let i=Ca.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=Ca.convertFromObjectType(e.type,t.offset),s=Ca.convertFromObjectType(e.type,t.scale);i=Rp.valueTransformInPlace(i,r,s,Ft.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=Ca.convertToObjectType(e.type,c);s[a]=u}return s}return Ca.convertToObjectType(e.type,i)};var Xz=Object.freeze(Ca);function Rb(){this._framebuffer=new _i,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(Rb.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function $dt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function Zdt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture;
in vec2 v_textureCoordinates;
void main()
{
vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates);
float globeDepth = czm_unpackDepth(globeDepthPacked);
float depth = texture(colorTexture, v_textureCoordinates).r;
out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0,
czm_packDepth(depth), globeDepthPacked);
}
`,{renderState:Ve.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}Rb.prototype.update=function(e,t){$dt(this,e,t),Zdt(this,e,t)};var Qdt=new oe,Jdt=new oe(1,1/255,1/65025,1/16581375);Rb.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=oe.unpack(i,0,Qdt);return oe.divideByScalar(o,255,o),oe.dot(o,Jdt)};Rb.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};Rb.prototype.isDestroyed=function(){return!1};Rb.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var Kz=Rb;function eht(e,t){this.near=y(e,0),this.far=y(t,0);let n=ve.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var $z=eht;var Mb=`uniform highp sampler2D u_depthTexture;
in vec2 v_textureCoordinates;
void main()
{
out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r);
}
`;function Ym(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new _i({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new _i({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new _i,this._tempCopyDepthFramebuffer=new _i,this._updateDepthFramebuffer=new _i({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new je,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(Ym.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function I0e(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!je.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,je.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=je.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!je.equals(r,e._rs.viewport)||a)&&(e._rs=Ve.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ve.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:fn.ALPHA_BLEND}),e._rsUpdate=Ve.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Hn.EQUAL,frontOperation:{fail:mt.KEEP,zFail:mt.KEEP,zPass:mt.KEEP},backFunction:Hn.NEVER,reference:Ut.CESIUM_3D_TILE_MASK,mask:Ut.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(Mb,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(Mu,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(Mb,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(Mu,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new ai({color:new z(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}Ym.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT:Ke.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),I0e(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};Ym.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};Ym.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};Ym.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),I0e(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};Ym.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};Ym.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(z.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};Ym.prototype.isDestroyed=function(){return!1};Ym.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var Zz=Ym;function Lb(){this._framebuffer=new _i({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new _i,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new je,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(Lb.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function tht(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function nht(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT:Ke.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function iht(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!je.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,je.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=je.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!je.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ve.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(Mb,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new ai({color:new z(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}Lb.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;nht(this,n,o,r,e),iht(this,n,o,r,i),this._useHdr=e};Lb.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};Lb.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};Lb.prototype.isDestroyed=function(){return!1};Lb.prototype.destroy=function(){return tht(this),ue(this)};var Qz=Lb;var pP=`#ifdef MRT
layout (location = 0) out vec4 out_FragData_0;
layout (location = 1) out vec4 out_FragData_1;
#else
layout (location = 0) out vec4 out_FragColor;
#endif
uniform vec4 u_bgColor;
uniform sampler2D u_depthTexture;
in vec2 v_textureCoordinates;
void main()
{
if (texture(u_depthTexture, v_textureCoordinates).r < 1.0)
{
#ifdef MRT
out_FragData_0 = u_bgColor;
out_FragData_1 = vec4(u_bgColor.a);
#else
out_FragColor = u_bgColor;
#endif
return;
}
discard;
}
`;var Jz=`/**
* Compositing for Weighted Blended Order-Independent Transparency. See:
* - http://jcgt.org/published/0002/02/09/
* - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html
*/
uniform sampler2D u_opaque;
uniform sampler2D u_accumulation;
uniform sampler2D u_revealage;
in vec2 v_textureCoordinates;
void main()
{
vec4 opaque = texture(u_opaque, v_textureCoordinates);
vec4 accum = texture(u_accumulation, v_textureCoordinates);
float r = texture(u_revealage, v_textureCoordinates).r;
#ifdef MRT
vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);
#else
vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r);
#endif
out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque;
if (opaque != czm_backgroundColor)
{
out_FragColor.a = 1.0;
}
}
`;function v_(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new _i({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new _i({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new _i({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new _i({createColorAttachments:!1}),this._opaqueClearCommand=new ai({color:new z(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new ai({color:new z(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new ai({color:new z(0,0,0,0),owner:this}),this._alphaClearCommand=new ai({color:new z(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new je,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function P0e(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function YX(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function O0e(e){P0e(e),YX(e)}function oht(e,t,n,i){P0e(e),e._accumulationTexture=new Rt({context:t,width:n,height:i,pixelFormat:nt.RGBA,pixelDatatype:Ke.FLOAT}),e._revealageTexture=new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:Ke.FLOAT,width:n,height:i,flipY:!1})}function rht(e,t){YX(e);let n=te.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(YX(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(O0e(e),e._translucentMultipassSupport=!1,i=!1)}return i}v_.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,oht(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!rht(this,e))return;this._useHDR=i;let f=this,h,p;l(this._compositeCommand)||(h=new Ue({sources:[Jz]}),this._translucentMRTSupport&&h.defines.push("MRT"),p={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new Ue({defines:["MRT"],sources:[pP]}),p={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})):this._translucentMultipassSupport&&(h=new Ue({sources:[pP]}),p={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}),p={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!je.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,je.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=je.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!je.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ve.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var sht={enabled:!0,color:new z(0,0,0,0),equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.ONE,functionDestinationRgb:Do.ONE,functionSourceAlpha:Do.ZERO,functionDestinationAlpha:Do.ONE_MINUS_SOURCE_ALPHA},aht={enabled:!0,color:new z(0,0,0,0),equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.ONE,functionDestinationRgb:Do.ONE,functionSourceAlpha:Do.ONE,functionDestinationAlpha:Do.ONE},cht={enabled:!0,color:new z(0,0,0,0),equationRgb:Xa.ADD,equationAlpha:Xa.ADD,functionSourceRgb:Do.ZERO,functionDestinationRgb:Do.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Do.ZERO,functionDestinationAlpha:Do.ONE_MINUS_SOURCE_ALPHA};function XX(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ve.getState(i);r.depthMask=!1,r.blending=t,o=Ve.fromCache(r),n[i.id]=o}return o}function lht(e,t,n){return XX(t,sht,e._translucentRenderStateCache,n)}function uht(e,t,n){return XX(t,aht,e._translucentRenderStateCache,n)}function fht(e,t,n){return XX(t,cht,e._alphaRenderStateCache,n)}var dht=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a;
float ai = czm_out_FragColor.a;
float wzi = czm_alphaWeight(ai);
out_FragData_0 = vec4(Ci * wzi, ai);
out_FragData_1 = vec4(ai * wzi);
`,hht=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a;
float ai = czm_out_FragColor.a;
float wzi = czm_alphaWeight(ai);
out_FragColor = vec4(Ci, ai) * wzi;
`,mht=` float ai = czm_out_FragColor.a;
out_FragColor = vec4(ai);
`;function KX(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return Ue.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor;
bool czm_discard = false;
`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]};
${u}`}return a.sources.push(u),a.sources.push(`void main()
{
czm_translucent_main();
if (czm_discard)
{
discard;
}
${i}}
`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function pht(e,t){return KX(e,t,"translucentMRT",dht)}function _ht(e,t){return KX(e,t,"translucentMultipass",hht)}function ght(e,t){return KX(e,t,"alphaMultipass",mht)}v_.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=Qe.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=pht(t,e.shaderProgram),n.translucentCommand.renderState=lht(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=Qe.shallowClone(e,n.translucentCommand),n.alphaCommand=Qe.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=_ht(t,e.shaderProgram),n.translucentCommand.renderState=uht(this,t,e.renderState),n.alphaCommand.shaderProgram=ght(t,e.shaderProgram),n.alphaCommand.renderState=fht(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function yht(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,p=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let x=o[m];x=c?x.derivedCommands.logDepth.command:x,x=f?x.derivedCommands.hdr.command:x;let b=p&&x.receiveShadows?x.derivedCommands.oit.shadows.translucentCommand:x.derivedCommands.oit.translucentCommand;n(b,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,x=p&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(x,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let x=o[m];x=c?x.derivedCommands.logDepth.command:x,x=f?x.derivedCommands.hdr.command:x;let b=p&&x.receiveShadows?x.derivedCommands.oit.shadows.alphaCommand:x.derivedCommands.oit.alphaCommand;n(b,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,x=p&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(x,t,i,g)}i.framebuffer=h}function xht(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,p=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let x=o[m];x=c?x.derivedCommands.logDepth.command:x,x=f?x.derivedCommands.hdr.command:x;let b=p&&x.receiveShadows?x.derivedCommands.oit.shadows.translucentCommand:x.derivedCommands.oit.translucentCommand;n(b,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,x=p&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(x,t,i,g)}i.framebuffer=h}v_.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){xht(this,e,t,n,i,o);return}yht(this,e,t,n,i,o)};v_.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};v_.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,z.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};v_.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};v_.prototype.isDestroyed=function(){return!1};v_.prototype.destroy=function(){return O0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var e4=v_;function _P(){this._framebuffer=new _i({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(_P.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function bht(e){e._framebuffer.destroy()}function Tht(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new Jc(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new je},o.viewport=new je,e._passState=o}_P.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Tht(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};_P.prototype.isDestroyed=function(){return!1};_P.prototype.destroy=function(){return bht(this),ue(this)};var t4=_P;function sS(e){let t=new Jc(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new je},t.viewport=new je,this._context=e,this._fb=new _i({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}sS.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return je.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var gP=new z;sS.prototype.end=function(e){let t=y(e.width,1),n=y(e.height,1),i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,p=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);gP.red=z.byteToFloat(o[m]),gP.green=z.byteToFloat(o[m+1]),gP.blue=z.byteToFloat(o[m+2]),gP.alpha=z.byteToFloat(o[m+3]);let x=i.getObjectByPickColor(gP);if(l(x))return x}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-p,p=m}u+=h,f+=p}};sS.prototype.readCenterPixel=function(e){let t=y(e.width,1),n=y(e.height,1),o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};sS.prototype.isDestroyed=function(){return!1};sS.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var n4=sS;function w_(){this._numSamples=1,this._colorFramebuffer=new _i({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new _i({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new z(0,0,0,0),this._clearCommand=new ai({color:new z(0,0,0,0),depth:1,owner:this})}function Cht(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(w_.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});w_.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT:Ke.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};w_.prototype.clear=function(e,t,n){z.clone(n,this._clearCommand.color),z.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};w_.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};w_.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};w_.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};w_.prototype.isDestroyed=function(){return!1};w_.prototype.destroy=function(){return Cht(this),ue(this)};var aS=w_;function Nb(){}Nb.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};Nb.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=Ue.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=Ue.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC;
void main()
{
czm_shadow_cast_main();
v_positionEC = (czm_inverseProjection * gl_Position).xyz;
}`)}return new Ue({defines:i,sources:o})};Nb.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=Ue.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=Ue.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC;
`),u+=`uniform vec4 shadowMap_lightPositionEC;
`),i?u+=`void main()
{
`:u+=`void main()
{
czm_shadow_cast_main();
if (out_FragColor.a == 0.0)
{
discard;
}
`,t?u+=` float distance = length(${s});
if (distance >= shadowMap_lightPositionEC.w)
{
discard;
}
distance /= shadowMap_lightPositionEC.w; // radius
out_FragColor = czm_packDepth(distance);
`:n?u+=` out_FragColor = vec4(1.0);
`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z);
`,u+=`}
`,r.push(u),new Ue({defines:o,sources:r})};Nb.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};Nb.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new Ue({defines:i,sources:o})};Nb.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=Ue.findNormalVarying(e),s=!i&&l(r)||i&&o,a=Ue.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,p=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,x=t.softShadows,b=h?t._pointBias:i?t._terrainBias:t._primitiveBias,T=e.defines.slice(0),C=e.sources.slice(0),A=C.length;for(let D=0;D<A;++D)C[D]=Ue.replaceMain(C[D],"czm_shadow_receive_main");h?T.push("USE_CUBE_MAP_SHADOW"):u&&T.push("USE_SHADOW_DEPTH_TEXTURE"),x&&!h&&T.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?T.push("ENABLE_VERTEX_LIGHTING"):T.push("ENABLE_DAYNIGHT_SHADING")),n&&b.normalShading&&s&&(T.push("USE_NORMAL_SHADING"),b.normalShadingSmooth>0&&T.push("USE_NORMAL_SHADING_SMOOTH"));let E="";h?E+=`uniform samplerCube shadowMap_textureCube;
`:E+=`uniform sampler2D shadowMap_texture;
`;let v;return c?v=` return vec4(${a}, 1.0);
`:v=`#ifndef LOG_DEPTH
return czm_windowToEyeCoordinates(gl_FragCoord);
#else
return vec4(v_logPositionEC, 1.0);
#endif
`,E+=`uniform mat4 shadowMap_matrix;
uniform vec3 shadowMap_lightDirectionEC;
uniform vec4 shadowMap_lightPositionEC;
uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;
uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;
#ifdef LOG_DEPTH
in vec3 v_logPositionEC;
#endif
vec4 getPositionEC()
{
${v}}
vec3 getNormalEC()
{
${s?` return normalize(${r});
`:` return vec3(1.0);
`}}
void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL)
{
${b.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x;
float normalOffsetScale = 1.0 - nDotL;
vec3 offset = normalOffset * normalOffsetScale * normalEC;
positionEC.xyz += offset;
`:""}}
`,E+=`void main()
{
czm_shadow_receive_main();
vec4 positionEC = getPositionEC();
vec3 normalEC = getNormalEC();
float depth = -positionEC.z;
`,E+=` czm_shadowParameters shadowParameters;
shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;
shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;
shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;
shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;
`,i?E+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0);
`:f||(E+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015);
`),h?E+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz;
float distance = length(directionEC);
directionEC = normalize(directionEC);
float radius = shadowMap_lightPositionEC.w;
// Stop early if the fragment is beyond the point light radius
if (distance > radius)
{
return;
}
vec3 directionWC = czm_inverseViewRotation * directionEC;
shadowParameters.depth = distance / radius;
shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);
shadowParameters.texCoords = directionWC;
float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters);
`:p?E+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);
float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);
applyNormalOffset(positionEC, normalEC, nDotL);
vec4 shadowPosition = shadowMap_matrix * positionEC;
// Spot light uses a perspective projection, so perform the perspective divide
shadowPosition /= shadowPosition.w;
// Stop early if the fragment is not in the shadow bounds
if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0))))
{
return;
}
shadowParameters.texCoords = shadowPosition.xy;
shadowParameters.depth = shadowPosition.z;
shadowParameters.nDotL = nDotL;
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
`:g?E+=` float maxDepth = shadowMap_cascadeSplits[1].w;
// Stop early if the eye depth exceeds the last cascade
if (depth > maxDepth)
{
return;
}
// Get the cascade based on the eye-space depth
vec4 weights = czm_cascadeWeights(depth);
// Apply normal offset
float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0);
applyNormalOffset(positionEC, normalEC, nDotL);
// Transform position into the cascade
vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC;
// Get visibility
shadowParameters.texCoords = shadowPosition.xy;
shadowParameters.depth = shadowPosition.z;
shadowParameters.nDotL = nDotL;
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
// Fade out shadows that are far away
float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z;
float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0);
visibility = mix(visibility, 1.0, fade);
${m?` // Draw cascade colors for debugging
out_FragColor *= czm_cascadeColor(weights);
`:""}`:E+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0);
applyNormalOffset(positionEC, normalEC, nDotL);
vec4 shadowPosition = shadowMap_matrix * positionEC;
// Stop early if the fragment is not in the shadow bounds
if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0))))
{
return;
}
shadowParameters.texCoords = shadowPosition.xy;
shadowParameters.depth = shadowPosition.z;
shadowParameters.nDotL = nDotL;
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
`,E+=` out_FragColor.rgb *= visibility;
}
`,C.push(E),new Ue({defines:T,sources:C})};var D_=Nb;function Xm(e){e=y(e,y.EMPTY_OBJECT);let t=e.context;this._enabled=y(e.enabled,!0),this._softShadows=y(e.softShadows,!1),this._normalOffset=y(e.normalOffset,!0),this.dirty=!0,this.fromLightSource=y(e.fromLightSource,!0),this.darkness=y(e.darkness,.3),this._darkness=this.darkness,this.fadingEnabled=y(e.fadingEnabled,!0),this.maximumDistance=y(e.maximumDistance,5e3),this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(Ht.isInternetExplorer()||Ht.isEdge()||(Ht.isChrome()||Ht.isFirefox())&&Ht.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n;let i=y(e.depthBiasStep,1);this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4*i},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5*i},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4*i},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new F,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new oe,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new i4,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new ce,this._isPointLight=y(e.isPointLight,!1),this._pointLightRadius=y(e.pointLightRadius,100),this._cascadesEnabled=this._isPointLight?!1:y(e.cascadesEnabled,!0),this._numberOfCascades=this._cascadesEnabled?y(e.numberOfCascades,4):0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new U,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new qr:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new oe,new oe],this._cascadeMatrices=[new F,new F,new F,new F],this._cascadeDistances=new oe;let o;this._isPointLight?o=6:this._cascadesEnabled?o=this._numberOfCascades:o=1,this._passes=new Array(o);for(let r=0;r<o;++r)this._passes[r]=new Aht(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,ZX(this),this._clearCommand=new ai({depth:1,color:new z}),this._clearPassState=new Jc(t),this._size=y(e.size,2048),this.size=this._size}Xm.MAXIMUM_DISTANCE=2e4;function Aht(e){this.camera=new i4,this.passState=new Jc(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function $X(e,t){return Ve.fromCache({cull:{enabled:!0,face:xi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function ZX(e){let t=!e._usesDepthTexture;e._primitiveRenderState=$X(t,e._primitiveBias),e._terrainRenderState=$X(t,e._terrainBias),e._pointRenderState=$X(t,e._pointBias)}Xm.prototype.debugCreateRenderStates=function(){ZX(this)};Object.defineProperties(Xm.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Iht(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function QX(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function Eht(e,t){let n=new gf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:vl.DEPTH_COMPONENT16}),i=new Rt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,sampler:Zt.NEAREST}),o=new Wr({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Sht(e,t){let n=new Rt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:nt.DEPTH_STENCIL,pixelDatatype:Ke.UNSIGNED_INT_24_8,sampler:Zt.NEAREST}),i=new Wr({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function vht(e,t){let n=new gf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:vl.DEPTH_COMPONENT16}),i=new Or({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,sampler:Zt.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new Wr({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function L0e(e,t){e._isPointLight?vht(e,t):e._usesDepthTexture?Sht(e,t):Eht(e,t)}function wht(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==te.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,ZX(e),QX(e),L0e(e,t))}function Dht(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(QX(e),L0e(e,t),wht(e,t),N0e(e,t))}function N0e(e,t,n){n=y(n,0),(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Iht(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=kt.maximumCubeMapSize>=t?t:kt.maximumCubeMapSize,o.x=t,o.y=t;let r=new je(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=kt.maximumTextureSize>=t?t:kt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new je(0,0,t,t)):i===4&&(t=kt.maximumTextureSize>=t*2?t:kt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new je(0,0,t,t),n[1].passState.viewport=new je(t,0,t,t),n[2].passState.viewport=new je(0,t,t,t),n[3].passState.viewport=new je(t,t,t,t));e._clearPassState.viewport=new je(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new F(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var Pht=new je;function Oht(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube;
in vec2 v_textureCoordinates;
void main()
{
vec2 uv = v_textureCoordinates;
vec3 dir;
if (uv.y < 0.5)
{
if (uv.x < 0.333)
{
dir.x = -1.0;
dir.y = uv.x * 6.0 - 1.0;
dir.z = uv.y * 4.0 - 1.0;
}
else if (uv.x < 0.666)
{
dir.y = -1.0;
dir.x = uv.x * 6.0 - 3.0;
dir.z = uv.y * 4.0 - 1.0;
}
else
{
dir.z = -1.0;
dir.x = uv.x * 6.0 - 5.0;
dir.y = uv.y * 4.0 - 1.0;
}
}
else
{
if (uv.x < 0.333)
{
dir.x = 1.0;
dir.y = uv.x * 6.0 - 1.0;
dir.z = uv.y * 4.0 - 3.0;
}
else if (uv.x < 0.666)
{
dir.y = 1.0;
dir.x = uv.x * 6.0 - 3.0;
dir.z = uv.y * 4.0 - 3.0;
}
else
{
dir.z = 1.0;
dir.x = uv.x * 6.0 - 5.0;
dir.y = uv.y * 4.0 - 3.0;
}
}
float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir));
out_FragColor = vec4(vec3(shadow), 1.0);
}
`:n=`uniform sampler2D shadowMap_texture;
in vec2 v_textureCoordinates;
void main()
{
${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r;
`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates));
`} out_FragColor = vec4(vec3(shadow), 1.0);
}
`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=ve.OVERLAY,i}function Rht(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Pht;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=Oht(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!je.equals(a.renderState.viewport,s))&&(a.renderState=Ve.fromCache({viewport:je.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var Km=new Array(8);Km[0]=new oe(-1,-1,-1,1);Km[1]=new oe(1,-1,-1,1);Km[2]=new oe(1,1,-1,1);Km[3]=new oe(-1,1,-1,1);Km[4]=new oe(-1,-1,1,1);Km[5]=new oe(1,-1,1,1);Km[6]=new oe(1,1,1,1);Km[7]=new oe(-1,1,1,1);var c0=new F,JX=new Array(8);for(let e=0;e<8;++e)JX[e]=new oe;function Mht(e,t){let n=new Dt({geometry:new Oh({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:Wt.fromColor(t)}}),i=new Dt({geometry:new oy({radius:.5}),attributes:{color:Wt.fromColor(t)}});return new Pn({geometryInstances:[n,i],appearance:new ln({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var Lht=[z.RED,z.GREEN,z.BLUE,z.MAGENTA],Nht=new d;function Fht(e,t){Rht(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new E_({camera:e._sceneCamera,color:z.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new E_({camera:e._shadowMapCamera,color:z.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new E_({camera:e._passes[i].camera,color:Lht[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,Nht),a=F.fromTranslationQuaternionRotationScale(i,o,s,c0);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=Mht(a,z.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new E_({camera:e._shadowMapCamera,color:z.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function i4(){this.viewMatrix=new F,this.inverseViewMatrix=new F,this.frustum=void 0,this.positionCartographic=new fe,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new F}i4.prototype.clone=function(e){F.clone(e.viewMatrix,this.viewMatrix),F.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),fe.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var Bht=new F(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);i4.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return F.multiply(t,e,this.viewProjectionMatrix),F.multiply(Bht,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var kht=new Array(5),Vht=new Pi,Uht=new Array(4),F0e=new d,B0e=new d;function zht(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let p=Uht,g=kht;for(g[0]=o,g[s]=r,a=0;a<s;++a){let N=(a+1)/s,_=o*Math.pow(u,N),S=o+c*N,w=P.lerp(S,_,f);g[a+1]=w,p[a]=w-g[a]}if(h){for(a=0;a<s;++a)p[a]=Math.min(p[a],e._maximumCascadeDistances[a]);let N=g[0];for(a=0;a<s-1;++a)N+=p[a],g[a+1]=N}oe.unpack(g,0,e._cascadeSplits[0]),oe.unpack(g,1,e._cascadeSplits[1]),oe.unpack(p,0,e._cascadeDistances);let m=n.frustum,x=m.left,b=m.right,T=m.bottom,C=m.top,A=m.near,E=m.far,v=n.positionWC,D=n.directionWC,R=n.upWC,O=i.frustum.clone(Vht),M=n.getViewProjection();for(a=0;a<s;++a){O.near=g[a],O.far=g[a+1];let N=F.multiply(O.projectionMatrix,i.viewMatrix,c0),_=F.inverse(N,c0),S=F.multiply(M,_,c0),w=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,F0e),I=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,B0e);for(let G=0;G<8;++G){let k=oe.clone(Km[G],JX[G]);F.multiplyByVector(S,k,k),d.divideByScalar(k,k.w,k),d.minimumByComponent(k,w,w),d.maximumByComponent(k,I,I)}w.x=Math.max(w.x,0),w.y=Math.max(w.y,0),w.z=0,I.x=Math.min(I.x,1),I.y=Math.min(I.y,1),I.z=Math.min(I.z,1);let L=e._passes[a],B=L.camera;B.clone(n);let H=B.frustum;H.left=x+w.x*(b-x),H.right=x+I.x*(b-x),H.bottom=T+w.y*(C-T),H.top=T+I.y*(C-T),H.near=A+w.z*(E-A),H.far=A+I.z*(E-A),L.cullingVolume=B.frustum.computeCullingVolume(v,D,R);let V=e._cascadeMatrices[a];F.multiply(B.getViewProjection(),i.inverseViewMatrix,V),F.multiply(L.textureOffsets,V,V)}}var Hht=new F,Ght=new d,Wht=new d,R0e=new d;function jht(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=F.multiply(i.frustum.projectionMatrix,i.viewMatrix,c0),r=F.inverse(o,c0),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,P.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,Ght);a=d.cross(c,s,Wht),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,R0e),f=F.computeView(u,s,a,c,Hht),h=F.multiply(f,r,c0),p=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,F0e),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,B0e);for(let E=0;E<8;++E){let v=oe.clone(Km[E],JX[E]);F.multiplyByVector(h,v,v),d.divideByScalar(v,v.w,v),d.minimumByComponent(v,p,p),d.maximumByComponent(v,g,g)}g.z+=1e3,p.z-=10;let m=R0e;m.x=-(.5*(p.x+g.x)),m.y=-(.5*(p.y+g.y)),m.z=-g.z;let x=F.fromTranslation(m,c0);f=F.multiply(x,f,f);let b=.5*(g.x-p.x),T=.5*(g.y-p.y),C=g.z-p.z,A=n.frustum;A.left=-b,A.right=b,A.bottom=-T,A.top=T,A.near=.01,A.far=C,F.clone(f,n.viewMatrix),F.inverse(f,n.inverseViewMatrix),F.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var qht=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],Yht=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],Xht=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function Kht(e,t){let n=new Pi;n.fov=P.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=qht[i],o.upWC=Yht[i],o.rightWC=Xht[i],F.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),F.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var $ht=new d,Zht=new d,k0e=new ce,M0e=k0e.center;function Qht(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=k0e;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,$ht),s=d.negate(i.directionWC,Zht),a=d.dot(r,s);if(e.fadingEnabled){let c=P.clamp(a/.1,0,1);e._darkness=P.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===jt.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ce.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,M0e),M0e);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===jt.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ce.clone(o,e._boundingSphere)}}function Jht(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;F.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),F.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=lo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,Qht(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}Xm.prototype.update=function(e){if(Jht(this,e),this._needsUpdate)if(Dht(this,e.context),this._isPointLight&&Kht(this,e),this._cascadesEnabled&&(jht(this,e),this._numberOfCascades>1&&zht(this,e)),this._isPointLight)this._shadowMapCullingVolume=As.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;F.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&Fht(this,e)};Xm.prototype.updatePass=function(e,t){N0e(this,e,t)};var emt=new U;function V0e(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=emt;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,oe.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return oe.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new oe,combinedUniforms2:new oe};return At(t,o,!1)}function tmt(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=Qe.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===ve.GLOBE,h=n.pass!==ve.TRANSLUCENT,p=e._isPointLight,g=e._usesDepthTexture,m=D_.getShadowCastShaderKeyword(p,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let b=u.vertexShaderSource,T=u.fragmentShaderSource,C=D_.createShadowCastVertexShader(b,p,f),A=D_.createShadowCastFragmentShader(T,p,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:C,fragmentShaderSource:A,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,p?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=He(a,!1),a.cull=He(a.cull,!1),a.cull.enabled=!1,a=Ve.fromCache(a)),c=V0e(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}Xm.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===ve.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,p;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,p=o.receiveCommand.uniformMap),o.receiveCommand=Qe.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let x=D_.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,x),!l(h)){let b=D_.createShadowReceiveVertexShader(a,u,f),T=D_.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,x,{vertexShaderSource:b,fragmentShaderSource:T,attributeLocations:s._attributeLocations})}p=V0e(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=p,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};Xm.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=tmt(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};Xm.prototype.isDestroyed=function(){return!1};Xm.prototype.destroy=function(){QX(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var l0=Xm;var o4=`uniform sampler2D u_opaqueDepthTexture;
uniform sampler2D u_translucentDepthTexture;
in vec2 v_textureCoordinates;
void main()
{
float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r;
float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r;
translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth);
out_FragColor = czm_packDepth(translucentDepth);
}
`;var cS=`uniform sampler2D colorTexture;
#ifdef DEBUG_SHOW_DEPTH
uniform sampler2D u_packedTranslucentDepth;
#endif
in vec2 v_textureCoordinates;
void main()
{
#ifdef DEBUG_SHOW_DEPTH
if (v_textureCoordinates.x < 0.5)
{
out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates)));
out_FragColor.a = 1.0;
}
#else
vec4 color = texture(colorTexture, v_textureCoordinates);
#ifdef PICK
if (color == vec4(0.0))
{
discard;
}
#else
// Reverse premultiplication process to get the correct composited result of the classification primitives
color.rgb /= color.a;
#endif
out_FragColor = color;
#endif
}
`;var nmt=!1;function u0(e){this._drawClassificationFBO=new _i({createDepthAttachments:!1}),this._accumulationFBO=new _i({createDepthAttachments:!1}),this._packFBO=new _i,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new ai({color:new z(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new ai({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new je,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(u0.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function U0e(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function z0e(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function imt(e,t,n,i){U0e(e),e._translucentDepthStencilTexture=new Rt({context:t,width:n,height:i,pixelFormat:nt.DEPTH_STENCIL,pixelDatatype:Ke.UNSIGNED_INT_24_8,sampler:Zt.NEAREST})}function omt(e,t,n,i){z0e(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function rmt(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(imt(e,t,o,r),omt(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new Ue({sources:[o4]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new Ue({sources:[cS]}),a={colorTexture:function(){return e._textureToComposite}},nmt&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,p=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new Ue({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=Qe.shallowClone(f);g.shaderProgram=p,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new Ue({sources:[cS]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new Ue({sources:[cS]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!je.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,je.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=je.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!je.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ve.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!je.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ve.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Hn.EQUAL,reference:Ut.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!je.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ve.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:fn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}u0.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){rmt(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};u0.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(ve.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[ve.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[ve.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};u0.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),smt(this,e,t)};function smt(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}u0.prototype.isSupported=function(){return this._supported};u0.prototype.isDestroyed=function(){return!1};u0.prototype.destroy=function(){return U0e(this),z0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var r4=u0;function amt(){this.command=void 0,this.near=void 0,this.far=void 0}function s4(e,t,n){let i=e.context,o;i.depthTexture&&(o=new Zz);let r;e._useOIT&&i.depthTexture&&(r=new e4(i));let s=new Jc(i);s.viewport=je.clone(n),this.camera=t,this._cameraClone=lo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new n4(i),this.pickDepthFramebuffer=new t4,this.sceneFramebuffer=new aS,this.globeDepth=o,this.globeTranslucencyFramebuffer=new Qz,this.oit=r,this.translucentTileClassification=new r4(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var eK=new d,tK=new d;function cmt(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,eK)),d.maximumComponent(d.abs(t.position,tK))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,eK),d.multiplyByScalar(t.position,o,tK),d.equalsEpsilon(eK,tK,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&F.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}s4.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return cmt(t,n,P.EPSILON15)?(this._cameraStartFired&&Ai()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Ai(),lo.clone(t,n),!0)};function lmt(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ne.SCENE2D,u=t.nearToFarDistance2D;i*=1+P.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n),isNaN(n)&&(n=r.frustum.near),isNaN(i)&&(i=r.frustum.far);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let p=0;p<f;++p){let g,m;c?(g=Math.min(i-u,n+p*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,p)*n),m=Math.min(i,a*g));let x=h[p];l(x)?(x.near=g,x.far=m):x=h[p]=new $z(g,m)}}function umt(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var H0e=new As,fmt=new qa;s4.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let M=0;M<f.length;++M)for(let N=0;N<ve.NUMBER_OF_PASSES;++N)f[M].indices[N]=0;c.length=0,u.length=0;let h=this._commandExtents,p=h.length,g=0,m=+Number.MAX_VALUE,x=-Number.MAX_VALUE,{shadowsEnabled:b}=o,T=+Number.MAX_VALUE,C=-Number.MAX_VALUE,A=Number.MAX_VALUE,E=t.mode===ne.SCENE3D?t.occluder:void 0,{cullingVolume:v}=t,D=H0e.planes;for(let M=0;M<5;++M)D[M]=v.planes[M];v=H0e;for(let M=0;M<i.length;++M){let N=i[M],{pass:_,boundingVolume:S}=N;if(_===ve.COMPUTE)c.push(N);else if(_===ve.OVERLAY)u.push(N);else{let w,I;if(l(S)){if(!e.isVisible(v,N,E))continue;let B=S.computePlaneDistances(r,s,fmt);if(w=B.start,I=B.stop,m=Math.min(m,w),x=Math.max(x,I),b&&N.receiveShadows&&w<l0.MAXIMUM_DISTANCE&&!(_===ve.GLOBE&&w<-100&&I>100)){let H=I-w;_!==ve.GLOBE&&w<100&&(A=Math.min(A,H)),T=Math.min(T,w),C=Math.max(C,I)}}else N instanceof ai?(w=a.near,I=a.far):(w=a.near,I=a.far,m=Math.min(m,w),x=Math.max(x,I));let L=h[g];l(L)||(L=h[g]=new amt),L.command=N,L.near=w,L.far=I,g++}}b&&(T=Math.min(Math.max(T,a.near),a.far),C=Math.max(Math.min(C,a.far),T),o.nearPlane=T,o.farPlane=C,o.closestObjectSize=A),lmt(this,e,m,x);for(let M=0;M<g;M++)umt(this,e,h[M]);if(g<p)for(let M=g;M<p;M++){let N=h[M];if(!l(N.command))break;N.command=void 0}let R=f.length,{frustumSplits:O}=t;O.length=R+1;for(let M=0;M<R;++M)O[M]=f[M].near,M===R-1&&(O[M+1]=f[M].far)};s4.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var lS=s4;var W0e=.1,dmt=new hh({pass:zo.MOST_DETAILED_PRELOAD}),hmt=new hh({pass:zo.MOST_DETAILED_PICK}),yP=new hh({pass:zo.PICK});function Zs(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new je(0,0,1,1),n=new lo(e);n.frustum=new an({width:W0e,aspectRatio:1,near:.1}),this._pickOffscreenView=new lS(e,n,t)}Zs.prototype.update=function(){this._pickPositionCacheDirty=!0};Zs.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new Kz,n[t]=i),i};var mmt=new qr,pmt=new d,a4=new d,_mt=new U,gmt=new F;function ymt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=F.clone(r.transform,gmt);r._setTransform(F.IDENTITY);let h=d.clone(r.position,pmt);d.multiplyByScalar(r.right,c,a4),d.add(a4,h,h),d.multiplyByScalar(r.up,u,a4),d.add(a4,h,h),r._setTransform(f),e.mode===ne.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let p=s.getPixelDimensions(o.width,o.height,1,1,_mt),g=mmt;return g.right=p.x*.5,g.left=-g.right,g.top=p.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var xmt=new Wl,bmt=new U;function Tmt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,p=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,bmt),x=m.x*n*.5,b=m.y*i*.5,T=xmt;return T.top=g+b,T.bottom=g-b,T.right=p+x,T.left=p-x,T.near=a,T.far=s.far,T.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function c4(e,t,n,i,o){let r=e.camera.frustum;return r instanceof an||r instanceof qr?ymt(e,t,n,i,o):Tmt(e,t,n,i,o)}var l4=new je(0,0,3,3),u4=new U,xP=new z(0,0,0,0);function nK(e,t,n,i,o){return o.width=y(n,3),o.height=y(i,o.width),o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}Zs.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=je.clone(a,u.viewport);let f=Wi.transformWindowToDrawingBuffer(e,t,u4),h=nK(o.drawingBufferHeight,f,n,i,l4);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=c4(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=yP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,xP),e.resolveFramebuffers(u);let p=c.end(h);return o.endFrame(),p};Zs.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=je.clone(a,u.viewport);let f=Wi.transformWindowToDrawingBuffer(e,t,u4),h=nK(o.drawingBufferHeight,f,n,i,l4);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=c4(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=yP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,xP),e.resolveFramebuffers(u);let p=c.readCenterPixel(h);return o.endFrame(),p};Zs.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=je.clone(s,c.viewport);let u=Wi.transformWindowToDrawingBuffer(e,t,u4),f=nK(i.drawingBufferHeight,u,1,1,l4);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=c4(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=yP,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,xP);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let p=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,Xz.decodeMetadataValues(n.classProperty,n.metadataProperty,p)};function Cmt(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=je.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=c4(e,t,1,1,s),o.tilesetPassState=yP,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,xP),e.resolveFramebuffers(c),i.endFrame()}var Amt=new Pi,Emt=new Wl,Smt=new an,vmt=new qr;Zs.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=Wi.transformWindowToDrawingBuffer(e,t,u4);e.pickTranslucentDepth?Cmt(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(Amt):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(Emt):l(s.frustum.width)?f=s.frustum.clone(Smt):f=s.frustum.clone(vmt);let{frustumCommandsList:h}=a,p=h.length;for(let g=0;g<p;++g){let x=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(x)&&x>0&&x<1){let b=h[g],T;return e.mode===ne.SCENE2D?(T=s.position.z,s.position.z=T-b.near+1,f.far=Math.max(1,b.far-b.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=b.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=b.far,c.updateFrustum(f)),n=Wi.drawingBufferToWorldCoordinates(e,u,x,n),e.mode===ne.SCENE2D&&(s.position.z=T,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var wmt=new fe;Zs.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ne.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,wmt);o.cartographicToCartesian(r,n)}return n};function j0e(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let p=u.primitive,g=!1;typeof p.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=p.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=gn.toValue(!1,i.show),s.push(i))),u instanceof sa&&(g=!0,u.show=!1,a.push(u)),g||(p.show=!1,r.push(p)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=gn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}Zs.prototype.drillPick=function(e,t,n,i,o){let r=this;return j0e(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var G0e=new d,Dmt=new d;function Imt(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function q0e(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,G0e),s=d.cross(o,r,G0e),a=d.cross(o,s,Dmt);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=y(n,W0e),i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function Pmt(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=q0e(e,o,r,a),u=dmt;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let p=0;p<h;++p){let g=s[p];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}Zs.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)Pmt(this,e,t[n])&&t.splice(n--,1)};function Y0e(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof Ll&&Y0e(o,t,n))}}function f4(e,t,n,i,o,r){let s=[];if(Y0e(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new Imt(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function Omt(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function Rmt(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,q0e(e,n,o,f.camera);let h=je.clone(f.viewport,l4),p=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=hmt:c.tilesetPassState=yP,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(p,xP),t.resolveFramebuffers(p);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:x}=f,b=x.length;for(let T=0;T<b;++T){let A=e.getPickDepth(t,T).getDepth(a,0,0);if(l(A)&&A>0&&A<1){let E=x[T],v=E.near*(T!==0?t.opaqueFrustumNearOffset:1),D=E.far,R=v+A*(D-v);g=pn.getPoint(n,R);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||Omt(m,i)}}function X0e(e,t,n,i,o,r,s,a){return j0e(i,function(){return Rmt(e,t,n,o,r,s,a)})}function uS(e,t,n,i,o,r,s){let a=X0e(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function K0e(e,t,n,i,o,r,s,a){return X0e(e,t,n,i,o,r,s,a)}function d4(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}Zs.prototype.pickFromRay=function(e,t,n,i){return uS(this,e,t,n,i,!1,!1)};Zs.prototype.drillPickFromRay=function(e,t,n,i,o){return K0e(this,e,t,n,i,o,!1,!1)};Zs.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=pn.clone(t),n=l(n)?n.slice():n,d4(e,f4(o,e,t,n,i,function(){return uS(o,e,t,n,i,!1,!0)}))};Zs.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=pn.clone(t),i=l(i)?i.slice():i,d4(e,f4(r,e,t,i,o,function(){return K0e(r,e,t,n,i,o,!1,!0)}))};var Mmt=new d,Lmt=new d,Nmt=new pn,$0e=new fe;function iK(e,t){let n=e.ellipsoid,i=di._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,Lmt),r=fe.toCartesian(t,n,Mmt),s=Nmt;s.origin=r,s.direction=o;let a=new pn;return pn.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function Z0e(e,t){let n=e.ellipsoid,i=fe.fromCartesian(t,n,$0e);return iK(e,i)}function Q0e(e,t){let n=e.ellipsoid;return fe.fromCartesian(t,n,$0e).height}function Fmt(e,t,n,i,o){let r=iK(t,n);return f4(e,t,r,i,o,function(){let s=uS(e,t,r,i,o,!0,!0);if(l(s))return Q0e(t,s.position)})}function Bmt(e,t,n,i,o,r){let s=Z0e(t,n);return f4(e,t,s,i,o,function(){let a=uS(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}Zs.prototype.sampleHeight=function(e,t,n,i){let o=iK(e,t),r=uS(this,e,o,n,i,!0,!1);if(l(r))return Q0e(e,r.position)};Zs.prototype.clampToHeight=function(e,t,n,i,o){let r=Z0e(e,t),s=uS(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};Zs.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=Fmt(this,e,t[s],n,i);return d4(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};Zs.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=Bmt(this,e,t[s],n,i,t[s]);return d4(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};Zs.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var h4=Zs;var m4=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
#ifdef AUTO_EXPOSURE
uniform sampler2D autoExposure;
#else
uniform float exposure;
#endif
void main()
{
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
vec3 color = fragmentColor.rgb;
#ifdef AUTO_EXPOSURE
color /= texture(autoExposure, vec2(0.5)).r;
#else
color *= vec3(exposure);
#endif
color = czm_acesTonemapping(color);
color = czm_inverseGamma(color);
out_FragColor = vec4(color, fragmentColor.a);
}
`;var p4=`precision highp float;
uniform sampler2D randomTexture;
uniform sampler2D depthTexture;
uniform float intensity;
uniform float bias;
uniform float lengthCap;
uniform int stepCount;
uniform int directionCount;
vec4 pixelToEye(vec2 screenCoordinate)
{
vec2 uv = screenCoordinate / czm_viewport.zw;
float depth = czm_readDepth(depthTexture, uv);
vec2 xy = 2.0 * uv - vec2(1.0);
vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0);
posEC = posEC / posEC.w;
// Avoid numerical error at far plane
if (depth >= 1.0) {
posEC.z = czm_currentFrustum.y;
}
return posEC;
}
// Reconstruct surface normal in eye coordinates, avoiding edges
vec3 getNormalXEdge(vec3 positionEC)
{
// Find the 3D surface positions at adjacent screen pixels
vec2 centerCoord = gl_FragCoord.xy;
vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz;
vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz;
vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz;
vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz;
// Compute potential tangent vectors
vec3 dx0 = positionEC - positionLeft;
vec3 dx1 = positionRight - positionEC;
vec3 dy0 = positionEC - positionDown;
vec3 dy1 = positionUp - positionEC;
// The shorter tangent is more likely to be on the same surface
vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1;
vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1;
return normalize(cross(dx, dy));
}
const float sqrtTwoPi = sqrt(czm_twoPi);
float gaussian(float x, float standardDeviation) {
float argument = x / standardDeviation;
return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation);
}
void main(void)
{
vec4 positionEC = pixelToEye(gl_FragCoord.xy);
// Exit if we are too close to the back of the frustum, where the depth value is invalid.
float maxValidDepth = czm_currentFrustum.y - lengthCap;
if (-positionEC.z > maxValidDepth)
{
out_FragColor = vec4(1.0);
return;
}
vec3 normalEC = getNormalXEdge(positionEC.xyz);
float gaussianVariance = lengthCap * sqrt(-positionEC.z);
// Choose a step length such that the marching stops just before 3 * variance.
float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0);
float metersPerPixel = czm_metersPerPixel(positionEC, 1.0);
// Minimum step is 1 pixel to avoid double sampling
float pixelsPerStep = max(stepLength / metersPerPixel, 1.0);
stepLength = pixelsPerStep * metersPerPixel;
float angleStepScale = 1.0 / float(directionCount);
float angleStep = angleStepScale * czm_twoPi;
float cosStep = cos(angleStep);
float sinStep = sin(angleStep);
mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep);
// Initial sampling direction (different for each pixel)
const float randomTextureSize = 255.0;
vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize);
float randomVal = texture(randomTexture, randomTexCoord).x;
vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal));
float ao = 0.0;
// Loop over sampling directions
#if __VERSION__ == 300
for (int i = 0; i < directionCount; i++)
{
#else
for (int i = 0; i < 16; i++)
{
if (i >= directionCount) {
break;
}
#endif
sampleDirection = rotateStep * sampleDirection;
float localAO = 0.0;
vec2 radialStep = pixelsPerStep * sampleDirection;
#if __VERSION__ == 300
for (int j = 0; j < stepCount; j++)
{
#else
for (int j = 0; j < 64; j++)
{
if (j >= stepCount) {
break;
}
#endif
// Step along sampling direction, away from output pixel
vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5);
// Exit if we stepped off the screen
if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) {
break;
}
// Compute step vector from output point to sampled point
vec4 samplePositionEC = pixelToEye(samplePixel);
vec3 stepVector = samplePositionEC.xyz - positionEC.xyz;
// Estimate the angle from the surface normal.
float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0);
dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0);
dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0);
// Weight contribution based on the distance from the output point
float sampleDistance = length(stepVector);
float weight = gaussian(sampleDistance, gaussianVariance);
localAO += weight * dotVal;
}
ao += localAO;
}
ao *= angleStepScale * stepLength;
ao = 1.0 - clamp(ao, 0.0, 1.0);
ao = pow(ao, intensity);
out_FragColor = vec4(vec3(ao), 1.0);
}
`;var _4=`uniform sampler2D colorTexture;
uniform sampler2D ambientOcclusionTexture;
uniform bool ambientOcclusionOnly;
in vec2 v_textureCoordinates;
void main(void)
{
vec4 color = texture(colorTexture, v_textureCoordinates);
vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates);
out_FragColor = ambientOcclusionOnly ? ao : ao * color;
}
`;var g4=`uniform sampler2D colorTexture;
uniform float gradations;
in vec2 v_textureCoordinates;
void main(void)
{
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
#ifdef CZM_SELECTED_FEATURE
if (czm_selected()) {
out_FragColor = vec4(rgb, 1.0);
return;
}
#endif
float luminance = czm_luminance(rgb);
float darkness = luminance * gradations;
darkness = (darkness - fract(darkness)) / gradations;
out_FragColor = vec4(vec3(darkness), 1.0);
}
`;var y4=`uniform sampler2D colorTexture;
uniform sampler2D bloomTexture;
uniform bool glowOnly;
in vec2 v_textureCoordinates;
void main(void)
{
vec4 color = texture(colorTexture, v_textureCoordinates);
#ifdef CZM_SELECTED_FEATURE
if (czm_selected()) {
out_FragColor = color;
return;
}
#endif
vec4 bloom = texture(bloomTexture, v_textureCoordinates);
out_FragColor = glowOnly ? bloom : bloom + color;
}
`;var x4=`uniform sampler2D colorTexture;
uniform float brightness;
in vec2 v_textureCoordinates;
void main(void)
{
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
vec3 target = vec3(0.0);
out_FragColor = vec4(mix(target, rgb, brightness), 1.0);
}
`;var b4=`uniform sampler2D colorTexture;
uniform float contrast;
uniform float brightness;
in vec2 v_textureCoordinates;
void main(void)
{
vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz;
sceneColor = czm_RGBToHSB(sceneColor);
sceneColor.z += brightness;
sceneColor = czm_HSBToRGB(sceneColor);
float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast));
sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5);
out_FragColor = vec4(sceneColor, 1.0);
}
`;var T4=`uniform sampler2D colorTexture;
uniform sampler2D blurTexture;
uniform sampler2D depthTexture;
uniform float focalDistance;
in vec2 v_textureCoordinates;
vec4 toEye(vec2 uv, float depth)
{
vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0));
vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);
posInCamera = posInCamera / posInCamera.w;
return posInCamera;
}
float computeDepthBlur(float depth)
{
float f;
if (depth < focalDistance)
{
f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x);
}
else
{
f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance);
f = pow(f, 0.1);
}
f *= f;
f = clamp(f, 0.0, 1.0);
return pow(f, 0.5);
}
void main(void)
{
float depth = czm_readDepth(depthTexture, v_textureCoordinates);
vec4 posInCamera = toEye(v_textureCoordinates, depth);
float d = computeDepthBlur(-posInCamera.z);
out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d);
}
`;var C4=`uniform sampler2D depthTexture;
in vec2 v_textureCoordinates;
void main(void)
{
float depth = czm_readDepth(depthTexture, v_textureCoordinates);
out_FragColor = vec4(vec3(depth), 1.0);
}
`;var A4=`uniform sampler2D depthTexture;
uniform float length;
uniform vec4 color;
in vec2 v_textureCoordinates;
void main(void)
{
float directions[3];
directions[0] = -1.0;
directions[1] = 0.0;
directions[2] = 1.0;
float scalars[3];
scalars[0] = 3.0;
scalars[1] = 10.0;
scalars[2] = 3.0;
float padx = czm_pixelRatio / czm_viewport.z;
float pady = czm_pixelRatio / czm_viewport.w;
#ifdef CZM_SELECTED_FEATURE
bool selected = false;
for (int i = 0; i < 3; ++i)
{
float dir = directions[i];
selected = selected || czm_selected(vec2(-padx, dir * pady));
selected = selected || czm_selected(vec2(padx, dir * pady));
selected = selected || czm_selected(vec2(dir * padx, -pady));
selected = selected || czm_selected(vec2(dir * padx, pady));
if (selected)
{
break;
}
}
if (!selected)
{
out_FragColor = vec4(color.rgb, 0.0);
return;
}
#endif
float horizEdge = 0.0;
float vertEdge = 0.0;
for (int i = 0; i < 3; ++i)
{
float dir = directions[i];
float scale = scalars[i];
horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale;
horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale;
vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale;
vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale;
}
float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge);
out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0);
}
`;var E4=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
#ifdef AUTO_EXPOSURE
uniform sampler2D autoExposure;
#else
uniform float exposure;
#endif
// See slides 142 and 143:
// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting
void main()
{
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
vec3 color = fragmentColor.rgb;
#ifdef AUTO_EXPOSURE
float exposure = texture(autoExposure, vec2(0.5)).r;
color /= exposure;
#else
color *= vec3(exposure);
#endif
const float A = 0.22; // shoulder strength
const float B = 0.30; // linear strength
const float C = 0.10; // linear angle
const float D = 0.20; // toe strength
const float E = 0.01; // toe numerator
const float F = 0.30; // toe denominator
const float white = 11.2; // linear white point value
vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F;
float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F;
c = czm_inverseGamma(c / w);
out_FragColor = vec4(c, fragmentColor.a);
}
`;var S4=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
#ifdef AUTO_EXPOSURE
uniform sampler2D autoExposure;
#else
uniform float exposure;
#endif
void main()
{
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
vec3 color = fragmentColor.rgb;
#ifdef AUTO_EXPOSURE
color /= texture(autoExposure, vec2(0.5)).r;
#else
color *= vec3(exposure);
#endif
color = czm_pbrNeutralTonemapping(color);
color = czm_inverseGamma(color);
out_FragColor = vec4(color, fragmentColor.a);
}
`;var v4=`in vec2 v_textureCoordinates;
uniform sampler2D colorTexture;
const float fxaaQualitySubpix = 0.5;
const float fxaaQualityEdgeThreshold = 0.125;
const float fxaaQualityEdgeThresholdMin = 0.0833;
void main()
{
vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw;
vec4 color = FxaaPixelShader(
v_textureCoordinates,
colorTexture,
fxaaQualityRcpFrame,
fxaaQualitySubpix,
fxaaQualityEdgeThreshold,
fxaaQualityEdgeThresholdMin);
float alpha = texture(colorTexture, v_textureCoordinates).a;
out_FragColor = vec4(color.rgb, alpha);
}
`;var Fb=`#define SAMPLES 8
uniform float delta;
uniform float sigma;
uniform float direction; // 0.0 for x direction, 1.0 for y direction
uniform sampler2D colorTexture;
#ifdef USE_STEP_SIZE
uniform float stepSize;
#else
uniform vec2 step;
#endif
in vec2 v_textureCoordinates;
// Incremental Computation of the Gaussian:
// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html
void main()
{
vec2 st = v_textureCoordinates;
vec2 dir = vec2(1.0 - direction, direction);
#ifdef USE_STEP_SIZE
vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw));
#else
vec2 step = step;
#endif
vec3 g;
g.x = 1.0 / (sqrt(czm_twoPi) * sigma);
g.y = exp((-0.5 * delta * delta) / (sigma * sigma));
g.z = g.y * g.y;
vec4 result = texture(colorTexture, st) * g.x;
for (int i = 1; i < SAMPLES; ++i)
{
g.xy *= g.yz;
vec2 offset = float(i) * dir * step;
result += texture(colorTexture, st - offset) * g.x;
result += texture(colorTexture, st + offset) * g.x;
}
out_FragColor = result;
}
`;var w4=`uniform sampler2D colorTexture;
uniform sampler2D dirtTexture;
uniform sampler2D starTexture;
uniform vec2 dirtTextureDimensions;
uniform float distortion;
uniform float ghostDispersal;
uniform float haloWidth;
uniform float dirtAmount;
uniform float earthRadius;
uniform float intensity;
in vec2 v_textureCoordinates;
// whether it is in space or not
// 6500000.0 is empirical value
#define DISTANCE_TO_SPACE 6500000.0
// return ndc from world coordinate biased earthRadius
vec4 getNDCFromWC(vec3 WC, float earthRadius)
{
vec4 positionEC = czm_view * vec4(WC, 1.0);
positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0);
vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0);
}
// Check if current pixel is included Earth
// if then mask it gradually
float isInEarth(vec2 texcoord, vec2 sceneSize)
{
vec2 NDC = texcoord * 2.0 - 1.0;
vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0);
vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5);
NDC.xy -= earthPosSC.xy;
float X = abs(NDC.x) * sceneSize.x;
float Y = abs(NDC.y) * sceneSize.y;
return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0));
}
// For Chromatic effect
vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace)
{
vec2 sceneSize = czm_viewport.zw;
vec3 color;
if(isSpace)
{
color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r;
color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g;
color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b;
}
else
{
color.r = texture(tex, texcoord + direction * distortion.r).r;
color.g = texture(tex, texcoord + direction * distortion.g).g;
color.b = texture(tex, texcoord + direction * distortion.b).b;
}
return vec4(clamp(color, 0.0, 1.0), 0.0);
}
void main(void)
{
vec4 originalColor = texture(colorTexture, v_textureCoordinates);
vec3 rgb = originalColor.rgb;
bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE;
// Sun position
vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0);
vec4 sunPositionEC = czm_view * sunPos;
vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC);
sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0);
// If sun is not in the screen space, use original color.
if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1)))
{
// Lens flare is disabled when not in space until #5932 is fixed.
// https://github.com/CesiumGS/cesium/issues/5932
out_FragColor = originalColor;
return;
}
vec2 texcoord = vec2(1.0) - v_textureCoordinates;
vec2 pixelSize = czm_pixelRatio / czm_viewport.zw;
vec2 invPixelSize = 1.0 / pixelSize;
vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion);
// ghost vector to image centre:
vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal;
vec3 direction = normalize(vec3(ghostVec, 0.0));
// sample ghosts:
vec4 result = vec4(0.0);
vec4 ghost = vec4(0.0);
for (int i = 0; i < 4; ++i)
{
vec2 offset = fract(texcoord + ghostVec * float(i));
// Only bright spots from the centre of the source image
ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace);
}
result += ghost;
// sample halo
vec2 haloVec = normalize(ghostVec) * haloWidth;
float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));
weightForHalo = pow(1.0 - weightForHalo, 5.0);
result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5;
// dirt on lens
vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions;
if (dirtTexCoords.x > 1.0)
{
dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x);
}
if (dirtTexCoords.y > 1.0)
{
dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y);
}
result += dirtAmount * texture(dirtTexture, dirtTexCoords);
// Rotating starburst texture's coordinate
// dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0))
float camrot = czm_view[0].z + czm_view[1].y;
float cosValue = cos(camrot);
float sinValue = sin(camrot);
mat3 rotation = mat3(
cosValue, -sinValue, 0.0,
sinValue, cosValue, 0.0,
0.0, 0.0, 1.0
);
vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0);
vec3 st2 = vec3((rotation * st1).xy, 1.0);
vec3 st3 = st2 * 0.5 + vec3(0.5);
vec2 lensStarTexcoord = st3.xy;
float weightForLensFlare = length(vec3(sunPos.xy, 0.0));
float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0);
if (!isSpace)
{
result *= oneMinusWeightForLensFlare * intensity * 0.2;
}
else
{
result *= oneMinusWeightForLensFlare * intensity;
result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0;
}
result += texture(colorTexture, v_textureCoordinates);
out_FragColor = result;
}
`;var D4=`uniform sampler2D colorTexture;
uniform vec3 white;
in vec2 v_textureCoordinates;
#ifdef AUTO_EXPOSURE
uniform sampler2D autoExposure;
#else
uniform float exposure;
#endif
// See equation 4:
// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
void main()
{
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
vec3 color = fragmentColor.rgb;
#ifdef AUTO_EXPOSURE
float exposure = texture(autoExposure, vec2(0.5)).r;
color /= exposure;
#else
color *= vec3(exposure);
#endif
color = (color * (1.0 + color / white)) / (1.0 + color);
color = czm_inverseGamma(color);
out_FragColor = vec4(color, fragmentColor.a);
}
`;var I4=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
float rand(vec2 co)
{
return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453);
}
void main(void)
{
float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1;
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
vec3 green = vec3(0.0, 1.0, 0.0);
out_FragColor = vec4((noiseValue + rgb) * green, 1.0);
}
`;var P4=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
#ifdef AUTO_EXPOSURE
uniform sampler2D autoExposure;
#else
uniform float exposure;
#endif
// See equation 3:
// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
void main()
{
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
vec3 color = fragmentColor.rgb;
#ifdef AUTO_EXPOSURE
float exposure = texture(autoExposure, vec2(0.5)).r;
color /= exposure;
#else
color *= vec3(exposure);
#endif
color = color / (1.0 + color);
color = czm_inverseGamma(color);
out_FragColor = vec4(color, fragmentColor.a);
}
`;var O4=`uniform sampler2D colorTexture;
uniform sampler2D silhouetteTexture;
in vec2 v_textureCoordinates;
void main(void)
{
vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates);
vec4 color = texture(colorTexture, v_textureCoordinates);
out_FragColor = mix(color, silhouetteColor, silhouetteColor.a);
}
`;/**
* @license
* Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of NVIDIA CORPORATION nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/var R4=`/**
* @license
* Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of NVIDIA CORPORATION nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples
// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h
// Steps used to integrate into Cesium:
// * The following defines are set:
// #define FXAA_PC 1
// #define FXAA_WEBGL_1 1
// #define FXAA_GREEN_AS_LUMA 1
// #define FXAA_EARLY_EXIT 1
// #define FXAA_GLSL_120 1
// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed.
// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace
// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/.
// * There are no implicit conversions from ivec* to vec* so replace:
// #define FxaaInt2 ivec2
// with
// #define FxaaInt2 vec2
// * The texture2DLod function is only available in vertex shaders so replace:
// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
// with
// #define FxaaTexTop(t, p) texture(t, p)
// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))
// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future.
// * The following parameters to FxaaPixelShader are unused and can be removed:
// fxaaConsolePosPos
// fxaaConsoleRcpFrameOpt
// fxaaConsoleRcpFrameOpt2
// fxaaConsole360RcpFrameOpt2
// fxaaConsoleEdgeSharpness
// fxaaConsoleEdgeThreshold
// fxaaConsoleEdgeThresholdMi
// fxaaConsole360ConstDir
//
// Choose the quality preset.
// This needs to be compiled into the shader as it effects code.
// Best option to include multiple presets is to
// in each shader define the preset, then include this file.
//
// OPTIONS
// -----------------------------------------------------------------------
// 10 to 15 - default medium dither (10=fastest, 15=highest quality)
// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
// 39 - no dither, very expensive
//
// NOTES
// -----------------------------------------------------------------------
// 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
// 13 = about same speed as FXAA 3.9 and better than 12
// 23 = closest to FXAA 3.9 visually and performance wise
// _ = the lowest digit is directly related to performance
// _ = the highest digit is directly related to style
//
//#define FXAA_QUALITY_PRESET 12
#if (FXAA_QUALITY_PRESET == 10)
#define FXAA_QUALITY_PS 3
#define FXAA_QUALITY_P0 1.5
#define FXAA_QUALITY_P1 3.0
#define FXAA_QUALITY_P2 12.0
#endif
#if (FXAA_QUALITY_PRESET == 11)
#define FXAA_QUALITY_PS 4
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 3.0
#define FXAA_QUALITY_P3 12.0
#endif
#if (FXAA_QUALITY_PRESET == 12)
#define FXAA_QUALITY_PS 5
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 4.0
#define FXAA_QUALITY_P4 12.0
#endif
#if (FXAA_QUALITY_PRESET == 13)
#define FXAA_QUALITY_PS 6
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 4.0
#define FXAA_QUALITY_P5 12.0
#endif
#if (FXAA_QUALITY_PRESET == 14)
#define FXAA_QUALITY_PS 7
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 4.0
#define FXAA_QUALITY_P6 12.0
#endif
#if (FXAA_QUALITY_PRESET == 15)
#define FXAA_QUALITY_PS 8
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 4.0
#define FXAA_QUALITY_P7 12.0
#endif
#if (FXAA_QUALITY_PRESET == 20)
#define FXAA_QUALITY_PS 3
#define FXAA_QUALITY_P0 1.5
#define FXAA_QUALITY_P1 2.0
#define FXAA_QUALITY_P2 8.0
#endif
#if (FXAA_QUALITY_PRESET == 21)
#define FXAA_QUALITY_PS 4
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 8.0
#endif
#if (FXAA_QUALITY_PRESET == 22)
#define FXAA_QUALITY_PS 5
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 8.0
#endif
#if (FXAA_QUALITY_PRESET == 23)
#define FXAA_QUALITY_PS 6
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 8.0
#endif
#if (FXAA_QUALITY_PRESET == 24)
#define FXAA_QUALITY_PS 7
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 3.0
#define FXAA_QUALITY_P6 8.0
#endif
#if (FXAA_QUALITY_PRESET == 25)
#define FXAA_QUALITY_PS 8
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 4.0
#define FXAA_QUALITY_P7 8.0
#endif
#if (FXAA_QUALITY_PRESET == 26)
#define FXAA_QUALITY_PS 9
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 4.0
#define FXAA_QUALITY_P8 8.0
#endif
#if (FXAA_QUALITY_PRESET == 27)
#define FXAA_QUALITY_PS 10
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 4.0
#define FXAA_QUALITY_P9 8.0
#endif
#if (FXAA_QUALITY_PRESET == 28)
#define FXAA_QUALITY_PS 11
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 4.0
#define FXAA_QUALITY_P10 8.0
#endif
#if (FXAA_QUALITY_PRESET == 29)
#define FXAA_QUALITY_PS 12
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 2.0
#define FXAA_QUALITY_P10 4.0
#define FXAA_QUALITY_P11 8.0
#endif
#if (FXAA_QUALITY_PRESET == 39)
#define FXAA_QUALITY_PS 12
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.0
#define FXAA_QUALITY_P2 1.0
#define FXAA_QUALITY_P3 1.0
#define FXAA_QUALITY_P4 1.0
#define FXAA_QUALITY_P5 1.5
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 2.0
#define FXAA_QUALITY_P10 4.0
#define FXAA_QUALITY_P11 8.0
#endif
#define FxaaBool bool
#define FxaaFloat float
#define FxaaFloat2 vec2
#define FxaaFloat3 vec3
#define FxaaFloat4 vec4
#define FxaaHalf float
#define FxaaHalf2 vec2
#define FxaaHalf3 vec3
#define FxaaHalf4 vec4
#define FxaaInt2 vec2
#define FxaaTex sampler2D
#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTexTop(t, p) texture(t, p)
#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
FxaaFloat4 FxaaPixelShader(
//
// Use noperspective interpolation here (turn off perspective interpolation).
// {xy} = center of pixel
FxaaFloat2 pos,
//
// Input color texture.
// {rgb_} = color in linear or perceptual color space
// if (FXAA_GREEN_AS_LUMA == 0)
// {___a} = luma in perceptual color space (not linear)
FxaaTex tex,
//
// Only used on FXAA Quality.
// This must be from a constant/uniform.
// {x_} = 1.0/screenWidthInPixels
// {_y} = 1.0/screenHeightInPixels
FxaaFloat2 fxaaQualityRcpFrame,
//
// Only used on FXAA Quality.
// This used to be the FXAA_QUALITY_SUBPIX define.
// It is here now to allow easier tuning.
// Choose the amount of sub-pixel aliasing removal.
// This can effect sharpness.
// 1.00 - upper limit (softer)
// 0.75 - default amount of filtering
// 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
// 0.25 - almost off
// 0.00 - completely off
FxaaFloat fxaaQualitySubpix,
//
// Only used on FXAA Quality.
// This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.
// It is here now to allow easier tuning.
// The minimum amount of local contrast required to apply algorithm.
// 0.333 - too little (faster)
// 0.250 - low quality
// 0.166 - default
// 0.125 - high quality
// 0.063 - overkill (slower)
FxaaFloat fxaaQualityEdgeThreshold,
//
// Only used on FXAA Quality.
// This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.
// It is here now to allow easier tuning.
// Trims the algorithm from processing darks.
// 0.0833 - upper limit (default, the start of visible unfiltered edges)
// 0.0625 - high quality (faster)
// 0.0312 - visible limit (slower)
// Special notes when using FXAA_GREEN_AS_LUMA,
// Likely want to set this to zero.
// As colors that are mostly not-green
// will appear very dark in the green channel!
// Tune by looking at mostly non-green content,
// then start at zero and increase until aliasing is a problem.
FxaaFloat fxaaQualityEdgeThresholdMin
) {
/*--------------------------------------------------------------------------*/
FxaaFloat2 posM;
posM.x = pos.x;
posM.y = pos.y;
FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
#define lumaM rgbyM.y
FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
/*--------------------------------------------------------------------------*/
FxaaFloat maxSM = max(lumaS, lumaM);
FxaaFloat minSM = min(lumaS, lumaM);
FxaaFloat maxESM = max(lumaE, maxSM);
FxaaFloat minESM = min(lumaE, minSM);
FxaaFloat maxWN = max(lumaN, lumaW);
FxaaFloat minWN = min(lumaN, lumaW);
FxaaFloat rangeMax = max(maxWN, maxESM);
FxaaFloat rangeMin = min(minWN, minESM);
FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
FxaaFloat range = rangeMax - rangeMin;
FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
FxaaBool earlyExit = range < rangeMaxClamped;
/*--------------------------------------------------------------------------*/
if(earlyExit)
return rgbyM;
/*--------------------------------------------------------------------------*/
FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
/*--------------------------------------------------------------------------*/
FxaaFloat lumaNS = lumaN + lumaS;
FxaaFloat lumaWE = lumaW + lumaE;
FxaaFloat subpixRcpRange = 1.0/range;
FxaaFloat subpixNSWE = lumaNS + lumaWE;
FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
/*--------------------------------------------------------------------------*/
FxaaFloat lumaNESE = lumaNE + lumaSE;
FxaaFloat lumaNWNE = lumaNW + lumaNE;
FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
/*--------------------------------------------------------------------------*/
FxaaFloat lumaNWSW = lumaNW + lumaSW;
FxaaFloat lumaSWSE = lumaSW + lumaSE;
FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
/*--------------------------------------------------------------------------*/
FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
FxaaBool horzSpan = edgeHorz >= edgeVert;
FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
/*--------------------------------------------------------------------------*/
if(!horzSpan) lumaN = lumaW;
if(!horzSpan) lumaS = lumaE;
if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
/*--------------------------------------------------------------------------*/
FxaaFloat gradientN = lumaN - lumaM;
FxaaFloat gradientS = lumaS - lumaM;
FxaaFloat lumaNN = lumaN + lumaM;
FxaaFloat lumaSS = lumaS + lumaM;
FxaaBool pairN = abs(gradientN) >= abs(gradientS);
FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
if(pairN) lengthSign = -lengthSign;
FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
/*--------------------------------------------------------------------------*/
FxaaFloat2 posB;
posB.x = posM.x;
posB.y = posM.y;
FxaaFloat2 offNP;
offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
if(!horzSpan) posB.x += lengthSign * 0.5;
if( horzSpan) posB.y += lengthSign * 0.5;
/*--------------------------------------------------------------------------*/
FxaaFloat2 posN;
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
FxaaFloat2 posP;
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
FxaaFloat subpixE = subpixC * subpixC;
FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
/*--------------------------------------------------------------------------*/
if(!pairN) lumaNN = lumaSS;
FxaaFloat gradientScaled = gradient * 1.0/4.0;
FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
FxaaFloat subpixF = subpixD * subpixE;
FxaaBool lumaMLTZero = lumaMM < 0.0;
/*--------------------------------------------------------------------------*/
lumaEndN -= lumaNN * 0.5;
lumaEndP -= lumaNN * 0.5;
FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
FxaaBool doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
/*--------------------------------------------------------------------------*/
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 3)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 4)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 5)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 6)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 7)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 8)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 9)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 10)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 11)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
/*--------------------------------------------------------------------------*/
#if (FXAA_QUALITY_PS > 12)
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
#endif
/*--------------------------------------------------------------------------*/
}
/*--------------------------------------------------------------------------*/
FxaaFloat dstN = posM.x - posN.x;
FxaaFloat dstP = posP.x - posM.x;
if(!horzSpan) dstN = posM.y - posN.y;
if(!horzSpan) dstP = posP.y - posM.y;
/*--------------------------------------------------------------------------*/
FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
FxaaFloat spanLength = (dstP + dstN);
FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
FxaaFloat spanLengthRcp = 1.0/spanLength;
/*--------------------------------------------------------------------------*/
FxaaBool directionN = dstN < dstP;
FxaaFloat dst = min(dstN, dstP);
FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
FxaaFloat subpixG = subpixF * subpixF;
FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
/*--------------------------------------------------------------------------*/
FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
}
`;function Bb(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new _i,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new U,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(Bb.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function J0e(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function kmt(e,t){J0e(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new _i,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function exe(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function Vmt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function Umt(e,t){let n=`uniform sampler2D colorTexture;
in vec2 v_textureCoordinates;
float sampleTexture(vec2 offset) {
`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset);
return czm_luminance(color.rgb);
`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r;
`,n+=`}
`,n+=`uniform vec2 colorTextureDimensions;
uniform vec2 minMaxLuminance;
uniform sampler2D previousLuminance;
void main() {
float color = 0.0;
float xStep = 1.0 / colorTextureDimensions.x;
float yStep = 1.0 / colorTextureDimensions.y;
int count = 0;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
vec2 offset;
offset.x = -xStep + float(i) * xStep;
offset.y = -yStep + float(j) * yStep;
if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) {
continue;
}
color += sampleTexture(offset);
++count;
}
}
if (count > 0) {
color /= float(count);
}
`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r;
color = clamp(color, minMaxLuminance.x, minMaxLuminance.y);
color = previous + (color - previous) / (60.0 * 1.5);
color = clamp(color, minMaxLuminance.x, minMaxLuminance.y);
`),n+=` out_FragColor = vec4(color);
}
`,n}function zmt(e,t){exe(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(Umt(r,i),{framebuffer:n[r].framebuffer,uniformMap:Vmt(e,r)});e._commands=o}Bb.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new ai({color:new z(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};Bb.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,kmt(this,e),zmt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};Bb.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};Bb.prototype.isDestroyed=function(){return!1};Bb.prototype.destroy=function(){return J0e(this),exe(this),ue(this)};var M4=Bb;var Hmt={NEAREST:0,LINEAR:1},Zf=Hmt;function kb(e){e=y(e,y.EMPTY_OBJECT);let{name:t=Yn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=Zf.NEAREST,pixelFormat:a=nt.RGBA,pixelDatatype:c=Ke.UNSIGNED_BYTE,clearColor:u=z.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new Jc;h.scissorTest={enabled:!0,rectangle:l(f)?je.clone(f):new je},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(kb.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var Gmt=/uniform\s+sampler2D\s+depthTexture/g;kb.prototype._isSupported=function(e){return!Gmt.test(this._fragmentShader)||e.depthTexture};function Wmt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Rt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Rt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function jmt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function qmt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function Ymt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=jmt(e,r),n[r]=Wmt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Rt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=qmt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=At(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function Xmt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE
uniform sampler2D czm_idTexture;
uniform sampler2D czm_selectedIdTexture;
uniform float czm_selectedIdTextureStep;
in vec2 v_textureCoordinates;
bool czm_selected(vec2 offset)
{
bool selected = false;
vec4 id = texture(czm_idTexture, v_textureCoordinates + offset);
for (int i = 0; i < ${t}; ++i)
{
vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5));
if (all(equal(id, selectedId)))
{
return true;
}
}
return false;
}
bool czm_selected()
{
return czm_selected(vec2(0.0));
}
${e}`}function Kmt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=Xmt(n,o)}let i=new Ue({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function $mt(e){let t=e._sampleMode,n,i;t===Zf.LINEAR?(n=$t.LINEAR,i=pi.LINEAR):(n=$t.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function Zmt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function Qmt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function Jmt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Rt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=Qmt(e,u);else if(typeof u=="string"){let h=new Ee({url:u});s.push(h.fetchImage().then(Zmt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function txe(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Rt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function ept(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function tpt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:Zt.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=z.floatToByte(h.red),r[o+1]=z.floatToByte(h.green),r[o+2]=z.floatToByte(h.blue),r[o+3]=z.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=z.floatToByte(c.red),r[o+1]=z.floatToByte(c.green),r[o+2]=z.floatToByte(c.blue),r[o+3]=z.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:Zt.NEAREST})}kb.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&txe(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=ept(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,tpt(this,e),Ymt(this),Jmt(this,e),Kmt(this,e),$mt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ve.fromCache({viewport:new je(0,0,i.width,i.height)}))),this._command.renderState=o};kb.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,Zt.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};kb.prototype.isDestroyed=function(){return!1};kb.prototype.destroy=function(){return txe(this),ue(this)};var _o=kb;function Vb(e){e=y(e,y.EMPTY_OBJECT),this._stages=e.stages,this._inputPreviousStageTexture=y(e.inputPreviousStageTexture,!0);let t=e.name;l(t)||(t=Yn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(Vb.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});Vb.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};Vb.prototype.get=function(e){return this._stages[e]};function npt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}Vb.prototype.update=function(e,t){this._selectedDirty=npt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};Vb.prototype.isDestroyed=function(){return!1};Vb.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Lu=Vb;var Er={};function oK(e){let o=`#define USE_STEP_SIZE
${Fb}`,r=new _o({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:Zf.LINEAR}),s=new _o({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:Zf.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new Lu({name:e,stages:[r,s],uniforms:a})}Er.createBlurStage=function(){return oK("czm_blur")};Er.createDepthOfFieldStage=function(){let e=oK("czm_depth_of_field_blur"),t=new _o({name:"czm_depth_of_field_composite",fragmentShader:T4,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new Lu({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Er.isDepthOfFieldSupported=function(e){return e.context.depthTexture};Er.createEdgeDetectionStage=function(){let e=Yn();return new _o({name:`czm_edge_detection_${e}`,fragmentShader:A4,uniforms:{length:.25,color:z.clone(z.BLACK)}})};Er.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function ipt(e){if(!l(e))return Er.createEdgeDetectionStage();let t=new Lu({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a};
`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates);
if (edge${a}.a > 0.0)
{
color = edge${a};
break;
}
`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates;
void main() {
vec4 color = vec4(0.0);
for (int i = 0; i < ${e.length}; i++)
{
${o} }
out_FragColor = color;
}
`,s=new _o({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new Lu({name:"czm_edge_detection_composite",stages:[t,s]})}Er.createSilhouetteStage=function(e){let t=ipt(e),n=new _o({name:"czm_silhouette_color_edges",fragmentShader:O4,uniforms:{silhouetteTexture:t.name}});return new Lu({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};Er.isSilhouetteSupported=function(e){return e.context.depthTexture};Er.createBloomStage=function(){let e=new _o({name:"czm_bloom_contrast_bias",fragmentShader:b4,uniforms:{contrast:128,brightness:-.3}}),t=oK("czm_bloom_blur"),n=new Lu({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new _o({name:"czm_bloom_generate_composite",fragmentShader:y4,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new Lu({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Er.createAmbientOcclusionStage=function(){let e=new _o({name:"czm_ambient_occlusion_generate",fragmentShader:p4,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new _o({name:"czm_ambient_occlusion_composite",fragmentShader:_4,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new Lu({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Er.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var opt=`#define FXAA_QUALITY_PRESET 39
${R4}
${v4}`;Er.createFXAAStage=function(){return new _o({name:"czm_FXAA",fragmentShader:opt,sampleMode:Zf.LINEAR})};Er.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
`:"";return t+=m4,new _o({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Er.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
`:"";return t+=E4,new _o({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Er.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
`:"";return t+=S4,new _o({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Er.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
`:"";return t+=P4,new _o({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Er.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
`:"";return t+=D4,new _o({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:z.WHITE,autoExposure:void 0,exposure:1}})};Er.createAutoExposureStage=function(){return new M4};Er.createBlackAndWhiteStage=function(){return new _o({name:"czm_black_and_white",fragmentShader:g4,uniforms:{gradations:5}})};Er.createBrightnessStage=function(){return new _o({name:"czm_brightness",fragmentShader:x4,uniforms:{brightness:.5}})};Er.createNightVisionStage=function(){return new _o({name:"czm_night_vision",fragmentShader:I4})};Er.createDepthViewStage=function(){return new _o({name:"czm_depth_view",fragmentShader:C4})};Er.createLensFlareStage=function(){return new _o({name:"czm_lens_flare",fragmentShader:w4,uniforms:{dirtTexture:nn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:nn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:ee.WGS84.maximumRadius}})};var Qf=Er;function I_(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function TP(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function rK(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[TP(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[TP(h)]=!0)}}}return i.name}function bP(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let p=i.get(h);l(p.length)?a=bP(e,t,n,p,o):a=rK(e,t,n,p,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=TP(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=TP(i.get(u));let h=n[f];for(let p=0;p<u;++p)h[TP(i.get(p))]=!0}return a}function rpt(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=bP(e,t,n,i,void 0);a=bP(e,t,n,o,a),a=rK(e,t,n,r,a),a=bP(e,t,n,e,a),rK(e,t,n,s,a)}else bP(e,t,n,e,void 0);return n}function spt(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,p=e._framebuffers,g=p.length;for(f=0;f<g;++f){if(h=p[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!z.equals(u,h.clearColor))continue;let m=h.stages,x=m.length,b=!1;for(let T=0;T<x;++T)if(n[m[T]]){b=!0;break}if(!b)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new _i({pixelFormat:a,pixelDatatype:c}),clear:void 0},p.push(h),h)}function apt(e,t){let n=rpt(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=spt(e,i,n[i]))}function sK(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function cpt(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(P.isPowerOfTwo(h)||(h=P.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new ai({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}I_.prototype.updateDependencies=function(){this._updateDependencies=!0};I_.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(sK(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&apt(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,sK(this),cpt(this,e))};I_.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};I_.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};I_.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};I_.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};I_.prototype.isDestroyed=function(){return!1};I_.prototype.destroy=function(){return sK(this),ue(this)};var fS=I_;var lpt={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var f0=Object.freeze(lpt);var aK=[];function il(){let e=Qf.createFXAAStage(),t=Qf.createAmbientOcclusionStage(),n=Qf.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Qf.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=f0.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new fS(this),r={},s=aK;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(il.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return cK(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case f0.REINHARD:n=Qf.createReinhardTonemappingStage(t);break;case f0.MODIFIED_REINHARD:n=Qf.createModifiedReinhardTonemappingStage(t);break;case f0.FILMIC:n=Qf.createFilmicTonemappingStage(t);break;case f0.PBR_NEUTRAL:n=Qf.createPbrNeutralTonemappingStage(t);break;default:n=Qf.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function cK(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}il.prototype.add=function(e){let t=this._stageNames,n=aK;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};il.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=aK;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};il.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};il.prototype.get=function(e){return cK(this),this._stages[e]};il.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};il.prototype.getStageByName=function(e){return this._stageNames[e]};il.prototype.update=function(e,t,n){cK(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let T=0;T<r.length;++T){let C=r[T];C.ready&&C.enabled&&C._isSupported(e)&&(o[s++]=C)}o.length=s;let a=s!==i.length;if(!a){for(let T=0;T<s;++T)if(o[T]!==i[T]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,p=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),x=h.enabled&&h._isSupported(e),b=p.enabled&&p._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||x!==this._tonemappingEnabled||b!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=x,this._fxaaEnabled=b,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let C=new Uint8Array(196608);for(let A=0;A<196608;A+=3)C[A]=Math.floor(Math.random()*255);this._randomTexture=new Rt({context:e,pixelFormat:nt.RGB,pixelDatatype:Ke.UNSIGNED_BYTE,source:{arrayBufferView:C,width:256,height:256},sampler:new Zt({wrapS:En.REPEAT,wrapT:En.REPEAT,minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),p.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let T=0;T<r.length;++T)r[T].update(e,t);s=0;for(let T=0;T<r.length;++T){let C=r[T];C.ready&&C.enabled&&C._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};il.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function Ub(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}il.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return Ub(t)};function $m(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){$m(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)$m(e.get(r),t,Ub(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)$m(e.get(r),t,n,i,o)}il.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),p=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),x=s.enabled&&s._isSupported(e);if(!x&&!h&&!p&&!m&&r===0)return;let b=t;h&&a.ready&&($m(a,e,b,n,i),b=Ub(a)),p&&c.ready&&($m(c,e,b,n,i),b=Ub(c)),g&&u.ready&&$m(u,e,b,n,i),m&&f.ready&&($m(f,e,b,n,i),b=Ub(f));let T=b;if(r>0){$m(o[0],e,b,n,i);for(let C=1;C<r;++C)$m(o[C],e,Ub(o[C-1]),n,i);T=Ub(o[r-1])}x&&s.ready&&$m(s,e,T,n,i)};il.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Mu,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};il.prototype.isDestroyed=function(){return!1};il.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var L4=il;var upt={SHIFT:0,CTRL:1,ALT:2},Aa=Object.freeze(upt);var fpt={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},bn=Object.freeze(fpt);function d0(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=(t.clientX-o.left)*(i.offsetWidth/o.width),n.y=(t.clientY-o.top)*(i.offsetHeight/o.height),n}function mK(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function zb(e){if(e.shiftKey)return Aa.SHIFT;if(e.ctrlKey)return Aa.CTRL;if(e.altKey)return Aa.ALT}var Ms={LEFT:0,MIDDLE:1,RIGHT:2};function Nu(e,t,n,i){function o(r){i(e,r)}Ht.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function dpt(e){let t=e._element,n=l(t.disableRootEvents)?t:document;Ht.supportsPointerEvents()?(Nu(e,"pointerdown",t,ypt),Nu(e,"pointerup",t,fxe),Nu(e,"pointermove",t,xpt),Nu(e,"pointercancel",t,fxe)):(Nu(e,"mousedown",t,dxe),Nu(e,"mouseup",n,hxe),Nu(e,"mousemove",n,mxe),Nu(e,"touchstart",t,_pt),Nu(e,"touchend",n,sxe),Nu(e,"touchmove",n,gpt),Nu(e,"touchcancel",n,sxe)),Nu(e,"dblclick",t,mpt);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",Nu(e,i,t,ppt)}function hpt(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var nxe={position:new U};function pK(e){e._lastSeenTouchEvent=Ai()}function _K(e){return Ai()-e._lastSeenTouchEvent>ph.mouseEmulationIgnoreMilliseconds}function hK(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function dxe(e,t){if(!_K(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===Ms.LEFT)i=bn.LEFT_DOWN;else if(n===Ms.MIDDLE)i=bn.MIDDLE_DOWN;else if(n===Ms.RIGHT)i=bn.RIGHT_DOWN;else return;let o=d0(e,t,e._primaryPosition);U.clone(o,e._primaryStartPosition),U.clone(o,e._primaryPreviousPosition);let r=zb(t),s=e.getInputAction(i,r);l(s)&&(U.clone(o,nxe.position),s(nxe),t.preventDefault())}var ixe={position:new U},oxe={position:new U};function lK(e,t,n,i){let o=zb(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=d0(e,i,e._primaryPosition);if(l(r)&&(U.clone(a,ixe.position),r(ixe)),l(s)){let c=e._primaryStartPosition;hK(c,a,e._clickPixelTolerance)&&(U.clone(a,oxe.position),s(oxe))}}}function hxe(e,t){if(!_K(e))return;let n=t.button;n!==Ms.LEFT&&n!==Ms.MIDDLE&&n!==Ms.RIGHT||(e._buttonDown[Ms.LEFT]&&(lK(e,bn.LEFT_UP,bn.LEFT_CLICK,t),e._buttonDown[Ms.LEFT]=!1),e._buttonDown[Ms.MIDDLE]&&(lK(e,bn.MIDDLE_UP,bn.MIDDLE_CLICK,t),e._buttonDown[Ms.MIDDLE]=!1),e._buttonDown[Ms.RIGHT]&&(lK(e,bn.RIGHT_UP,bn.RIGHT_CLICK,t),e._buttonDown[Ms.RIGHT]=!1))}var uK={startPosition:new U,endPosition:new U};function mxe(e,t){if(!_K(e))return;let n=zb(t),i=d0(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(bn.MOUSE_MOVE,n);l(r)&&(U.clone(o,uK.startPosition),U.clone(i,uK.endPosition),r(uK)),U.clone(i,o),(e._buttonDown[Ms.LEFT]||e._buttonDown[Ms.MIDDLE]||e._buttonDown[Ms.RIGHT])&&t.preventDefault()}var rxe={position:new U};function mpt(e,t){let n=t.button,i;if(n===Ms.LEFT)i=bn.LEFT_DOUBLE_CLICK;else return;let o=zb(t),r=e.getInputAction(i,o);l(r)&&(d0(e,t,rxe.position),r(rxe))}function ppt(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=zb(t),o=e.getInputAction(bn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function _pt(e,t){pK(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,d0(e,r,new U));N4(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,U.clone(a.get(s)))}function sxe(e,t){pK(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);N4(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var axe={position:new U},fK={position1:new U,position2:new U},cxe={position:new U},lxe={position:new U},uxe={position:new U};function N4(e,t){let n=zb(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[Ms.LEFT]){if(e._buttonDown[Ms.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(bn.LEFT_UP,n),l(r)&&(U.clone(e._primaryPosition,cxe.position),r(cxe)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(bn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];hK(c,u,e._clickPixelTolerance)&&(U.clone(e._primaryPosition,lxe.position),s(lxe))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(bn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];U.clone(c,e._primaryPosition),U.clone(c,e._primaryStartPosition),U.clone(c,e._primaryPreviousPosition),e._buttonDown[Ms.LEFT]=!0,r=e.getInputAction(bn.LEFT_DOWN,n),l(r)&&(U.clone(c,axe.position),r(axe)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(bn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];hK(u,f,e._holdPixelTolerance)&&(U.clone(e._primaryPosition,uxe.position),s(uxe))}},ph.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(bn.PINCH_START,n),l(r)&&(U.clone(i.values[0],fK.position1),U.clone(i.values[1],fK.position2),r(fK),t.preventDefault()))}function gpt(e,t){pK(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&d0(e,r,u)}pxe(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,U.clone(a.get(s),c.get(s))}var dK={startPosition:new U,endPosition:new U},CP={distance:{startPosition:new U,endPosition:new U},angleAndHeight:{startPosition:new U,endPosition:new U}};function pxe(e,t){let n=zb(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[Ms.LEFT]){let a=i.values[0];U.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(bn.MOUSE_MOVE,n),l(s)&&(U.clone(c,dK.startPosition),U.clone(a,dK.endPosition),s(dK)),U.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(bn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,p=c.y-a.y,g=Math.sqrt(h*h+p*p)*.25,m=f.x-u.x,x=f.y-u.y,b=Math.sqrt(m*m+x*x)*.25,T=(c.y+a.y)*.125,C=(f.y+u.y)*.125,A=Math.atan2(p,h),E=Math.atan2(x,m);U.fromElements(0,b,CP.distance.startPosition),U.fromElements(0,g,CP.distance.endPosition),U.fromElements(E,C,CP.angleAndHeight.startPosition),U.fromElements(A,T,CP.angleAndHeight.endPosition),s(CP)}}function ypt(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,d0(e,t,new U)),N4(e,t),e._previousPositions.set(i,U.clone(n.get(i)))}else dxe(e,t)}function fxe(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),N4(e,t),e._previousPositions.remove(i)}else hxe(e,t)}function xpt(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;d0(e,t,o),pxe(e,t);let r=e._previousPositions;U.clone(n.get(i),r.get(i))}else mxe(e,t)}function ph(e){this._inputEvents={},this._buttonDown={LEFT:!1,MIDDLE:!1,RIGHT:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-ph.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new U,this._primaryPosition=new U,this._primaryPreviousPosition=new U,this._positions=new wt,this._previousPositions=new wt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=y(e,document),dpt(this)}ph.prototype.setInputAction=function(e,t,n){let i=mK(t,n);this._inputEvents[i]=e};ph.prototype.getInputAction=function(e,t){let n=mK(e,t);return this._inputEvents[n]};ph.prototype.removeInputAction=function(e,t){let n=mK(e,t);delete this._inputEvents[n]};ph.prototype.isDestroyed=function(){return!1};ph.prototype.destroy=function(){return hpt(this),ue(this)};ph.mouseEmulationIgnoreMilliseconds=800;ph.touchHoldDelayMilliseconds=1500;var Jf=ph;function Hb(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}Hb.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};Hb.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof an,!(this._previousMode===ne.SCENE2D||this._previousMode===ne.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ne.SCENE2D,!0),n._mode=ne.MORPHING,n.camera._setTransform(F.IDENTITY),this._previousMode===ne.COLUMBUS_VIEW?Qpt(this,e):r_t(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var bpt=new d,Tpt=new d,Cpt=new d,Apt=new d,Ept=new d,Spt=new d,vpt=new d,wpt=new fe,Dpt=new F,Ipt=new Pi,Ppt=new an,Opt={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};Hb.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ne.COLUMBUS_VIEW||this._previousMode===ne.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ne.COLUMBUS_VIEW,!0),n.camera._setTransform(F.IDENTITY);let i=bpt,o=Tpt,r=Cpt;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ne.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,vpt),h=Mt.eastNorthUpToFixedFrame(f,t,Dpt);F.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,wpt),i),F.multiplyByPointAsVector(h,o,o),F.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=Ppt,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=Ipt,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=P.toRadians(60));let a=Opt;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=a_t(a);AP(this,c),this._previousMode===ne.SCENE2D?s_t(this,e,a,c):(a.position2D=F.multiplyByPoint(lo.TRANSFORM_2D,i,Apt),a.direction2D=F.multiplyByPointAsVector(lo.TRANSFORM_2D,o,Ept),a.up2D=F.multiplyByPointAsVector(lo.TRANSFORM_2D,r,Spt),n._mode=ne.MORPHING,vxe(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var xK={position:new d,direction:new d,up:new d,frustum:void 0},gxe=new Pi;Hb.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ne.SCENE3D||this._previousMode===ne.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ne.SCENE3D,!0),n._mode=ne.MORPHING,n.camera._setTransform(F.IDENTITY),this._previousMode===ne.SCENE2D)Hpt(this,e,t);else{let i;e>0?(i=xK,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=yxe(this,t);let o,r=n.camera;r.frustum instanceof an?o=r.frustum.clone():(o=gxe,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=P.toRadians(60)),i.frustum=o;let s=Dxe(i);AP(this,s),yK(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};Hb.prototype.isDestroyed=function(){return!1};Hb.prototype.destroy=function(){return F4(this),ue(this)};function AP(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Jf(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,bn.LEFT_DOWN),e._morphHandler.setInputAction(n,bn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,bn.RIGHT_DOWN),e._morphHandler.setInputAction(n,bn.WHEEL)}}function F4(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var Rpt=new fe,Mpt=new d,Lpt=new F;function yxe(e,t){let n=e._scene,i=n.camera,o=xK,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,Rpt);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,Mpt),f=Mt.eastNorthUpToFixedFrame(u,t,Lpt);return F.multiplyByPointAsVector(f,i.direction,s),F.multiplyByPointAsVector(f,i.up,a),o}var Npt=new d,Fpt=new d,Bpt=new d,kpt=new d,Vpt=new d,Upt=new d;function yK(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,Npt),a=d.clone(r.direction,Fpt),c=d.clone(r.up,Bpt),u=F.multiplyByPoint(lo.TRANSFORM_2D_INVERSE,n.position,kpt),f=F.multiplyByPointAsVector(lo.TRANSFORM_2D_INVERSE,n.direction,Vpt),h=F.multiplyByPointAsVector(lo.TRANSFORM_2D_INVERSE,n.up,Upt);function p(m){ed(s,u,m.time,r.position),ed(a,f,m.time,r.direction),ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){wxe(e,o,0,1,t,i)}});e._currentTweens.push(g)}var zpt=new an,xxe=new d,bxe=new d,Txe=new d,bK=new d,Cxe=new d,Axe=new d;function Hpt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=xK,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=yxe(e,n));let s;e._morphToOrthographic?(s=zpt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=gxe,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=P.toRadians(60)),r.frustum=s;let a=Dxe(r);AP(e,a);let c;e._morphToOrthographic?c=function(){yK(e,t,r,a)}:c=function(){Sxe(e,t,r,function(){yK(e,t,r,a)})},t>0?(i._mode=ne.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,bK),complete:function(){i._mode=ne.MORPHING,c()}})):c()}function ed(e,t,n,i){return d.lerp(e,t,n,i)}function Exe(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof an)return;let a=s.frustum.fov,c=P.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(p){s.frustum.fov=P.lerp(a,c,p.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var Gpt=new d,Wpt=new d,jpt=new d,gK=new d,qpt=new d,Ypt=new d,Xpt=new qr,Kpt=new pn,$pt=new d,Zpt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function Qpt(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,Gpt),r=d.clone(i.direction,Wpt),s=d.clone(i.up,jpt),a=d.negate(d.UNIT_Z,qpt),c=d.clone(d.UNIT_Y,Ypt),u=gK;if(t>0)d.clone(d.ZERO,gK),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,gK);let b=Kpt;F.multiplyByPoint(lo.TRANSFORM_2D,o,b.origin),F.multiplyByPointAsVector(lo.TRANSFORM_2D,r,b.direction);let T=n.globe;if(l(T)){let C=T.pickWorldCoordinates(b,n,!0,$pt);l(C)&&(F.multiplyByPoint(lo.TRANSFORM_2D_INVERSE,C,u),u.z+=d.distance(o,u))}}let f=Xpt;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=Zpt;h.position=u,h.direction=a,h.up=c,h.frustum=f;let p=Ixe(h);AP(e,p);function g(b){ed(o,u,b.time,i.position),ed(r,a,b.time,i.direction),ed(s,c,b.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(b,T){b.position.z=T}let x=n.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){Exe(e,t,h,m,p)}});e._currentTweens.push(x)}var _xe=new fe,Jpt={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new qr},e_t={position:new d,direction:new d,up:new d,frustum:void 0},t_t=new d,n_t=new pn,i_t=new F,o_t=new d;function r_t(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=Jpt;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,_xe),i.mapProjection.project(_xe,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=n_t;d.clone(r.position2D,h.origin);let p=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,o_t),m=Mt.eastNorthUpToFixedFrame(g,n,i_t);F.inverseTransformation(m,m),F.multiplyByPointAsVector(m,p,p),F.multiplyByPointAsVector(lo.TRANSFORM_2D,p,p);let x=i.globe;if(l(x)){let b=x.pickWorldCoordinates(h,i,!0,t_t);if(l(b)){let T=d.distance(r.position2D,b);b.x+=T,d.clone(b,r.position2D)}}}function s(h,p){h.position.x=p}F.multiplyByPoint(lo.TRANSFORM_2D,r.position,r.position2D),F.multiplyByPointAsVector(lo.TRANSFORM_2D,r.direction,r.direction2D),F.multiplyByPointAsVector(lo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=e_t;F.multiplyByPoint(lo.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=Ixe(c);AP(e,u);function f(){Exe(e,t,r,s,u)}vxe(e,t,r,f)}function Sxe(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=P.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(p){r.frustum.fov=P.lerp(c,a,p.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function s_t(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,bK),a=d.clone(n.direction,Cxe),c=d.clone(n.up,Axe);o._mode=ne.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,xxe),h=d.clone(r.direction,bxe),p=d.clone(r.up,Txe);f.z=s.z;function g(x){ed(f,s,x.time,r.position),ed(h,a,x.time,r.direction),ed(p,c,x.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():Sxe(e,0,n,u)}function vxe(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,xxe),a=d.clone(r.direction,bxe),c=d.clone(r.up,Txe),u=d.clone(n.position2D,bK),f=d.clone(n.direction2D,Cxe),h=d.clone(n.up2D,Axe);function p(m){ed(s,u,m.time,r.position),ed(a,f,m.time,r.direction),ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:Jr.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){wxe(e,o,1,0,t,i)}});e._currentTweens.push(g)}function wxe(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:Jr.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function Dxe(e){return function(t){let n=t._scene;n._mode=ne.SCENE3D,n.morphTime=ne.getMorphTime(ne.SCENE3D),F4(t);let i=n.camera;(t._previousMode!==ne.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ne.SCENE3D,r)}}function Ixe(e){return function(t){let n=t._scene;n._mode=ne.SCENE2D,n.morphTime=ne.getMorphTime(ne.SCENE2D),F4(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ne.SCENE2D,o)}}function a_t(e){return function(t){let n=t._scene;n._mode=ne.COLUMBUS_VIEW,n.morphTime=ne.getMorphTime(ne.COLUMBUS_VIEW),F4(t);let i=n.camera;(t._previousModeMode!==ne.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ne.COLUMBUS_VIEW,r)}}var B4=Hb;var c_t={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},Ui=Object.freeze(c_t);function Qs(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function l_t(e,t){U.clone(e.distance.startPosition,t.distance.startPosition),U.clone(e.distance.endPosition,t.distance.endPosition),U.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),U.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function Pxe(e,t,n){let i=Qs(Ui.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new U;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new U,endPosition:new U},u.angleAndHeight={startPosition:new U,endPosition:new U},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,U.lerp(f.position1,f.position2,.5,s[i])},bn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},bn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(l_t(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(U.clone(f.distance.endPosition,u.distance.endPosition),U.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,p=u.prevAngle,g=Math.PI*2;for(;h>=p+Math.PI;)h-=g;for(;h<p-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-p*n.clientWidth/12}},bn.PINCH_MOVE,t)}function Oxe(e,t){let n=Qs(Ui.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new U,endPosition:new U,valid:!1}),s.startPosition=new U,U.clone(U.ZERO,s.startPosition),s.endPosition=new U,e._eventHandler.setInputAction(function(c){let u=7.5*P.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,U.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},bn.WHEEL,t)}function dS(e,t,n){let i=Qs(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new U;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new U,endPosition:new U,valid:!1});let c,u;n===Ui.LEFT_DRAG?(c=bn.LEFT_DOWN,u=bn.LEFT_UP):n===Ui.RIGHT_DRAG?(c=bn.RIGHT_DOWN,u=bn.RIGHT_UP):n===Ui.MIDDLE_DRAG&&(c=bn.MIDDLE_DOWN,u=bn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,U.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){TK(Qs(n,void 0),e);for(let f of Object.values(Aa)){let h=Qs(n,f);TK(h,e)}},u,t)}function TK(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function Rxe(e,t){U.clone(e.startPosition,t.startPosition),U.clone(e.endPosition,t.endPosition)}function u_t(e,t,n){let i=n._isDown,o=!1,r=Qs(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,TK(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new U,endPosition:new U,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function Mxe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in Ui)if(Ui.hasOwnProperty(s)){let a=Ui[s];if(l(a)){let c=Qs(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new U,endPosition:new U,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new U,endPosition:new U})}}e._eventHandler.setInputAction(function(s){for(let a in Ui)if(Ui.hasOwnProperty(a)){let c=Ui[a];if(l(c)){let u=Qs(c,t);u_t(c,t,e),r[u]&&(n[u]?(Rxe(i[u],o[u]),o[u].valid=!0,Rxe(s,i[u]),n[u]=!1):U.clone(s.endPosition,i[u].endPosition))}}U.clone(s.endPosition,e._currentMousePosition)},bn.MOUSE_MOVE,t)}function td(e){this._eventHandler=new Jf(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new U,Oxe(this,void 0),Pxe(this,void 0,e),dS(this,void 0,Ui.LEFT_DRAG),dS(this,void 0,Ui.RIGHT_DRAG),dS(this,void 0,Ui.MIDDLE_DRAG),Mxe(this,void 0);for(let t in Aa)if(Aa.hasOwnProperty(t)){let n=Aa[t];l(n)&&(Oxe(this,n),Pxe(this,n,e),dS(this,n,Ui.LEFT_DRAG),dS(this,n,Ui.RIGHT_DRAG),dS(this,n,Ui.MIDDLE_DRAG),Mxe(this,n))}}Object.defineProperties(td.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[Qs(Ui.WHEEL)]||!this._update[Qs(Ui.WHEEL,Aa.SHIFT)]||!this._update[Qs(Ui.WHEEL,Aa.CTRL)]||!this._update[Qs(Ui.WHEEL,Aa.ALT)];return this._buttonsDown>0||e}}});td.prototype.isMoving=function(e,t){let n=Qs(e,t);return!this._update[n]};td.prototype.getMovement=function(e,t){let n=Qs(e,t);return this._movement[n]};td.prototype.getLastMovement=function(e,t){let n=Qs(e,t),i=this._lastMovement[n];if(i.valid)return i};td.prototype.isButtonDown=function(e,t){let n=Qs(e,t);return this._isDown[n]};td.prototype.getStartMousePosition=function(e,t){if(e===Ui.WHEEL)return this._currentMousePosition;let n=Qs(e,t);return this._eventStartPosition[n]};td.prototype.getButtonPressTime=function(e,t){let n=Qs(e,t);return this._pressTime[n]};td.prototype.getButtonReleaseTime=function(e,t){let n=Qs(e,t);return this._releaseTime[n]};td.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};td.prototype.isDestroyed=function(){return!1};td.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var k4=td;function V4(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=He(n),this._stopObject=He(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(V4.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});V4.prototype.cancelTween=function(){this._tweens.remove(this)};function _h(){this._tweens=[]}Object.defineProperties(_h.prototype,{length:{get:function(){return this._tweens.length}}});_h.prototype.add=function(e){if(e=y(e,y.EMPTY_OBJECT),e.duration===0)return l(e.complete)&&e.complete(),new V4(this);let t=e.duration/Xn.SECONDS_PER_MILLISECOND,n=y(e.delay,0),i=n/Xn.SECONDS_PER_MILLISECOND,o=y(e.easingFunction,Jr.LINEAR_NONE),r=e.startObject,s=new Qpe(r);s.to(He(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(y(e.complete,null)),s.repeat(y(e._repeat,0));let a=new V4(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};_h.prototype.addProperty=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:y(e.duration,3),delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};_h.prototype.addAlpha=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:y(e.startValue,0)},stopObject:{alpha:y(e.stopValue,1)},duration:y(e.duration,3),delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};_h.prototype.addOffsetIncrement=function(e){e=y(e,y.EMPTY_OBJECT);let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};_h.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};_h.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};_h.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};_h.prototype.get=function(e){return this._tweens[e]};_h.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/Xn.SECONDS_PER_MILLISECOND:Ai();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var hS=_h;function SP(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=Ui.LEFT_DRAG,this.zoomEventTypes=[Ui.RIGHT_DRAG,Ui.WHEEL,Ui.PINCH],this.rotateEventTypes=Ui.LEFT_DRAG,this.tiltEventTypes=[Ui.MIDDLE_DRAG,Ui.PINCH,{eventType:Ui.LEFT_DRAG,modifier:Aa.CTRL},{eventType:Ui.RIGHT_DRAG,modifier:Aa.CTRL}],this.lookEventTypes={eventType:Ui.LEFT_DRAG,modifier:Aa.SHIFT};let t=y(e.ellipsoid,ee.default);this.minimumPickingTerrainHeight=ee.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=ee.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=ee.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=ee.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new k4(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new hS,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new U(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new U(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new U,this._strafeEndMousePosition=new U,this._zoomMouseStart=new U(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new U,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new fe(Math.PI,P.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function f_t(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function d_t(e){return U.equalsEpsilon(e.startPosition,e.endPosition,P.EPSILON14)}var h_t=.4;function m_t(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new U,endPosition:new U,motion:new U,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,p=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<h_t){let g=f_t(p,i),m=e.getLastMovement(t,n);if(!l(m)||d_t(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=U.clone(m.startPosition,a.startPosition),a.endPosition=U.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=U.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||U.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let x=e.getStartMousePosition(t,n);o(r,x,a)}}}function p_t(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var Lxe=[];function ol(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(Lxe[0]=n,n=Lxe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,p=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(p?(i(e,g,p),p_t(e,r)):o<1&&m_t(s,f,h,o,i,e,r))}}var U4=new pn,__t=new d,g_t=new U,y_t=new d,x_t=new U,b_t=new d,T_t=new d,C_t=new d,A_t=new d,qxe=new d,E_t=new d,S_t=new d,v_t=new d,w_t=new d,D_t=new d,I_t=new d,P_t=new d,O_t=new d,R_t=new d,M_t=new d,Gb=new d,Nxe=new d,Fxe=new d,CK={orientation:new Wa};function PK(e,t,n,i,o,r){let s=1;l(r)&&(s=P.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,p=i*h;p=P.clamp(p,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=p*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let x=e._scene,b=x.camera,T=x.mode,C=CK.orientation;C.heading=b.heading,C.pitch=b.pitch,C.roll=b.roll;let A=y(n.inertiaEnabled,U.equals(t,e._zoomMouseStart)),E=e._zoomingOnVector,v=e._rotatingZoom,D;if(A||(e._zoomMouseStart=U.clone(t,e._zoomMouseStart),l(e._globe)&&T===ne.SCENE2D?(D=b.getPickRay(t,U4).origin,D=d.fromElements(D.y,D.z,D.x)):l(e._globe)&&(D=P_(e,t,__t)),l(D)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(D,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,E=e._zoomingOnVector=!1,v=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){b.zoomIn(m);return}let R=T===ne.COLUMBUS_VIEW;if(b.positionCartographic.height<2e6&&(v=!0),!A||v){if(T===ne.SCENE2D){let O=e._zoomWorldPosition,M=b.position;if(!d.equals(O,M)&&b.positionCartographic.height<e._maxCoord.x*2){let N=b.position.x,_=d.subtract(O,M,y_t);d.normalize(_,_);let S=d.distance(O,M)*m/(b.getMagnitude()*.5);b.move(_,S*.5),(b.position.x<0&&N>0||b.position.x>0&&N<0)&&(D=b.getPickRay(t,U4).origin,D=d.fromElements(D.y,D.z,D.x),e._zoomWorldPosition=d.clone(D,e._zoomWorldPosition))}}else if(T===ne.SCENE3D){let O=d.normalize(b.position,qxe);if(e._cameraUnderground||e._zoomingUnderground||b.positionCartographic.height<3e3&&Math.abs(d.dot(b.direction,O))<.6)R=!0;else{let M=x.canvas,N=x_t;N.x=M.clientWidth/2,N.y=M.clientHeight/2;let _=P_(e,N,b_t);if(!l(_))R=!0;else if(b.positionCartographic.height<1e6)if(d.dot(b.direction,O)>=-.5)R=!0;else{let S=S_t;d.clone(b.position,S);let w=e._zoomWorldPosition,I=E_t;if(I=d.normalize(w,I),d.dot(I,O)<0)return;let L=M_t,B=D_t;d.clone(b.direction,B),d.add(S,d.multiplyByScalar(B,1e3,Gb),L);let H=I_t,V=P_t;d.subtract(w,S,H),d.normalize(H,V);let G=d.dot(O,V);if(G>=0){e._zoomMouseStart.x=-1;return}let k=Math.acos(-G),W=d.magnitude(S),q=d.magnitude(w),J=W-m,j=d.magnitude(H),K=Math.asin(P.clamp(j/q*Math.sin(k),-1,1)),Q=Math.asin(P.clamp(J/q*Math.sin(k),-1,1)),he=K-Q+k,ye=v_t;d.normalize(S,ye);let re=w_t;re=d.cross(V,ye,re),re=d.normalize(re,re),d.normalize(d.cross(ye,re,Gb),B),d.multiplyByScalar(d.normalize(L,Gb),d.magnitude(L)-m,L),d.normalize(S,S),d.multiplyByScalar(S,J,S);let _e=O_t;d.multiplyByScalar(d.add(d.multiplyByScalar(ye,Math.cos(he)-1,Nxe),d.multiplyByScalar(B,Math.sin(he),Fxe),Gb),J,_e),d.add(S,_e,S),d.normalize(L,ye),d.normalize(d.cross(ye,re,Gb),B);let be=R_t;d.multiplyByScalar(d.add(d.multiplyByScalar(ye,Math.cos(he)-1,Nxe),d.multiplyByScalar(B,Math.sin(he),Fxe),Gb),d.magnitude(L),be),d.add(L,be,L),d.clone(S,b.position),d.normalize(d.subtract(L,S,Gb),b.direction),d.clone(b.direction,b.direction),d.cross(b.direction,b.up,b.right),d.cross(b.right,b.direction,b.up),b.setView(CK);return}else{let S=d.normalize(_,T_t),w=d.normalize(e._zoomWorldPosition,C_t),I=d.dot(w,S);if(I>0&&I<1){let L=P.acosClamped(I),B=d.cross(w,S,A_t),H=Math.abs(L)>P.toRadians(20)?b.positionCartographic.height*.75:b.positionCartographic.height-m,V=m/H;b.rotate(B,L*V)}}}}e._rotatingZoom=!R}if(!A&&R||E){let O,M=Wi.worldToWindowCoordinates(x,e._zoomWorldPosition,g_t);T!==ne.COLUMBUS_VIEW&&U.equals(t,e._zoomMouseStart)&&l(M)?O=b.getPickRay(M,U4):O=b.getPickRay(t,U4);let N=O.direction;(T===ne.COLUMBUS_VIEW||T===ne.SCENE2D)&&d.fromElements(N.y,N.z,N.x,N),b.move(N,m),e._zoomingOnVector=!0}else b.zoomIn(m);e._cameraUnderground||b.setView(CK)}var L_t=new pn,N_t=new pn,F_t=new d;function B_t(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,L_t).origin,s=o.getPickRay(n.endPosition,N_t).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,F_t),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function Bxe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;PK(e,t,n,e.zoomFactor,o.getMagnitude())}var k_t=new U,V_t=new U;function kxe(e,t,n){if(l(n.angleAndHeight)){U_t(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=k_t;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=U.normalize(c,c);let u=V_t;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=U.normalize(u,u);let f=P.acosClamped(c.x);c.y<0&&(f=P.TWO_PI-f);let h=P.acosClamped(u.x);u.y<0&&(h=P.TWO_PI-h);let p=h-f;o.twistRight(p)}function U_t(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function z_t(e){let t=e._scene.mapMode2D===Ru.ROTATE;F.equals(F.IDENTITY,e._scene.camera.transform)?(ol(e,e.enableTranslate,e.translateEventTypes,B_t,e.inertiaTranslate,"_lastInertiaTranslateMovement"),ol(e,e.enableZoom,e.zoomEventTypes,Bxe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&ol(e,e.enableRotate,e.tiltEventTypes,kxe,e.inertiaSpin,"_lastInertiaTiltMovement")):(ol(e,e.enableZoom,e.zoomEventTypes,Bxe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&ol(e,e.enableRotate,e.translateEventTypes,kxe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var Yxe=new pn,H_t=new d,G_t=new d;function P_(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,H_t)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,Yxe),u=o.pickWorldCoordinates(c,i,a,G_t),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var W_t=new fe;function Y4(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ne.SCENE3D){let c=t.cartesianToCartographic(i.position,W_t);l(c)&&(r=c.height)}else r=i.position.z;let s=y(e._scene.globeHeight,0);return Math.abs(s-r)}var j_t=new d;function Xxe(e,t){let n=t.origin,i=t.direction,o=Y4(e),r=d.normalize(n,j_t),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function Kxe(e,t,n,i){let o=d.distance(t.origin,n),r=Y4(e),s=P.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),pn.getPoint(t,o,i)}function $xe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=Y4(e))):o=Y4(e),pn.getPoint(t,o,i)}var q_t=new U;function Zxe(e,t){let n=t.endPosition,i=U.subtract(t.endPosition,t.startPosition,q_t),o=e._strafeEndMousePosition;U.add(o,i,o),t.endPosition=o,OK(e,t,e._strafeStartPosition),t.endPosition=n}var Vxe=new pn,Y_t=new pn,AK=new d,X_t=new d,K_t=new d,$_t=new d,Z_t=new sn(d.UNIT_X,0),Q_t=new U,J_t=new U;function egt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){Bu(e,t,n);return}if(e._strafing){Zxe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=U.clone(n.startPosition,Q_t),a=U.clone(n.endPosition,J_t),c=o.getPickRay(s,Vxe),u=d.clone(d.ZERO,$_t),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=P_(e,s,AK),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let A=h;r&&(A=$xe(e,c,h,AK)),U.clone(t,e._strafeMousePosition),U.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,OK(e,n,e._strafeStartPosition);return}let p=sn.fromPointNormal(u,f,Z_t);c=o.getPickRay(s,Vxe);let g=ti.rayPlane(c,p,AK),m=o.getPickRay(a,Y_t),x=ti.rayPlane(m,p,X_t);if(!l(g)||!l(x)){e._looking=!0,Bu(e,t,n),U.clone(t,e._translateMousePosition);return}let b=d.subtract(g,x,K_t),T=b.x;b.x=b.y,b.y=b.z,b.z=T;let C=d.magnitude(b);C>P.EPSILON6&&(d.normalize(b,b),o.move(b,C))}var Qxe=new U,G4=new pn,W4=new d,tgt=new d,Jxe=new F,ngt=new F,igt=new d,ogt=new sn(d.UNIT_X,0),EK=new d,wK=new fe,ebe=new F,rgt=new Le,sgt=new Z,j4=new d;function agt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){Bu(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,cgt(e,t,n)):lgt(e,t,n)}function cgt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=Qxe;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,G4),c=d.UNIT_X,u=a.origin,f=a.direction,h,p=d.dot(c,f);if(Math.abs(p)>P.EPSILON6&&(h=-d.dot(c,u)/p),!l(h)||h<=0){e._looking=!0,Bu(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,W4);d.add(u,g,g);let m=i.mapProjection,x=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let b=m.unproject(g,wK);x.cartographicToCartesian(b,g);let T=Mt.eastNorthUpToFixedFrame(g,x,Jxe),C=e._globe,A=e._ellipsoid;e._globe=void 0,e._ellipsoid=ee.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let E=F.clone(o.transform,ebe);o._setTransform(T),Fu(e,t,n,d.UNIT_Z),o._setTransform(E),e._globe=C,e._ellipsoid=A;let v=A.maximumRadius;e._rotateFactor=1/v,e._rotateRateRangeAdjustment=v}function lgt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(U.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,W4);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=P_(e,t,W4)),!l(s)){a=o.getPickRay(t,G4);let _=a.origin,S=a.direction,w,I=d.dot(c,S);if(Math.abs(I)>P.EPSILON6&&(w=-d.dot(c,_)/I),!l(w)||w<=0){e._looking=!0,Bu(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(S,w,W4),d.add(_,s,s)}r&&(l(a)||(a=o.getPickRay(t,G4)),Kxe(e,a,s,s)),U.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=Qxe;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,G4);let h=d.clone(d.ZERO,igt);h.x=s.x;let p=sn.fromPointNormal(h,c,ogt),g=ti.rayPlane(a,p,tgt),m=o._projection,x=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let b=m.unproject(s,wK);x.cartographicToCartesian(b,s);let T=Mt.eastNorthUpToFixedFrame(s,x,Jxe),C;l(g)?(d.fromElements(g.y,g.z,g.x,g),b=m.unproject(g,wK),x.cartographicToCartesian(b,g),C=Mt.eastNorthUpToFixedFrame(g,x,ngt)):C=T;let A=e._globe,E=e._ellipsoid;e._globe=void 0,e._ellipsoid=ee.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let v=d.UNIT_Z,D=F.clone(o.transform,ebe);o._setTransform(T);let R=d.cross(d.UNIT_Z,d.normalize(o.position,EK),EK),O=d.dot(o.right,R);if(Fu(e,t,n,v,!1,!0),o._setTransform(C),O<0){let _=n.startPosition.y-n.endPosition.y;(r&&_<0||!r&&_>0)&&(v=void 0);let S=o.constrainedAxis;o.constrainedAxis=void 0,Fu(e,t,n,v,!0,!1),o.constrainedAxis=S}else Fu(e,t,n,v,!0,!1);if(l(o.constrainedAxis)){let _=d.cross(o.direction,o.constrainedAxis,j4);d.equalsEpsilon(_,d.ZERO,P.EPSILON6)||(d.dot(_,o.right)<0&&d.negate(_,_),d.cross(_,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(D),e._globe=A,e._ellipsoid=E;let M=E.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let N=d.clone(o.positionWC,EK);if(e.enableCollisionDetection&&LK(e,!0),!d.equals(o.positionWC,N)){o._setTransform(C),o.worldToCameraCoordinatesPoint(N,N);let _=d.magnitudeSquared(N);d.magnitudeSquared(o.position)>_&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(_),o.position));let S=d.angleBetween(N,o.position),w=d.cross(N,o.position,N);d.normalize(w,w);let I=Le.fromAxisAngle(w,S,rgt),L=Z.fromQuaternion(I,sgt);Z.multiplyByVector(L,o.direction,o.direction),Z.multiplyByVector(L,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(D)}}var tbe=new U,nbe=new pn,ibe=new d;function ugt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=tbe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,nbe),u=c.origin,f=c.direction,h=o.position.z,p;h<e._minimumPickingTerrainHeight&&(p=P_(e,a,ibe));let g;if(l(p)&&(g=d.distance(u,p)),s){let m=Xxe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}PK(e,t,n,e.zoomFactor,g)}function fgt(e){let n=e._scene.camera;if(!F.equals(F.IDENTITY,n.transform))ol(e,e.enableRotate,e.rotateEventTypes,Fu,e.inertiaSpin,"_lastInertiaSpinMovement"),ol(e,e.enableZoom,e.zoomEventTypes,rbe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),ol(e,e.enableTilt,e.tiltEventTypes,agt,e.inertiaSpin,"_lastInertiaTiltMovement"),ol(e,e.enableTranslate,e.translateEventTypes,egt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),ol(e,e.enableZoom,e.zoomEventTypes,ugt,e.inertiaZoom,"_lastInertiaZoomMovement"),ol(e,e.enableLook,e.lookEventTypes,Bu),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var dgt=new pn,hgt=new sn(d.UNIT_X,0),mgt=new d,pgt=new d;function OK(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,dgt),s=d.clone(o.direction,pgt);i.mode===ne.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=sn.fromPointNormal(n,s,hgt),c=ti.rayPlane(r,a,mgt);l(c)&&(s=d.subtract(n,c,s),i.mode===ne.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var Uxe=new d,obe=new fe,DK=new d,IK=new ee,_gt=new d,ggt=new d,ygt=new d;function xgt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!F.equals(o.transform,F.IDENTITY)){Fu(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,_gt);if(U.equals(t,e._rotateMousePosition)){if(e._looking)Bu(e,t,n,u);else if(e._rotating)Fu(e,t,n);else if(e._strafing)Zxe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=DK,c.x=c.y=c.z=a,s=ee.fromCartesian3(c,IK),vK(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,obe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let p=P_(e,n.startPosition,ygt);if(l(p)){let g=!1,m=o.getPickRay(n.startPosition,Yxe);if(r)g=!0,$xe(e,m,p,p);else{let x=s.geodeticSurfaceNormal(p,ggt);Math.abs(d.dot(m.direction,x))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(p)}g?(U.clone(t,e._strafeEndMousePosition),d.clone(p,e._strafeStartPosition),e._strafing=!0,OK(e,n,e._strafeStartPosition)):(a=d.magnitude(p),c=DK,c.x=c.y=c.z=a,s=ee.fromCartesian3(c,IK),vK(e,t,n,s),d.clone(p,e._rotateStartPosition))}else e._looking=!0,Bu(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,Uxe))?(vK(e,t,n,e._ellipsoid),d.clone(Uxe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,Fu(e,t,n)):(e._looking=!0,Bu(e,t,n,u));U.clone(t,e._rotateMousePosition)}function Fu(e,t,n,i,o,r){o=y(o,!1),r=y(r,!1);let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let p=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;p=Math.min(p,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*p*Math.PI*2,x=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let b=e.maximumTiltAngle,T=d.dot(a.direction,i),C=Math.PI-Math.acos(T)+x;C>b&&(x-=C-b)}o||a.rotateRight(m),r||a.rotateUp(x),a.constrainedAxis=u}var SK=oe.clone(oe.UNIT_W),zxe=oe.clone(oe.UNIT_W),z4=new d,mS=new d,H4=new d,Hxe=new d,bgt=new U,Tgt=new U,Cgt=new U,Agt=new U,Egt=new pn;function vK(e,t,n,i){let o=e._scene,r=o.camera,s=U.clone(n.startPosition,bgt),a=U.clone(n.endPosition,Tgt),c=i.cartesianToCartographic(r.positionWC,obe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,SK),!l(e._globe)&&!U.equalsEpsilon(s,e._panLastMousePosition)&&(u=P_(e,s,SK)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,mS),p=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),mS),g=d.magnitude(p),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,Agt),x=U.subtract(a,s,Cgt),b=d.multiplyByScalar(r.rightWC,x.x*m.x,mS),T=d.normalize(r.positionWC,qxe),C=r.getPickRay(a,Egt).direction,A=d.subtract(C,d.projectVector(C,r.rightWC,H4),H4),E=d.angleBetween(A,r.directionWC),v=1;l(r.frustum.fov)&&(v=Math.max(Math.tan(E),.1));let D=Math.abs(d.dot(r.directionWC,T)),R=-x.y*m.y*2/Math.sqrt(v)*(1-D),O=d.multiplyByScalar(C,R,H4);D=Math.abs(d.dot(r.upWC,T));let M=d.multiplyByScalar(r.upWC,-x.y*(1-D)*m.y,Hxe);f=d.add(u,b,zxe),f=d.add(f,O,f),f=d.add(f,M,f),d.clone(f,e._panLastWorldPosition),U.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,SK),f=r.pickEllipsoid(a,i,zxe)),!l(u)||!l(f)){e._rotating=!0,Fu(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,p=d.mostOrthogonalAxis(h,z4);d.cross(p,h,p),d.normalize(p,p);let g=d.cross(h,p,mS),m=d.magnitude(u),x=d.dot(h,u),b=Math.acos(x/m),T=d.multiplyByScalar(h,x,H4);d.subtract(u,T,T),d.normalize(T,T);let C=d.magnitude(f),A=d.dot(h,f),E=Math.acos(A/C),v=d.multiplyByScalar(h,A,Hxe);d.subtract(f,v,v),d.normalize(v,v);let D=Math.acos(d.dot(T,p));d.dot(T,g)<0&&(D=P.TWO_PI-D);let R=Math.acos(d.dot(v,p));d.dot(v,g)<0&&(R=P.TWO_PI-R);let O=D-R,M;d.equalsEpsilon(h,r.position,P.EPSILON2)?M=r.right:M=d.cross(h,r.position,z4);let N=d.cross(h,M,z4),_=d.dot(N,d.subtract(u,h,mS)),S=d.dot(N,d.subtract(f,h,mS)),w;_>0&&S>0?w=E-b:_>0&&S<=0?d.dot(r.position,h)>0?w=-b-E:w=b+E:w=b-E,r.rotateRight(O),r.rotateUp(w)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),p=d.cross(u,f,z4);if(h<1&&!d.equalsEpsilon(p,d.ZERO,P.EPSILON14)){let g=Math.acos(h);r.rotate(p,g)}}}var Sgt=new d,vgt=new fe,Gxe=0;function rbe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=tbe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,nbe),h,p=o.cartesianToCartographic(s.position,vgt).height,g=Math.abs(Gxe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:p<e._minimumPickingTerrainHeight)&&(h=P_(e,u,ibe));let x;if(l(h)&&(x=d.distance(f.origin,h),Gxe=x),c){let T=Xxe(e,f,p);l(x)?x=Math.min(x,T):x=T}l(x)||(x=p);let b=d.normalize(s.position,Sgt);PK(e,t,n,e.zoomFactor,x,d.dot(b,s.direction))}var sbe=new U,q4=new pn,EP=new d,wgt=new d,abe=new F,Dgt=new F,cbe=new F,Igt=new Le,Pgt=new Z,RK=new fe,MK=new d;function Ogt(e,t,n){let o=e._scene.camera;if(!F.equals(o.transform,F.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,MK);Bu(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,RK);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,Mgt(e,t,n)):Lgt(e,t,n)}var Rgt=new fe;function Mgt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,Rgt).height;if(a-s-1<P.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=sbe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,q4),h,p=ti.rayEllipsoid(f,i);if(l(p))h=pn.getPoint(f,p.start,EP);else if(a>e._minimumTrackBallHeight){let C=ti.grazingAltitudeLocation(f,i);if(!l(C))return;let A=i.cartesianToCartographic(C,RK);A.height=0,h=i.cartographicToCartesian(A,EP)}else{e._looking=!0;let C=e._ellipsoid.geodeticSurfaceNormal(r.position,MK);Bu(e,t,n,C),U.clone(t,e._tiltCenterMousePosition);return}let g=Mt.eastNorthUpToFixedFrame(h,i,abe),m=e._globe,x=e._ellipsoid;e._globe=void 0,e._ellipsoid=ee.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=F.clone(r.transform,cbe);r._setTransform(g),Fu(e,t,n,d.UNIT_Z),r._setTransform(b),e._globe=m,e._ellipsoid=x;let T=x.maximumRadius;e._rotateFactor=1/T,e._rotateRateRangeAdjustment=T}function Lgt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(U.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,EP);else{if(a=P_(e,t,EP),!l(a)){if(c=r.getPickRay(t,q4),u=ti.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,RK).height<=e._minimumTrackBallHeight){e._looking=!0;let S=e._ellipsoid.geodeticSurfaceNormal(r.position,MK);Bu(e,t,n,S),U.clone(t,e._tiltCenterMousePosition)}return}a=pn.getPoint(c,u.start,EP)}s&&(l(c)||(c=r.getPickRay(t,q4)),Kxe(e,c,a,a)),U.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=sbe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,q4);let p=d.magnitude(a),g=d.fromElements(p,p,p,DK),m=ee.fromCartesian3(g,IK);if(u=ti.rayEllipsoid(c,m),!l(u))return;let x=d.magnitude(c.origin)>p?u.start:u.stop,b=pn.getPoint(c,x,wgt),T=Mt.eastNorthUpToFixedFrame(a,i,abe),C=Mt.eastNorthUpToFixedFrame(b,m,Dgt),A=e._globe,E=e._ellipsoid;e._globe=void 0,e._ellipsoid=ee.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let v=d.UNIT_Z,D=F.clone(r.transform,cbe);r._setTransform(C);let R=d.cross(b,r.positionWC,j4);if(d.dot(r.rightWC,R)<0){let _=n.startPosition.y-n.endPosition.y;(s&&_<0||!s&&_>0)&&(v=void 0);let S=r.constrainedAxis;r.constrainedAxis=void 0,Fu(e,t,n,v,!0,!1),r.constrainedAxis=S}else Fu(e,t,n,v,!0,!1);if(r._setTransform(T),Fu(e,t,n,v,!1,!0),l(r.constrainedAxis)){let _=d.cross(r.direction,r.constrainedAxis,j4);d.equalsEpsilon(_,d.ZERO,P.EPSILON6)||(d.dot(_,r.right)<0&&d.negate(_,_),d.cross(_,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(D),e._globe=A,e._ellipsoid=E;let M=E.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let N=d.clone(r.positionWC,j4);if(e.enableCollisionDetection&&LK(e,!0),!d.equals(r.positionWC,N)){r._setTransform(C),r.worldToCameraCoordinatesPoint(N,N);let _=d.magnitudeSquared(N);d.magnitudeSquared(r.position)>_&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(_),r.position));let S=d.angleBetween(N,r.position),w=d.cross(N,r.position,N);d.normalize(w,w);let I=Le.fromAxisAngle(w,S,Igt),L=Z.fromQuaternion(I,Pgt);Z.multiplyByVector(L,r.direction,r.direction),Z.multiplyByVector(L,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(D)}}var Ngt=new U,Fgt=new U,Wxe=new pn,jxe=new pn,Bgt=new d,kgt=new d;function Bu(e,t,n,i){let r=e._scene.camera,s=Ngt;s.x=n.startPosition.x,s.y=0;let a=Fgt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,Wxe),u=r.getPickRay(a,jxe),f=0,h,p;r.frustum instanceof an?(h=c.origin,p=u.origin,d.add(r.direction,h,h),d.add(r.direction,p,p),d.subtract(h,r.position,h),d.subtract(p,r.position,p),d.normalize(h,h),d.normalize(p,p)):(h=c.direction,p=u.direction);let g=d.dot(h,p);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,Wxe),u=r.getPickRay(a,jxe),f=0,r.frustum instanceof an?(h=c.origin,p=u.origin,d.add(r.direction,h,h),d.add(r.direction,p,p),d.subtract(h,r.position,h),d.subtract(p,r.position,p),d.normalize(h,h),d.normalize(p,p)):(h=c.direction,p=u.direction),g=d.dot(h,p),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=y(i,m),l(i)){let x=r.direction,b=d.negate(i,Bgt),T=d.equalsEpsilon(x,i,P.EPSILON2),C=d.equalsEpsilon(x,b,P.EPSILON2);if(!T&&!C){g=d.dot(x,i);let A=P.acosClamped(g);f>0&&f>A&&(f=A-P.EPSILON4),g=d.dot(x,b),A=P.acosClamped(g),f<0&&-f>A&&(f=-A+P.EPSILON4);let E=d.cross(i,x,kgt);r.look(E,f)}else(T&&f<0||C&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function Vgt(e){ol(e,e.enableRotate,e.rotateEventTypes,xgt,e.inertiaSpin,"_lastInertiaSpinMovement"),ol(e,e.enableZoom,e.zoomEventTypes,rbe,e.inertiaZoom,"_lastInertiaZoomMovement"),ol(e,e.enableTilt,e.tiltEventTypes,Ogt,e.inertiaSpin,"_lastInertiaTiltMovement"),ol(e,e.enableLook,e.lookEventTypes,Bu)}var Ugt=new F,zgt=new fe;function LK(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ne.SCENE2D||i===ne.MORPHING)return;let o=n.camera,r=y(n.ellipsoid,ee.WGS84),s=n.mapProjection,a,c;F.equals(o.transform,F.IDENTITY)||(a=F.clone(o.transform,Ugt),c=d.magnitude(o.position),o._setTransform(F.IDENTITY));let u=zgt;i===ne.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let p=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<p&&(t||Math.abs(m)<=.1)&&(u.height=p,i===ne.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}SP.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ne.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var Hgt=new d,Ggt=new d;SP.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;F.equals(t.transform,F.IDENTITY)?(this._globe=n,this._ellipsoid=y(e.ellipsoid,ee.default)):(this._globe=void 0,this._ellipsoid=ee.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Rr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Rr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Rr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,Hgt),c=d.clone(t.directionWC,Ggt);if(i===ne.SCENE2D?z_t(this):i===ne.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,fgt(this)):i===ne.SCENE3D&&(this._horizontalRotationAxis=void 0,Vgt(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);LK(this,u)}this._aggregator.reset()};SP.prototype.isDestroyed=function(){return!1};SP.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var X4=SP;var K4=`uniform sampler2D colorTexture;
uniform sampler2D colorTexture2;
uniform vec2 center;
uniform float radius;
in vec2 v_textureCoordinates;
void main()
{
vec4 color0 = texture(colorTexture, v_textureCoordinates);
vec4 color1 = texture(colorTexture2, v_textureCoordinates);
float x = length(gl_FragCoord.xy - center) / radius;
float t = smoothstep(0.5, 0.8, x);
out_FragColor = mix(color0 + color1, color1, t);
}
`;var $4=`uniform sampler2D colorTexture;
uniform float avgLuminance;
uniform float threshold;
uniform float offset;
in vec2 v_textureCoordinates;
float key(float avg)
{
float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0));
return max(0.0, guess) + 0.1;
}
// See section 9. "The bright-pass filter" of Realtime HDR Rendering
// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf
void main()
{
vec4 color = texture(colorTexture, v_textureCoordinates);
vec3 xyz = czm_RGBToXYZ(color.rgb);
float luminance = xyz.r;
float scaledLum = key(avgLuminance) * luminance / avgLuminance;
float brightLum = max(scaledLum - threshold, 0.0);
float brightness = brightLum / (offset + brightLum);
xyz.r = brightness;
out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0);
}
`;function O_(){this._sceneFramebuffer=new aS;let e=.125,t=new Array(6);t[0]=new _o({fragmentShader:Mu,textureScale:e,forcePowerOfTwo:!0,sampleMode:Zf.LINEAR});let n=t[1]=new _o({fragmentShader:$4,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new U,t[2]=new _o({fragmentShader:Fb,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new _o({fragmentShader:Fb,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new _o({fragmentShader:Mu,sampleMode:Zf.LINEAR}),this._uCenter=new U,this._uRadius=void 0,t[5]=new _o({fragmentShader:K4,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new Lu({stages:t});let o=new fS(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}O_.prototype.get=function(e){return this._stages.get(e)};O_.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var Wgt=new oe,lbe=new U,jgt=new U,ube=new F;function qgt(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=F.computeViewportTransformation(n,0,1,ube),u=F.multiplyByPoint(r,o,Wgt),f=Mt.pointToGLWindowCoordinates(s,c,o,lbe);u.x+=P.SOLAR_RADIUS;let h=Mt.pointToGLWindowCoordinates(a,c,u,u),p=U.magnitude(U.subtract(h,f,h))*30*2,g=jgt;g.x=p,g.y=p,e._uCenter=U.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,x=t.drawingBufferHeight,b=e._stages,T=b.get(0),C=T.outputTexture.width,A=T.outputTexture.height,E=new je;E.width=C,E.height=A,c=F.computeViewportTransformation(E,0,1,ube),f=Mt.pointToGLWindowCoordinates(s,c,o,lbe),g.x*=C/m,g.y*=A/x;let v=T.scissorRectangle;v.x=Math.max(f.x-g.x*.5,0),v.y=Math.max(f.y-g.y*.5,0),v.width=Math.min(g.x,m),v.height=Math.min(g.y,x);for(let D=1;D<4;++D)je.clone(v,b.get(D).scissorRectangle)}O_.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};O_.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),qgt(this,t,n),o};O_.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};O_.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Mu,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};O_.prototype.isDestroyed=function(){return!1};O_.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var Z4=O_;function fbe(){this._cachedShowFrustumsShaders={}}function Ygt(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function Xgt(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=Ue.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,p;for(;(p=h.exec(f))!==null;)r.indexOf(p[1])===-1&&r.push(p[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor;
`,a+=`uniform vec3 debugShowFrustumsColor;
`,a+=`void main()
{
czm_Debug_main();
`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor;
`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor;
`;else a+=` out_FragColor.rgb *= debugShowCommandsColor;
`,a+=` out_FragColor.rgb *= debugShowFrustumsColor;
`;a+="}",o.sources.push(a);let u=Ygt(i);return Jt.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var vP=new z;function Kgt(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=z.fromRandom()),t._debugColor):z.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(vP.red=t.debugOverlappingFrustums&1?1:0,vP.green=t.debugOverlappingFrustums&2?1:0,vP.blue=t.debugOverlappingFrustums&4?1:0,vP.alpha=1,vP):z.WHITE}),n}var $gt=new Qe;fbe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=Xgt(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=Qe.shallowClone(t,$gt);r.shaderProgram=o,r.uniformMap=Kgt(e,t),r.execute(e.context,n)};var Q4=fbe;function Wb(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Dn}Wb.fromKeyframeNode=function(e,t,n,i){let o=new Wb(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=Zgt(e,s,n),o._orientedBoundingBox=Jgt(e,r,n,o._orientedBoundingBox),o};function Zgt(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=lt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var dbe=new d,Qgt=new d;function Jgt(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,dbe),h=d.divideComponents(d.subtract(f,e._paddingBefore,dbe),e.dimensions,Qgt);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(Wb.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});Wb.prototype.hasProperty=function(e){return l(this._metadata[e])};Wb.prototype.getNames=function(){return Object.keys(this._metadata)};Wb.prototype.getProperty=function(e){return this._metadata[e]};var J4=Wb;var eH=`struct Ray {
vec3 pos;
vec3 dir;
vec3 rawDir;
};
#if defined(JITTER)
/**
* Generate a pseudo-random value for a given 2D screen coordinate.
* Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale.
*/
float hash(vec2 p)
{
vec3 p3 = fract(vec3(p.xyx) * 50.0);
p3 += dot(p3, p3.yzx + 19.19);
return fract((p3.x + p3.y) * p3.z);
}
#endif
float minComponent(in vec3 v) {
return min(min(v.x, v.y), v.z);
}
float maxComponent(in vec3 v) {
return max(max(v.x, v.y), v.z);
}
struct PointJacobianT {
vec3 point;
mat3 jacobianT;
};
`;var tH=`// See Intersection.glsl for the definition of intersectScene
// See IntersectionUtils.glsl for the definition of nextIntersection
// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl
// for the definition of convertUvToShapeUvSpace. The appropriate function is
// selected based on the VoxelPrimitive shape type, and added to the shader in
// Scene/VoxelRenderResources.js.
// See Octree.glsl for the definitions of TraversalData, SampleData,
// traverseOctreeFromBeginning, and traverseOctreeFromExisting
// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture
#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops
#if defined(PICKING_VOXEL)
#define ALPHA_ACCUM_MAX 0.1
#else
#define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0
#endif
uniform mat3 u_transformDirectionViewToLocal;
uniform vec3 u_cameraPositionUv;
uniform float u_stepSize;
#if defined(PICKING)
uniform vec4 u_pickColor;
#endif
vec3 getSampleSize(in int level) {
vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions);
vec3 sampleSizeUv = 1.0 / sampleCount;
return scaleShapeUvToShapeSpace(sampleSizeUv);
}
#define MINIMUM_STEP_SCALAR (0.02)
#define SHIFT_FRACTION (0.001)
/**
* Given a coordinate within a tile, and sample spacings along a ray through
* the coordinate, find the distance to the points where the ray entered and
* exited the voxel cell, along with the surface normals at those points.
* The surface normals are returned in shape space coordinates.
*/
RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) {
vec3 voxelCoord = tileUv * vec3(u_dimensions);
vec3 directions = sign(sampleSizeAlongRay);
vec3 positiveDirections = max(directions, 0.0);
vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections);
vec3 exitCoord = entryCoord + directions;
vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay);
float lastEntry = maxComponent(distanceFromEntry);
bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry));
vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions;
vec4 entry = vec4(entryNormal, lastEntry);
vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay);
float firstExit = minComponent(distanceToExit);
bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit));
vec3 exitNormal = vec3(isFirstExit) * directions;
vec4 exit = vec4(exitNormal, firstExit);
return RayShapeIntersection(entry, exit);
}
vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) {
// The Jacobian is computed in a space where the shape spans [-1, 1].
// But the ray is marched in a space where the shape fills [0, 1].
// So we need to scale the Jacobian by 2.
vec3 gradient = 2.0 * viewRay.rawDir * jacobianT;
vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient;
RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay);
// Transform normal from shape space to Cartesian space
vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz);
// Compare with the shape intersection, to choose the appropriate normal
vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w);
vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry);
float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize;
float shift = fixedStep * SHIFT_FRACTION;
float dt = voxelIntersection.exit.w + shift;
if ((currentT + dt) > shapeIntersection.exit.w) {
// Stop at end of shape
dt = shapeIntersection.exit.w - currentT + shift;
}
float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift);
return vec4(entry.xyz, stepSize);
}
vec2 packIntToVec2(int value) {
float shifted = float(value) / 255.0;
float lowBits = fract(shifted);
float highBits = floor(shifted) / 255.0;
return vec2(highBits, lowBits);
}
vec2 packFloatToVec2(float value) {
float lowBits = fract(value);
float highBits = floor(value) / 255.0;
return vec2(highBits, lowBits);
}
int getSampleIndex(in SampleData sampleData) {
// tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not.
// (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1).
// Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring
vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5);
vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate);
ivec3 sampleIndex = ivec3(floor(inputCoordinate));
// Convert to a 1D index for lookup in a 1D data array
return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z);
}
void main()
{
vec4 fragCoord = gl_FragCoord;
vec2 screenCoord = (fragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1]
vec3 eyeDirection = normalize(czm_windowToEyeCoordinates(fragCoord).xyz);
vec3 viewDirWorld = normalize(czm_inverseViewRotation * eyeDirection); // normalize again just in case
vec3 viewDirUv = normalize(u_transformDirectionViewToLocal * eyeDirection); // normalize again just in case
vec3 viewPosUv = u_cameraPositionUv;
#if defined(SHAPE_ELLIPSOID)
// viewDirUv has been scaled to a space where the ellipsoid is a sphere.
// Undo this scaling to get the raw direction.
vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv;
Ray viewRayUv = Ray(viewPosUv, viewDirUv, rawDir);
#else
Ray viewRayUv = Ray(viewPosUv, viewDirUv, viewDirUv);
#endif
Intersections ix;
RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix);
// Exit early if the scene was completely missed.
if (shapeIntersection.entry.w == NO_HIT) {
discard;
}
float currentT = shapeIntersection.entry.w;
float endT = shapeIntersection.exit.w;
vec3 positionUv = viewPosUv + currentT * viewDirUv;
PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv);
// Traverse the tree from the start position
TraversalData traversalData;
SampleData sampleDatas[SAMPLE_COUNT];
traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas);
vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT);
#if defined(JITTER)
float noise = hash(screenCoord); // [0,1]
currentT += noise * step.w;
positionUv += noise * step.w * viewDirUv;
#endif
FragmentInput fragmentInput;
#if defined(STATISTICS)
setStatistics(fragmentInput.metadata.statistics);
#endif
vec4 colorAccum = vec4(0.0);
for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) {
// Read properties from the megatexture based on the traversal state
Properties properties = accumulatePropertiesFromMegatexture(sampleDatas);
// Prepare the custom shader inputs
copyPropertiesToMetadata(properties, fragmentInput.metadata);
fragmentInput.voxel.positionUv = positionUv;
fragmentInput.voxel.positionShapeUv = pointJacobian.point;
fragmentInput.voxel.positionUvLocal = sampleDatas[0].tileUv;
fragmentInput.voxel.viewDirUv = viewDirUv;
fragmentInput.voxel.viewDirWorld = viewDirWorld;
fragmentInput.voxel.surfaceNormal = step.xyz;
fragmentInput.voxel.travelDistance = step.w;
fragmentInput.voxel.stepCount = stepCount;
fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex;
fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]);
// Run the custom shader
czm_modelMaterial materialOutput;
fragmentMain(fragmentInput, materialOutput);
// Sanitize the custom shader output
vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha);
color.rgb = max(color.rgb, vec3(0.0));
color.a = clamp(color.a, 0.0, 1.0);
// Pre-multiplied alpha blend
colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a);
// Stop traversing if the alpha has been fully saturated
if (colorAccum.a > ALPHA_ACCUM_MAX) {
colorAccum.a = ALPHA_ACCUM_MAX;
break;
}
if (step.w == 0.0) {
// Shape is infinitely thin. The ray may have hit the edge of a
// foreground voxel. Step ahead slightly to check for more voxels
step.w == 0.00001;
}
// Keep raymarching
currentT += step.w;
positionUv = viewPosUv + currentT * viewDirUv;
// Check if there's more intersections.
if (currentT > endT) {
#if (INTERSECTION_COUNT == 1)
break;
#else
shapeIntersection = nextIntersection(ix);
if (shapeIntersection.entry.w == NO_HIT) {
break;
} else {
// Found another intersection. Resume raymarching there
currentT = shapeIntersection.entry.w;
endT = shapeIntersection.exit.w;
positionUv = viewPosUv + currentT * viewDirUv;
}
#endif
}
// Traverse the tree from the current ray position.
// This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step.
pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv);
traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas);
step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT);
}
// Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1]
colorAccum.a /= ALPHA_ACCUM_MAX;
#if defined(PICKING)
// If alpha is 0.0 there is nothing to pick
if (colorAccum.a == 0.0) {
discard;
}
out_FragColor = u_pickColor;
#elif defined(PICKING_VOXEL)
// If alpha is 0.0 there is nothing to pick
if (colorAccum.a == 0.0) {
discard;
}
vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex);
vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0]));
out_FragColor = vec4(megatextureId, sampleIndex);
#else
out_FragColor = colorAccum;
#endif
}
`;var nH=`in vec2 position;
uniform vec4 u_ndcSpaceAxisAlignedBoundingBox;
void main() {
vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy;
vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw;
vec2 translation = 0.5 * (aabbMax + aabbMin);
vec2 scale = 0.5 * (aabbMax - aabbMin);
gl_Position = vec4(position * scale + translation, 0.0, 1.0);
}
`;var iH=`/* Intersection defines
#define INTERSECTION_COUNT ###
*/
#define NO_HIT (-czm_infinity)
#define INF_HIT (czm_infinity * 0.5)
struct RayShapeIntersection {
vec4 entry;
vec4 exit;
};
vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1)
{
if (intersect0.w == NO_HIT) {
return intersect1;
} else if (intersect1.w == NO_HIT) {
return intersect0;
}
return (intersect0.w <= intersect1.w) ? intersect0 : intersect1;
}
vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1)
{
return (intersect0.w >= intersect1.w) ? intersect0 : intersect1;
}
RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1)
{
bool missed = (intersect0.entry.w == NO_HIT) ||
(intersect1.entry.w == NO_HIT) ||
(intersect0.exit.w < intersect1.entry.w) ||
(intersect0.entry.w > intersect1.exit.w);
if (missed) {
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
return RayShapeIntersection(miss, miss);
}
vec4 entry = intersectionMax(intersect0.entry, intersect1.entry);
vec4 exit = intersectionMin(intersect0.exit, intersect1.exit);
return RayShapeIntersection(entry, exit);
}
struct Intersections {
// Don't access these member variables directly - call the functions instead.
// Store an array of ray-surface intersections. Each intersection is composed of:
// .xyz for the surface normal at the intersection point
// .w for the T value
// The scale of the normal encodes the shape intersection type:
// length(intersection.xyz) = 1: positive shape entry
// length(intersection.xyz) = 2: positive shape exit
// length(intersection.xyz) = 3: negative shape entry
// length(intersection.xyz) = 4: negative shape exit
// INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections,
// so we need twice as many to track ray-*surface* intersections
vec4 intersections[INTERSECTION_COUNT * 2];
#if (INTERSECTION_COUNT > 1)
// Maintain state for future nextIntersection calls
int index;
int surroundCount;
bool surroundIsPositive;
#endif
};
RayShapeIntersection getFirstIntersection(in Intersections ix)
{
return RayShapeIntersection(ix.intersections[0], ix.intersections[1]);
}
vec4 encodeIntersectionType(vec4 intersection, int index, bool entry)
{
float scale = float(index > 0) * 2.0 + float(!entry) + 1.0;
return vec4(intersection.xyz * scale, intersection.w);
}
// Use defines instead of real functions because WebGL1 cannot access array with non-constant index.
#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t))
#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y)
#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter))
#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false)
#if (INTERSECTION_COUNT > 1)
void initializeIntersections(inout Intersections ix) {
// Sort the intersections from min T to max T with bubble sort.
// Note: If this sorting function changes, some of the intersection test may
// need to be updated. Search for "bubble sort" to find those areas.
const int sortPasses = INTERSECTION_COUNT * 2 - 1;
for (int n = sortPasses; n > 0; --n) {
for (int i = 0; i < sortPasses; ++i) {
// The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to break early instead
if (i >= n) { break; }
vec4 intersect0 = ix.intersections[i + 0];
vec4 intersect1 = ix.intersections[i + 1];
bool inOrder = intersect0.w <= intersect1.w;
ix.intersections[i + 0] = inOrder ? intersect0 : intersect1;
ix.intersections[i + 1] = inOrder ? intersect1 : intersect0;
}
}
// Prepare initial state for nextIntersection
ix.index = 0;
ix.surroundCount = 0;
ix.surroundIsPositive = false;
}
#endif
#if (INTERSECTION_COUNT > 1)
RayShapeIntersection nextIntersection(inout Intersections ix) {
vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT);
RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection);
const int passCount = INTERSECTION_COUNT * 2;
if (ix.index == passCount) {
return shapeIntersection;
}
for (int i = 0; i < passCount; ++i) {
// The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot
// loop with non-constant condition, so it has to continue instead.
if (i < ix.index) {
continue;
}
ix.index = i + 1;
surfaceIntersection = ix.intersections[i];
int intersectionType = int(length(surfaceIntersection.xyz) - 0.5);
bool currShapeIsPositive = intersectionType < 2;
bool enter = intMod(intersectionType, 2) == 0;
ix.surroundCount += enter ? +1 : -1;
ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive;
// entering positive or exiting negative
if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) {
shapeIntersection.entry = surfaceIntersection;
}
// exiting positive or entering negative after being inside positive
bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0;
bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive;
if (exitPositive || enterNegativeFromPositive) {
shapeIntersection.exit = surfaceIntersection;
// entry and exit have been found, so the loop can stop
if (exitPositive) {
// After exiting positive shape there is nothing left to intersect, so jump to the end index.
ix.index = passCount;
}
break;
}
}
return shapeIntersection;
}
#endif
// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1
`;var oH=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections,
// setIntersectionPair, INF_HIT, NO_HIT
/* intersectDepth defines (set in Scene/VoxelRenderResources.js)
#define DEPTH_INTERSECTION_INDEX ###
*/
uniform mat4 u_transformPositionViewToUv;
void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) {
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord));
if (logDepthOrDepth != 0.0) {
// Calculate how far the ray must travel before it hits the depth buffer.
vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth);
eyeCoordinateDepth /= eyeCoordinateDepth.w;
vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth);
float t = dot(depthPositionUv - ray.pos, ray.dir);
setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(t, +INF_HIT));
} else {
// There's no depth at this location.
setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(NO_HIT));
}
}
`;var rH=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT,
// NO_HIT, setShapeIntersection
/* Clipping plane defines (set in Scene/VoxelRenderResources.js)
#define CLIPPING_PLANES_UNION
#define CLIPPING_PLANES_COUNT
#define CLIPPING_PLANES_INTERSECTION_INDEX
*/
uniform sampler2D u_clippingPlanesTexture;
uniform mat4 u_clippingPlanesMatrix;
// Plane is in Hessian Normal Form
vec4 intersectPlane(in Ray ray, in vec4 plane) {
vec3 n = plane.xyz; // normal
float w = plane.w; // -dot(pointOnPlane, normal)
float a = dot(ray.pos, n);
float b = dot(ray.dir, n);
float t = -(w + a) / b;
return vec4(n, t);
}
void intersectClippingPlanes(in Ray ray, inout Intersections ix) {
vec4 backSide = vec4(-ray.dir, -INF_HIT);
vec4 farSide = vec4(ray.dir, +INF_HIT);
RayShapeIntersection clippingVolume;
#if (CLIPPING_PLANES_COUNT == 1)
// Union and intersection are the same when there's one clipping plane, and the code
// is more simplified.
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix);
vec4 intersection = intersectPlane(ray, planeUv);
bool reflects = dot(ray.dir, intersection.xyz) < 0.0;
clippingVolume.entry = reflects ? backSide : intersection;
clippingVolume.exit = reflects ? intersection : farSide;
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
#elif defined(CLIPPING_PLANES_UNION)
vec4 firstTransmission = vec4(ray.dir, +INF_HIT);
vec4 lastReflection = vec4(-ray.dir, -INF_HIT);
for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
vec4 intersection = intersectPlane(ray, planeUv);
if (dot(ray.dir, planeUv.xyz) > 0.0) {
firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission;
} else {
lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection;
}
}
clippingVolume.entry = backSide;
clippingVolume.exit = lastReflection;
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume);
clippingVolume.entry = firstTransmission;
clippingVolume.exit = farSide;
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume);
#else // intersection
vec4 lastTransmission = vec4(ray.dir, -INF_HIT);
vec4 firstReflection = vec4(-ray.dir, +INF_HIT);
for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
vec4 intersection = intersectPlane(ray, planeUv);
if (dot(ray.dir, planeUv.xyz) > 0.0) {
lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission;
} else {
firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection;
}
}
if (lastTransmission.w < firstReflection.w) {
clippingVolume.entry = lastTransmission;
clippingVolume.exit = firstReflection;
} else {
clippingVolume.entry = vec4(-ray.dir, NO_HIT);
clippingVolume.exit = vec4(ray.dir, NO_HIT);
}
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
#endif
}
`;var wP=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT,
// RayShapeIntersection
vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) {
float normalSign = positiveNormal ? 1.0 : -1.0;
vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign;
vec2 position = ray.pos.xy;
vec2 direction = ray.dir.xy;
float approachRate = dot(direction, planeNormal);
float distance = -dot(position, planeNormal);
float t = (approachRate == 0.0)
? NO_HIT
: distance / approachRate;
return vec4(planeNormal, 0.0, t);
}
RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal)
{
vec4 intersection = intersectLongitude(ray, angle, positiveNormal);
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0);
if (!hitFront) {
return RayShapeIntersection(intersection, farSide);
} else {
return RayShapeIntersection(-1.0 * farSide, intersection);
}
}
void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2])
{
intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false);
intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true);
}
bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) {
float normalSign = positiveNormal ? 1.0 : -1.0;
vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign;
vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy;
return dot(hit, planeDirection) > 0.0;
}
void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) {
vec4 intersection = intersectLongitude(ray, angle, true);
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
if (hitPositiveHalfPlane(ray, intersection, true)) {
intersections[0].entry = -1.0 * farSide;
intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w);
intersections[1].entry = intersection;
intersections[1].exit = farSide;
} else {
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
intersections[0].entry = -1.0 * farSide;
intersections[0].exit = farSide;
intersections[1].entry = miss;
intersections[1].exit = miss;
}
}
RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle)
{
// Note: works for maxAngle > minAngle + pi, where the "regular wedge"
// is actually a negative volume.
// Compute intersections with the two planes.
// Normals will point toward the "outside" (negative space)
vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false);
vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true);
// Choose intersection with smallest T as the "first", the other as "last"
// Note: first or last could be in the "shadow" wedge, beyond the tip
bool inOrder = intersect1.w <= intersect2.w;
vec4 first = inOrder ? intersect1 : intersect2;
vec4 last = inOrder ? intersect2 : intersect1;
bool firstIsAhead = first.w >= 0.0;
bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0;
bool exitFromInside = firstIsAhead == startedInsideFirst;
bool lastIsAhead = last.w > 0.0;
bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0;
bool enterFromOutside = lastIsAhead == startedOutsideLast;
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
if (exitFromInside && enterFromOutside) {
// Ray crosses both faces of negative wedge, exiting then entering the positive shape
return RayShapeIntersection(first, last);
} else if (!exitFromInside && enterFromOutside) {
// Ray starts inside wedge. last is in shadow wedge, and first is actually the entry
return RayShapeIntersection(-1.0 * farSide, first);
} else if (exitFromInside && !enterFromOutside) {
// First intersection was in the shadow wedge, so last is actually the exit
return RayShapeIntersection(last, farSide);
} else { // !exitFromInside && !enterFromOutside
// Both intersections were in the shadow wedge
return RayShapeIntersection(miss, miss);
}
}
`;var sH=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection,
// NO_HIT, Intersections
/* Box defines (set in Scene/VoxelBoxShape.js)
#define BOX_INTERSECTION_INDEX ### // always 0
*/
uniform vec3 u_renderMinBounds;
uniform vec3 u_renderMaxBounds;
RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound)
{
// Consider the box as the intersection of the space between 3 pairs of parallel planes
// Compute the distance along the ray to each plane
vec3 t0 = (minBound - ray.pos) / ray.dir;
vec3 t1 = (maxBound - ray.pos) / ray.dir;
// Identify candidate entries/exits based on distance from ray.pos
vec3 entries = min(t0, t1);
vec3 exits = max(t0, t1);
vec3 directions = sign(ray.dir);
// The actual intersection points are the furthest entry and the closest exit
float lastEntry = maxComponent(entries);
bvec3 isLastEntry = equal(entries, vec3(lastEntry));
vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions;
vec4 entry = vec4(entryNormal, lastEntry);
float firstExit = minComponent(exits);
bvec3 isFirstExit = equal(exits, vec3(firstExit));
vec3 exitNormal = vec3(isLastEntry) * directions;
vec4 exit = vec4(exitNormal, firstExit);
if (entry.w > exit.w) {
entry.w = NO_HIT;
exit.w = NO_HIT;
}
return RayShapeIntersection(entry, exit);
}
void intersectShape(in Ray ray, inout Intersections ix)
{
RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds);
setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection);
}
`;var aH=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections,
// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection,
// intersectIntersections
// See IntersectLongitude.glsl for the definitions of intersectHalfPlane,
// intersectFlippedWedge, intersectRegularWedge
/* Cylinder defines (set in Scene/VoxelCylinderShape.js)
#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN
#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO
#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX
#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN
#define CYLINDER_INTERSECTION_INDEX_ANGLE
*/
// Cylinder uniforms
uniform vec2 u_cylinderRenderRadiusMinMax;
uniform vec2 u_cylinderRenderHeightMinMax;
#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE)
uniform vec2 u_cylinderRenderAngleMinMax;
#endif
/**
* Find the intersection of a ray with the volume defined by two planes of constant z
*/
RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex)
{
float zPosition = ray.pos.z;
float zDirection = ray.dir.z;
float tmin = (minMaxHeight.x - zPosition) / zDirection;
float tmax = (minMaxHeight.y - zPosition) / zDirection;
// Normals point outside the volume
float signFlip = convex ? 1.0 : -1.0;
vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin);
vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax);
bool topEntry = zDirection < 0.0;
vec4 entry = topEntry ? intersectMax : intersectMin;
vec4 exit = topEntry ? intersectMin : intersectMax;
return RayShapeIntersection(entry, exit);
}
/**
* Find the intersection of a ray with a right cylindrical surface of a given radius
* about the z-axis.
*/
RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex)
{
vec2 position = ray.pos.xy;
vec2 direction = ray.dir.xy;
float a = dot(direction, direction);
float b = dot(position, direction);
float c = dot(position, position) - radius * radius;
float determinant = b * b - a * c;
if (determinant < 0.0) {
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
return RayShapeIntersection(miss, miss);
}
determinant = sqrt(determinant);
float t1 = (-b - determinant) / a;
float t2 = (-b + determinant) / a;
float signFlip = convex ? 1.0 : -1.0;
vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1);
vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2);
return RayShapeIntersection(intersect1, intersect2);
}
/**
* Find the intersection of a ray with a right cylindrical solid of given
* radius and height bounds. NOTE: The shape is assumed to be convex.
*/
RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight)
{
RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true);
RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true);
return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection);
}
void intersectShape(Ray ray, inout Intersections ix)
{
// Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].
// Direction is scaled as well to be in sync with position.
ray.pos = ray.pos * 2.0 - 1.0;
ray.dir *= 2.0;
RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect);
if (outerIntersect.entry.w == NO_HIT) {
return;
}
#if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT)
// When the cylinder is perfectly thin it's necessary to sandwich the
// inner cylinder intersection inside the outer cylinder intersection.
// Without this special case,
// [outerMin, outerMax, innerMin, innerMax] will bubble sort to
// [outerMin, innerMin, outerMax, innerMax] which will cause the back
// side of the cylinder to be invisible because it will think the ray
// is still inside the inner (negative) cylinder after exiting the
// outer (positive) cylinder.
// With this special case,
// [outerMin, innerMin, innerMax, outerMax] will bubble sort to
// [outerMin, innerMin, innerMax, outerMax] which will work correctly.
// Note: If initializeIntersections() changes its sorting function
// from bubble sort to something else, this code may need to change.
RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false);
setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter
setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter
setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit
setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN)
RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect);
#endif
#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF)
RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect);
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF)
RayShapeIntersection wedgeIntersects[2];
intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]);
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO)
RayShapeIntersection wedgeIntersects[2];
intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]);
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]);
#endif
}
`;var cH=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections,
// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection
// See IntersectLongitude.glsl for the definitions of intersectHalfPlane,
// intersectFlippedWedge, intersectRegularWedge
/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js)
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF
#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE
#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX
#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN
#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX
#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN
*/
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE)
uniform vec2 u_ellipsoidRenderLongitudeMinMax;
#endif
uniform float u_eccentricitySquared;
uniform vec2 u_ellipsoidRenderLatitudeSinMinMax;
uniform vec2 u_clipMinMaxHeight;
RayShapeIntersection intersectZPlane(in Ray ray, in float z) {
float t = -ray.pos.z / ray.dir.z;
bool startsOutside = sign(ray.pos.z) == sign(z);
bool entry = (t >= 0.0) != startsOutside;
vec4 intersect = vec4(0.0, 0.0, z, t);
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
if (entry) {
return RayShapeIntersection(intersect, farSide);
} else {
return RayShapeIntersection(-1.0 * farSide, intersect);
}
}
RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex)
{
// Scale the ray by the ellipsoid axes to make it a unit sphere
// Note: approximating ellipsoid + height as an ellipsoid
vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight);
vec3 position = ray.pos * radiiCorrection;
vec3 direction = ray.dir * radiiCorrection;
float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled)
float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in
float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in.
float determinant = b * b - a * c; // ~ b * b when zoomed in
if (determinant < 0.0) {
vec4 miss = vec4(normalize(direction), NO_HIT);
return RayShapeIntersection(miss, miss);
}
determinant = sqrt(determinant);
// Compute larger root using standard formula
float signB = b < 0.0 ? -1.0 : 1.0;
// The other root may suffer from subtractive cancellation in the standard formula.
// Compute it from the first root instead.
float t1 = (-b - signB * determinant) / a;
float t2 = c / (a * t1);
float tmin = min(t1, t2);
float tmax = max(t1, t2);
float directionScale = convex ? 1.0 : -1.0;
vec3 d1 = directionScale * normalize(position + tmin * direction);
vec3 d2 = directionScale * normalize(position + tmax * direction);
return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax));
}
/**
* Given a circular cone around the z-axis, with apex at the origin,
* find the parametric distance(s) along a ray where that ray intersects
* the cone.
* The cone opening angle is described by the squared cosine of
* its half-angle (the angle between the Z-axis and the surface)
*/
vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle)
{
vec3 o = ray.pos;
vec3 d = ray.dir;
float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle;
float aSin = d.z * d.z * sinSqrHalfAngle;
float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle;
float a = aSin + aCos;
float bSin = d.z * o.z * sinSqrHalfAngle;
float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle;
float b = bSin + bCos;
float cSin = o.z * o.z * sinSqrHalfAngle;
float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle;
float c = cSin + cCos;
// determinant = b * b - a * c. But bSin * bSin = aSin * cSin.
// Avoid subtractive cancellation by expanding to eliminate these terms
float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos;
if (determinant < 0.0) {
return vec2(NO_HIT);
} else if (a == 0.0) {
// Ray is parallel to cone surface
return (b == 0.0)
? vec2(NO_HIT) // Ray is on cone surface
: vec2(-0.5 * c / b, NO_HIT);
}
determinant = sqrt(determinant);
// Compute larger root using standard formula
float signB = b < 0.0 ? -1.0 : 1.0;
float t1 = (-b - signB * determinant) / a;
// The other root may suffer from subtractive cancellation in the standard formula.
// Compute it from the first root instead.
float t2 = c / (a * t1);
float tmin = min(t1, t2);
float tmax = max(t1, t2);
return vec2(tmin, tmax);
}
/**
* Given a point on a conical surface, find the surface normal at that point.
*/
vec3 getConeNormal(in vec3 p, in bool convex) {
// Start with radial component pointing toward z-axis
vec2 radial = -abs(p.z) * normalize(p.xy);
// Z component points toward opening of cone
float zSign = (p.z < 0.0) ? -1.0 : 1.0;
float z = length(p.xy) * zSign;
// Flip normal if shape is convex
float flip = (convex) ? -1.0 : 1.0;
return normalize(vec3(radial, z) * flip);
}
/**
* Compute the shift between the ellipsoid origin and the apex of a cone of latitude
*/
float getLatitudeConeShift(in float sinLatitude) {
// Find prime vertical radius of curvature:
// the distance along the ellipsoid normal to the intersection with the z-axis
float x2 = u_eccentricitySquared * sinLatitude * sinLatitude;
float primeVerticalRadius = inversesqrt(1.0 - x2);
// Compute a shift from the origin to the intersection of the cone with the z-axis
return primeVerticalRadius * u_eccentricitySquared * sinLatitude;
}
void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) {
// Undo the scaling from ellipsoid to sphere
ray.pos = ray.pos * u_ellipsoidRadiiUv;
ray.dir = ray.dir * u_ellipsoidRadiiUv;
// Shift the ray to account for the latitude cone not being centered at the Earth center
ray.pos.z += getLatitudeConeShift(cosHalfAngle);
float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle;
vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle);
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
// Initialize output with no intersections
intersections[0].entry = -1.0 * farSide;
intersections[0].exit = farSide;
intersections[1].entry = miss;
intersections[1].exit = miss;
if (intersect.x == NO_HIT) {
return;
}
// Find the points of intersection
float tmin = intersect.x;
float tmax = intersect.y;
vec3 p0 = ray.pos + tmin * ray.dir;
vec3 p1 = ray.pos + tmax * ray.dir;
vec4 intersect0 = vec4(getConeNormal(p0, true), tmin);
vec4 intersect1 = vec4(getConeNormal(p1, true), tmax);
bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle);
bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle);
if (p0InShadowCone && p1InShadowCone) {
// no valid intersections
} else if (p0InShadowCone) {
intersections[0].exit = intersect1;
} else if (p1InShadowCone) {
intersections[0].entry = intersect0;
} else {
intersections[0].exit = intersect0;
intersections[1].entry = intersect1;
intersections[1].exit = farSide;
}
}
RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) {
// Undo the scaling from ellipsoid to sphere
ray.pos = ray.pos * u_ellipsoidRadiiUv;
ray.dir = ray.dir * u_ellipsoidRadiiUv;
// Shift the ray to account for the latitude cone not being centered at the Earth center
ray.pos.z += getLatitudeConeShift(cosHalfAngle);
float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle;
vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle);
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
if (intersect.x == NO_HIT) {
return RayShapeIntersection(miss, miss);
}
// Find the points of intersection
float tmin = intersect.x;
float tmax = intersect.y;
vec3 p0 = ray.pos + tmin * ray.dir;
vec3 p1 = ray.pos + tmax * ray.dir;
vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin);
vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax);
bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle);
bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle);
if (p0InShadowCone && p1InShadowCone) {
return RayShapeIntersection(miss, miss);
} else if (p0InShadowCone) {
return RayShapeIntersection(intersect1, farSide);
} else if (p1InShadowCone) {
return RayShapeIntersection(-1.0 * farSide, intersect0);
} else {
return RayShapeIntersection(intersect0, intersect1);
}
}
void intersectShape(in Ray ray, inout Intersections ix) {
// Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].
// Direction is scaled as well to be in sync with position.
ray.pos = ray.pos * 2.0 - 1.0;
ray.dir *= 2.0;
// Outer ellipsoid
RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect);
// Exit early if the outer ellipsoid was missed.
if (outerIntersect.entry.w == NO_HIT) {
return;
}
// Inner ellipsoid
RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false);
if (innerIntersect.entry.w == NO_HIT) {
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect);
} else {
// When the ellipsoid is large and thin it's possible for floating point math
// to cause the ray to intersect the inner ellipsoid before the outer ellipsoid.
// To prevent this from happening, clamp innerIntersect to outerIntersect and
// sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection.
// Without this special case,
// [outerMin, outerMax, innerMin, innerMax] will bubble sort to
// [outerMin, innerMin, outerMax, innerMax] which will cause the back
// side of the ellipsoid to be invisible because it will think the ray
// is still inside the inner (negative) ellipsoid after exiting the
// outer (positive) ellipsoid.
// With this special case,
// [outerMin, innerMin, innerMax, outerMax] will bubble sort to
// [outerMin, innerMin, innerMax, outerMax] which will work correctly.
// Note: If initializeIntersections() changes its sorting function
// from bubble sort to something else, this code may need to change.
innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w);
innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w);
setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter
setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter
setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit
setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit
}
// Bottom cone
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF)
RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF)
RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF)
RayShapeIntersection bottomConeIntersections[2];
intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]);
#endif
// Top cone
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF)
RayShapeIntersection topConeIntersections[2];
intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF)
RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF)
RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection);
#endif
// Wedge
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO)
RayShapeIntersection wedgeIntersects[2];
intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF)
RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect);
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF)
RayShapeIntersection wedgeIntersects[2];
intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]);
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]);
#endif
}
`;var pS=`// Main intersection function for Voxel scenes.
// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl
// for the definition of intersectShape. The appropriate function is selected
// based on the VoxelPrimitive shape type, and added to the shader in
// Scene/VoxelRenderResources.js.
// See also IntersectClippingPlane.glsl and IntersectDepth.glsl.
// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT,
// getFirstIntersection, initializeIntersections, nextIntersection.
/* Intersection defines (set in Scene/VoxelRenderResources.js)
#define INTERSECTION_COUNT ###
*/
RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) {
// Do a ray-shape intersection to find the exact starting and ending points.
intersectShape(ray, ix);
// Exit early if the positive shape was completely missed or behind the ray.
RayShapeIntersection intersection = getFirstIntersection(ix);
if (intersection.entry.w == NO_HIT) {
// Positive shape was completely missed - so exit early.
return intersection;
}
// Clipping planes
#if defined(CLIPPING_PLANES)
intersectClippingPlanes(ray, ix);
#endif
// Depth
#if defined(DEPTH_TEST)
intersectDepth(screenCoord, ray, ix);
#endif
// Find the first intersection that's in front of the ray
#if (INTERSECTION_COUNT > 1)
initializeIntersections(ix);
for (int i = 0; i < INTERSECTION_COUNT; ++i) {
intersection = nextIntersection(ix);
if (intersection.exit.w > 0.0) {
// Set start to 0.0 when ray is inside the shape.
intersection.entry.w = max(intersection.entry.w, 0.0);
break;
}
}
#else
// Set start to 0.0 when ray is inside the shape.
intersection.entry.w = max(intersection.entry.w, 0.0);
#endif
return intersection;
}
`;var lH=`/* Box defines (set in Scene/VoxelBoxShape.js)
#define BOX_HAS_SHAPE_BOUNDS
*/
#if defined(BOX_HAS_SHAPE_BOUNDS)
uniform vec3 u_boxUvToShapeUvScale;
uniform vec3 u_boxUvToShapeUvTranslate;
#endif
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
// For BOX, UV space = shape space, so we can use positionUv as-is,
// and the Jacobian is the identity matrix, except that a step of 1
// only spans half the shape space [-1, 1], so the identity is scaled.
return PointJacobianT(positionUv, mat3(0.5));
}
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
#if defined(BOX_HAS_SHAPE_BOUNDS)
return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate;
#else
return positionShape;
#endif
}
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
return pointJacobian;
}
vec3 convertShapeUvToUvSpace(in vec3 shapeUv) {
#if defined(BOX_HAS_SHAPE_BOUNDS)
return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale;
#else
return shapeUv;
#endif
}
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
#if defined(BOX_HAS_SHAPE_BOUNDS)
return shapeUv / u_boxUvToShapeUvScale;
#else
return shapeUv;
#endif
}`;var uH=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js)
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED
*/
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset
#endif
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset
#endif
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset
#endif
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
uniform vec2 u_cylinderShapeUvAngleMinMax;
#endif
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
uniform float u_cylinderShapeUvAngleRangeZeroMid;
#endif
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
// Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1]
vec3 position = positionUv * 2.0 - 1.0;
float radius = length(position.xy); // [0, 1]
vec3 radial = normalize(vec3(position.xy, 0.0));
// Shape space height is defined within [0, 1]
float height = positionUv.z; // [0, 1]
vec3 z = vec3(0.0, 0.0, 1.0);
float angle = atan(position.y, position.x);
vec3 east = normalize(vec3(-position.y, position.x, 0.0));
vec3 point = vec3(radius, angle, height);
mat3 jacobianT = mat3(radial, z, east / length(position.xy));
return PointJacobianT(point, jacobianT);
}
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
float radius = positionShape.x;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y;
#endif
float angle = (positionShape.y + czm_pi) / czm_twoPi;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);
#endif
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;
#endif
angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y;
#endif
float height = positionShape.z;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y;
#endif
return vec3(radius, angle, height);
}
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
return pointJacobian;
}
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
float radius = shapeUv.x;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
radius /= u_cylinderUvToShapeUvRadius.x;
#endif
float angle = shapeUv.y * czm_twoPi;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
angle /= u_cylinderUvToShapeUvAngle.x;
#endif
float height = shapeUv.z;
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
height /= u_cylinderUvToShapeUvHeight.x;
#endif
return vec3(radius, angle, height);
}
`;var fH=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js)
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE
*/
uniform vec3 u_ellipsoidRadiiUv; // [0,1]
uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv;
uniform vec3 u_ellipsoidInverseRadiiSquaredUv;
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)
uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid;
#endif
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset
#endif
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset
#endif
uniform float u_ellipsoidInverseHeightDifferenceUv;
// robust iterative solution without trig functions
// https://github.com/0xfaded/ellipse_demo/issues/1
// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse
// Extended to return radius of curvature along with the point
vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) {
vec2 p = abs(pos);
vec2 inverseRadii = 1.0 / radii;
// We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t))
// but store the cos and sin of t in a vec2 for efficiency.
// Initial guess: t = pi/4
vec2 tTrigs = vec2(0.7071067811865476);
// Initial guess of point on ellipsoid
vec2 v = radii * tTrigs;
// Center of curvature of the ellipse at v
vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs;
const int iterations = 3;
for (int i = 0; i < iterations; ++i) {
// Find the (approximate) intersection of p - evolute with the ellipsoid.
vec2 q = normalize(p - evolute) * length(v - evolute);
// Update the estimate of t.
tTrigs = (q + evolute) * inverseRadii;
tTrigs = normalize(clamp(tTrigs, 0.0, 1.0));
v = radii * tTrigs;
evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs;
}
return vec3(v * sign(pos), length(v - evolute));
}
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
// Convert from UV space [0, 1] to local space [-1, 1]
vec3 position = positionUv * 2.0 - 1.0;
// Undo the scaling from ellipsoid to sphere
position = position * u_ellipsoidRadiiUv;
float longitude = atan(position.y, position.x);
vec3 east = normalize(vec3(-position.y, position.x, 0.0));
// Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z)
// (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal
float distanceFromZAxis = length(position.xy);
vec2 posEllipse = vec2(distanceFromZAxis, position.z);
vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz);
vec2 surfacePoint = surfacePointAndRadius.xy;
vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz);
float latitude = atan(normal2d.y, normal2d.x);
vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x));
float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0;
float height = heightSign * length(posEllipse - surfacePoint);
vec3 up = normalize(cross(east, north));
vec3 point = vec3(longitude, latitude, height);
mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up);
return PointJacobianT(point, jacobianT);
}
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
// Longitude: shift & scale to [0, 1]
float longitude = (positionShape.x + czm_pi) / czm_twoPi;
// Correct the angle when max < min
// Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space.
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)
longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z);
#endif
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY)
longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude;
#endif
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY)
longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude;
#endif
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y;
#endif
// Latitude: shift and scale to [0, 1]
float latitude = (positionShape.y + czm_piOverTwo) / czm_pi;
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;
#endif
// Height: scale to the range [0, 1]
float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv;
return vec3(longitude, latitude, height);
}
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
return pointJacobian;
}
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
// Convert from [0, 1] to radians [-pi, pi]
float longitude = shapeUv.x * czm_twoPi;
#if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
longitude /= u_ellipsoidUvToShapeUvLongitude.x;
#endif
// Convert from [0, 1] to radians [-pi/2, pi/2]
float latitude = shapeUv.y * czm_pi;
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
latitude /= u_ellipsoidUvToShapeUvLatitude.x;
#endif
float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv;
return vec3(longitude, latitude, height);
}
`;var dH=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js
#define OCTREE_FLAG_INTERNAL 0
#define OCTREE_FLAG_LEAF 1
#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2
#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops
uniform sampler2D u_octreeInternalNodeTexture;
uniform vec2 u_octreeInternalNodeTexelSizeUv;
uniform int u_octreeInternalNodeTilesPerRow;
#if (SAMPLE_COUNT > 1)
uniform sampler2D u_octreeLeafNodeTexture;
uniform vec2 u_octreeLeafNodeTexelSizeUv;
uniform int u_octreeLeafNodeTilesPerRow;
#endif
uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation
uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data
#if defined(PADDING)
uniform ivec3 u_paddingBefore;
#endif
struct OctreeNodeData {
int data;
int flag;
};
struct TraversalData {
ivec4 octreeCoords;
int parentOctreeIndex;
};
struct SampleData {
int megatextureIndex;
ivec4 tileCoords;
vec3 tileUv;
vec3 inputCoordinate;
#if (SAMPLE_COUNT > 1)
float weight;
#endif
};
// Integer mod: For WebGL1 only
int intMod(in int a, in int b) {
return a - (b * (a / b));
}
int normU8_toInt(in float value) {
return int(value * 255.0);
}
int normU8x2_toInt(in vec2 value) {
return int(value.x * 255.0) + 256 * int(value.y * 255.0);
}
float normU8x2_toFloat(in vec2 value) {
return float(normU8x2_toInt(value)) / 65535.0;
}
OctreeNodeData getOctreeNodeData(in vec2 octreeUv) {
vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv);
OctreeNodeData data;
data.data = normU8x2_toInt(texData.xy);
data.flag = normU8x2_toInt(texData.zw);
return data;
}
OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) {
int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x;
int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex;
int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow;
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
return getOctreeNodeData(octreeUv);
}
int getOctreeParentIndex(in int octreeIndex) {
int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9;
int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow;
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv);
int parentOctreeIndex = normU8x2_toInt(parentData.xy);
return parentOctreeIndex;
}
/**
* Convert a position in the uv-space of the tileset bounding shape
* into the uv-space of a tile within the tileset
*/
vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) {
// PERFORMANCE_IDEA: use bit-shifting (only in WebGL2)
float dimAtLevel = exp2(float(octreeCoords.w));
return shapePosition * dimAtLevel - vec3(octreeCoords.xyz);
}
vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) {
vec3 tileUv = getTileUv(shapePosition, octreeCoords);
return clamp(tileUv, vec3(0.0), vec3(1.0));
}
void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) {
vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords);
vec3 inputCoordinate = tileUv * vec3(u_dimensions);
#if defined(PADDING)
inputCoordinate += vec3(u_paddingBefore);
#endif
#if defined(GLTF_METADATA_ORDER)
#if defined(SHAPE_BOX)
float inputY = inputCoordinate.y;
inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z;
inputCoordinate.z = inputY;
#elif defined(SHAPE_CYLINDER)
float angle = inputCoordinate.y;
float height = inputCoordinate.z;
#if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE))
// Account for the different 0-angle convention in glTF vs 3DTiles
if (sampleData.tileCoords.w == 0) {
float angleCount = float(u_inputDimensions.z);
angle = mod(angle + angleCount / 2.0, angleCount);
}
#endif
inputCoordinate.y = height;
inputCoordinate.z = angle;
#endif
#endif
sampleData.tileUv = tileUv;
sampleData.inputCoordinate = inputCoordinate;
}
void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) {
sampleData.megatextureIndex = data.data;
sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT)
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
: octreeCoords;
}
#if (SAMPLE_COUNT > 1)
void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) {
int leafIndex = data.data;
int leafNodeTexelCount = 2;
// Adding 0.5 moves to the center of the texel
float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5;
float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5;
// Get an interpolation weight and a flag to determine whether to read the parent texture
vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY);
vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0);
float lerp = normU8x2_toFloat(leafData0.xy);
sampleDatas[0].weight = 1.0 - lerp;
sampleDatas[1].weight = lerp;
// TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT
sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1)
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
: octreeCoords;
sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1)
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
: octreeCoords;
// Get megatexture indices for both samples
vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY);
vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1);
sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy);
sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw);
}
#endif
OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) {
float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w));
vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel;
vec3 end = start + vec3(sizeAtLevel);
OctreeNodeData childData;
for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) {
// Find out which octree child contains the position
// 0 if before center, 1 if after
vec3 center = 0.5 * (start + end);
vec3 childCoord = step(center, shapePosition);
// Get octree coords for the next level down
ivec4 octreeCoords = traversalData.octreeCoords;
traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1);
childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord));
if (childData.flag != OCTREE_FLAG_INTERNAL) {
// leaf tile - stop traversing
break;
}
// interior tile - keep going deeper
start = mix(start, center, childCoord);
end = mix(center, end, childCoord);
traversalData.parentOctreeIndex = childData.data;
}
return childData;
}
/**
* Transform a given position to an octree tile coordinate and a position within that tile,
* and find the corresponding megatexture index and texture coordinates
*/
void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) {
traversalData.octreeCoords = ivec4(0);
traversalData.parentOctreeIndex = 0;
OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0));
if (nodeData.flag != OCTREE_FLAG_LEAF) {
nodeData = traverseOctreeDownwards(shapePosition, traversalData);
}
#if (SAMPLE_COUNT == 1)
getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]);
addSampleCoordinates(shapePosition, sampleDatas[0]);
#else
getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas);
addSampleCoordinates(shapePosition, sampleDatas[0]);
addSampleCoordinates(shapePosition, sampleDatas[1]);
#endif
}
bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) {
return clamp(v, minVal, maxVal) == v;
}
bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) {
vec3 tileUv = getTileUv(shapePosition, octreeCoords);
bool inside = inRange(tileUv, vec3(0.0), vec3(1.0));
// Assume (!) the position is always inside the root tile.
return inside || octreeCoords.w == 0;
}
void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) {
if (insideTile(shapePosition, traversalData.octreeCoords)) {
for (int i = 0; i < SAMPLE_COUNT; i++) {
addSampleCoordinates(shapePosition, sampleDatas[i]);
}
return;
}
// Go up tree until we find a parent tile containing shapePosition
for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) {
traversalData.octreeCoords.xyz /= 2;
traversalData.octreeCoords.w -= 1;
if (insideTile(shapePosition, traversalData.octreeCoords)) {
break;
}
traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex);
}
// Go down tree
OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData);
#if (SAMPLE_COUNT == 1)
getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]);
addSampleCoordinates(shapePosition, sampleDatas[0]);
#else
getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas);
addSampleCoordinates(shapePosition, sampleDatas[0]);
addSampleCoordinates(shapePosition, sampleDatas[1]);
#endif
}
`;var hH=`// See Octree.glsl for the definitions of SampleData and intMod
/* Megatexture defines (set in Scene/VoxelRenderResources.js)
#define SAMPLE_COUNT ###
#define NEAREST_SAMPLING
#define PADDING
*/
uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions
uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions
uniform vec2 u_megatextureVoxelSizeUv;
uniform vec2 u_megatextureSliceSizeUv;
uniform vec2 u_megatextureTileSizeUv;
// Integer min, max, clamp: For WebGL1 only
int intMin(int a, int b) {
return a <= b ? a : b;
}
int intMax(int a, int b) {
return a >= b ? a : b;
}
int intClamp(int v, int minVal, int maxVal) {
return intMin(intMax(v, minVal), maxVal);
}
vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale)
{
int indexX = intMod(index, dimensions.x);
int indexY = index / dimensions.x;
return vec2(indexX, indexY) * uvScale;
}
/*
How is 3D data stored in a 2D megatexture?
In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total).
The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and
the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1).
Note that there could be empty space in the megatexture because it's a power of two.
0 1 2 3
+---+---+---+---+
| | | | | 3
+---+---+---+---+
| | | | | 2
+-------+-------+
|010|110|011|111| 1
|--- ---|--- ---|
|000|100|001|101| 0
+-------+-------+
When doing linear interpolation the megatexture needs to be sampled twice: once for
the Z slice above the voxel coordinate and once for the slice below. The two slices
are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is
halfway between two Z slices so the interpolation factor is 0.5. Below is a side view
of the 3D voxel grid with voxel coordinates on the left side.
2 +---+
|001|
1 +-z-+
|000|
0 +---+
When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice.
*/
Properties getPropertiesFromMegatexture(in SampleData sampleData) {
int tileIndex = sampleData.megatextureIndex;
vec3 voxelCoord = sampleData.inputCoordinate;
#if defined(NEAREST_SAMPLING)
// Round to the center of the nearest voxel
voxelCoord = floor(voxelCoord) + vec3(0.5);
#endif
// Tile location
vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv);
// Slice location
float slice = voxelCoord.z - 0.5;
int sliceIndex = int(floor(slice));
int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1);
vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
// Voxel location
vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv;
// Final location in the megatexture
vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset;
#if defined(NEAREST_SAMPLING)
return getPropertiesFromMegatextureAtUv(uv0);
#else
float sliceLerp = fract(slice);
int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1);
vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset;
Properties properties0 = getPropertiesFromMegatextureAtUv(uv0);
Properties properties1 = getPropertiesFromMegatextureAtUv(uv1);
return mixProperties(properties0, properties1, sliceLerp);
#endif
}
// Convert an array of sample datas to a final weighted properties.
Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) {
#if (SAMPLE_COUNT == 1)
return getPropertiesFromMegatexture(sampleDatas[0]);
#else
// When more than one sample is taken the accumulator needs to start at 0
Properties properties = clearProperties();
for (int i = 0; i < SAMPLE_COUNT; ++i) {
float weight = sampleDatas[i].weight;
// Avoid reading the megatexture when the weight is 0 as it can be costly.
if (weight > 0.0) {
Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]);
tempProperties = scaleProperties(tempProperties, weight);
properties = sumProperties(properties, tempProperties);
}
}
return properties;
#endif
}
`;var eyt={XYZ:0,GLTF:1},Zm=Object.freeze(eyt);function tyt(e){let t=new JC;this.shaderBuilder=t;let n=e._customShader,i=At(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let p in o)if(o.hasOwnProperty(p)){let g=o[p];t.addUniform(g.type,p,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([nH]);let a=e._provider.shape;e.provider.metadataOrder===Zm.GLTF&&(t.addDefine("GLTF_METADATA_ORDER",void 0,pe.FRAGMENT),a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT)),t.addFragmentLines([n.fragmentShaderText,"#line 0",dH,eH,iH,hH]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([rH])),e._depthTest&&(t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),t.addFragmentLines([oH])),a==="BOX"?t.addFragmentLines([lH,sH,pS]):a==="CYLINDER"?t.addFragmentLines([uH,wP,aH,pS]):a==="ELLIPSOID"&&t.addFragmentLines([fH,wP,cH,pS]),t.addFragmentLines([tH]);let c=e._shape,u=c.shaderDefines;for(let p in u)if(u.hasOwnProperty(p)){let g=u[p];l(g)&&(g=g===!0?void 0:g,t.addDefine(p,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var mH=tyt;function nyt(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let O=0;O<c;O++){let M=i[O],N=o[O],_=`PropertyStatistics_${M}`,S=`PropertyStatistics_${M}`;n.addStruct(_,S,pe.FRAGMENT);let w=pH(N);n.addStructField(_,w,"min"),n.addStructField(_,w,"max")}let f="Statistics",h="Statistics",p="statistics";n.addStruct(f,h,pe.FRAGMENT);for(let O=0;O<c;O++){let M=i[O],N=`PropertyStatistics_${M}`,_=M;n.addStructField(f,N,_)}let g="Metadata",m="Metadata",x="metadata";n.addStruct(g,m,pe.FRAGMENT),n.addStructField(g,h,p);for(let O=0;O<c;O++){let M=i[O],N=o[O],_=pH(N);n.addStructField(g,_,M)}for(let O=0;O<c;O++){let M=i[O],N=o[O],_=oyt(N),S=`VoxelProperty_${M}`,w=`VoxelProperty_${M}`;n.addStruct(S,w,pe.FRAGMENT),n.addStructField(S,_,"partialDerivativeLocal"),n.addStructField(S,_,"partialDerivativeWorld"),n.addStructField(S,_,"partialDerivativeView"),n.addStructField(S,_,"partialDerivativeValid")}let b="Voxel",T="Voxel",C="voxel";n.addStruct(b,T,pe.FRAGMENT);for(let O=0;O<c;O++){let M=i[O],N=`VoxelProperty_${M}`;n.addStructField(b,N,M)}n.addStructField(b,"vec3","positionEC"),n.addStructField(b,"vec3","positionUv"),n.addStructField(b,"vec3","positionShapeUv"),n.addStructField(b,"vec3","positionUvLocal"),n.addStructField(b,"vec3","viewDirUv"),n.addStructField(b,"vec3","viewDirWorld"),n.addStructField(b,"vec3","surfaceNormal"),n.addStructField(b,"float","travelDistance"),n.addStructField(b,"int","stepCount"),n.addStructField(b,"int","tileIndex"),n.addStructField(b,"int","sampleIndex");let A="FragmentInput";n.addStruct(A,"FragmentInput",pe.FRAGMENT),n.addStructField(A,m,x),n.addStructField(A,T,C);let v="Properties",D="Properties",R="properties";n.addStruct(v,D,pe.FRAGMENT);for(let O=0;O<c;O++){let M=i[O],N=o[O],_=pH(N);n.addStructField(v,_,M)}{let O="clearProperties";n.addFunction(O,`${D} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(O,[`${D} ${R};`]);for(let M=0;M<c;M++){let N=i[M],_=o[M],S=r[M],w=pH(_,S);n.addFunctionLines(O,[`${R}.${N} = ${w}(0.0);`])}n.addFunctionLines(O,[`return ${R};`])}{let O="sumProperties";n.addFunction(O,`${D} sumProperties(${D} propertiesA, ${D} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(O,[`${D} ${R};`]);for(let M=0;M<c;M++){let N=i[M];n.addFunctionLines(O,[`${R}.${N} = propertiesA.${N} + propertiesB.${N};`])}n.addFunctionLines(O,[`return ${R};`])}{let O="scaleProperties";n.addFunction(O,`${D} scaleProperties(${D} ${R}, float scale)`,pe.FRAGMENT),n.addFunctionLines(O,[`${D} scaledProperties = ${R};`]);for(let M=0;M<c;M++){let N=i[M];n.addFunctionLines(O,[`scaledProperties.${N} *= scale;`])}n.addFunctionLines(O,["return scaledProperties;"])}{let O="mixProperties";n.addFunction(O,`${D} mixProperties(${D} propertiesA, ${D} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(O,[`${D} ${R};`]);for(let M=0;M<c;M++){let N=i[M];n.addFunctionLines(O,[`${R}.${N} = mix(propertiesA.${N}, propertiesB.${N}, mixFactor);`])}n.addFunctionLines(O,[`return ${R};`])}{let O="copyPropertiesToMetadata";n.addFunction(O,`void copyPropertiesToMetadata(in ${D} ${R}, inout ${m} ${x})`,pe.FRAGMENT);for(let M=0;M<c;M++){let N=i[M];n.addFunctionLines(O,[`${x}.${N} = ${R}.${N};`])}}if(u){let O="setStatistics";n.addFunction(O,`void setStatistics(inout ${h} ${p})`,pe.FRAGMENT);for(let M=0;M<c;M++){let N=i[M],_=o[M],S=lt.getComponentCount(_);for(let w=0;w<S;w++){let I=ryt(_,w),L=s[M][w],B=a[M][w];!l(L)||!l(B)||n.addFunctionLines(O,[`${p}.${N}.min${I} = ${hbe(L)};`,`${p}.${N}.max${I} = ${hbe(B)};`])}}}{let O="getPropertiesFromMegatextureAtUv";n.addFunction(O,`${D} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(O,[`${D} ${R};`]);for(let M=0;M<c;M++){let N=i[M],_=o[M],S=r[M],w=iyt(_,S);n.addFunctionLines(O,[`properties.${N} = texture(u_megatextureTextures[${M}], texcoord)${w};`])}n.addFunctionLines(O,[`return ${R};`])}}function pH(e){if(e===lt.SCALAR)return"float";if(e===lt.VEC2)return"vec2";if(e===lt.VEC3)return"vec3";if(e===lt.VEC4)return"vec4"}function iyt(e){if(e===lt.SCALAR)return".r";if(e===lt.VEC2)return".ra";if(e===lt.VEC3)return".rgb";if(e===lt.VEC4)return""}function oyt(e){if(e===lt.SCALAR)return"vec3";if(e===lt.VEC2)return"mat2";if(e===lt.VEC3)return"mat3";if(e===lt.VEC4)return"mat4"}function hbe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function ryt(e,t){return e===lt.SCALAR?"":`[${t}]`}var _H=nyt;function syt(e,t){let n=new mH(e);_H(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let T="getClippingPlane",C=$y(o,t),A=0,E=C.indexOf(")")+1,v=C.indexOf("{",E)+1,D=C.indexOf("}",v),R=C.slice(A,E),O=C.slice(v,D);i.addFunction(T,R,pe.FRAGMENT),i.addFunctionLines(T,[O])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ve.fromCache({cull:{enabled:!0,face:xi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:fn.PRE_MULTIPLIED_ALPHA_BLEND}),p=t.getViewportQuadVertexArray(),g=e._depthTest,m=new Qe({vertexArray:p,primitiveType:Ne.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:ve.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),x=Qe.shallowClone(m,new Qe);x.shaderProgram=u,x.pickOnly=!0;let b=Qe.shallowClone(m,new Qe);if(b.shaderProgram=f,b.pickOnly=!0,l(e._drawCommand)){let T=e._drawCommand;T.shaderProgram=T.shaderProgram&&T.shaderProgram.destroy()}if(l(e._drawCommandPick)){let T=e._drawCommandPick;T.shaderProgram=T.shaderProgram&&T.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let T=e._drawCommandPickVoxel;T.shaderProgram=T.shaderProgram&&T.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=x,e._drawCommandPickVoxel=b}var gH=syt;var ayt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},DP=Object.freeze(ayt);function cyt(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var yH=cyt;function _S(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}_S.prototype.getTexture=function(e){return this._textures[e]};function lyt(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}_S.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):lyt(this,e,t)};function uyt(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?xH(o,r,n):fyt(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function xH(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?pbe(e,n):new Rt({context:n,source:t,sampler:o});return mbe(o)&&r.generateMipmap(),r}function fyt(e,t,n){let{typedArray:i,sampler:o}=e,r=mbe(o),s=o.wrapS===En.REPEAT||o.wrapS===En.MIRRORED_REPEAT||o.wrapT===En.REPEAT||o.wrapT===En.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(P.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===Ke.UNSIGNED_BYTE){let h=yH(i,a,c),p=gx(h);return xH({sampler:o},p,n)}}else{let h=gx(t);return xH(e,h,n)}else return xH(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),pbe(e,n)}function mbe(e){return[$t.NEAREST_MIPMAP_NEAREST,$t.NEAREST_MIPMAP_LINEAR,$t.LINEAR_MIPMAP_NEAREST,$t.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function pbe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Rt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}_S.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];uyt(this,o,t)}n.length=0};_S.prototype.isDestroyed=function(){return!1};_S.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var bH=_S;function IP(e){e=y(e,y.EMPTY_OBJECT),this.mode=y(e.mode,Wg.MODIFY_MATERIAL),this.lightingModel=e.lightingModel,this.uniforms=y(e.uniforms,y.EMPTY_OBJECT),this.varyings=y(e.varyings,y.EMPTY_OBJECT),this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=y(e.translucencyMode,Ox.INHERIT),this._textureManager=new bH,this._defaultTexture=void 0,this.uniformMap=dyt(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},pyt(this),_yt(this)}function dyt(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===DP.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=hyt(e,i)):n[i]=myt(e,i)}return n}function hyt(e,t){return function(){return y(e._textureManager.getTexture(t),e._defaultTexture)}}function myt(e,t){return function(){return e.uniforms[t].value}}function jb(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function pyt(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,jb(r,t,o),o=e.usedVariablesVertex.featureIdSet,jb(r,n,o),o=e.usedVariablesVertex.metadataSet,jb(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,jb(s,t,o),o=e.usedVariablesFragment.featureIdSet,jb(s,n,o),o=e.usedVariablesFragment.metadataSet,jb(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;jb(s,a,c)}}function _be(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function gc(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${_be(t)} is not available in the ${i} shader. Did you mean ${_be(n)} instead?`;throw new de(o)}}function _yt(e){let t=e.usedVariablesVertex.attributeSet;gc(t,"position","positionMC","vertex"),gc(t,"normal","normalMC","vertex"),gc(t,"tangent","tangentMC","vertex"),gc(t,"bitangent","bitangentMC","vertex"),gc(t,"positionWC","positionMC","vertex"),gc(t,"positionEC","positionMC","vertex"),gc(t,"normalEC","normalMC","vertex"),gc(t,"tangentEC","tangentMC","vertex"),gc(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;gc(n,"position","positionEC","fragment"),gc(n,"normal","normalEC","fragment"),gc(n,"tangent","tangentEC","fragment"),gc(n,"bitangent","bitangentEC","fragment"),gc(n,"normalMC","normalEC","fragment"),gc(n,"tangentMC","tangentEC","fragment"),gc(n,"bitangentMC","bitangentEC","fragment")}IP.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===DP.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};IP.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};IP.prototype.isDestroyed=function(){return!1};IP.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var gS=IP;function R_(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(R_.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});R_.fromMetadataArray=function(e){return new R_({metadata:e})};R_.fromGltf=async function(e){let t=new om({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new R_({loader:t})};R_.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=gyt(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function gyt(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,p=e.find(b=>b.name===h);if(!l(p))continue;let g=Ft.toComponentDatatype(s[f]),m=lt.getComponentCount(r[f]),x=p.count*m;u[f]=X.createArrayBufferView(g,p.typedArray.buffer,p.typedArray.byteOffset+p.byteOffset,x)}return u}R_.prototype.isDestroyed=function(){return!1};R_.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var yS=R_;function ql(){this.orientedBoundingBox=new Dn,this.boundingSphere=new ce,this.boundTransform=new F,this.shapeTransform=new F,this._minBounds=d.clone(ql.DefaultMinBounds,new d),this._maxBounds=d.clone(ql.DefaultMaxBounds,new d),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var yyt=new d,NK=new d,xyt=new Z,byt=new d,Tyt=new d,Cyt=new d,Ayt=new d,gbe=F.fromRotationTranslation(Z.fromUniformScale(.5,new Z),new d(.5,.5,.5),new F);ql.prototype.update=function(e,t,n,i,o){i=y(i,ql.DefaultMinBounds),o=y(o,ql.DefaultMaxBounds);let r=ql.DefaultMinBounds,s=ql.DefaultMaxBounds;t=this._minBounds=d.clamp(t,r,s,this._minBounds),n=this._maxBounds=d.clamp(n,r,s,this._maxBounds),i=d.clamp(i,r,s,byt),o=d.clamp(o,r,s,Tyt);let a=d.clamp(t,i,o,Cyt),c=d.clamp(n,i,o,Ayt),u=F.getScale(e,NK);if(a.x>c.x||a.y>c.y||a.z>c.z||(a.x===c.x)+(a.y===c.y)+(a.z===c.z)>=2||i.x>o.x||i.y>o.y||i.z>o.z||u.x===0||u.y===0||u.z===0)return!1;this.shapeTransform=F.clone(e,this.shapeTransform),this.orientedBoundingBox=BK(a,c,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=F.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ce.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:f,shaderDefines:h}=this;for(let m in h)h.hasOwnProperty(m)&&(h[m]=void 0);let p=!d.equals(t,r)||!d.equals(n,s),g=0;if(h.BOX_INTERSECTION_INDEX=g,g+=1,f.renderMinBounds=F.multiplyByPoint(gbe,a,f.renderMinBounds),f.renderMaxBounds=F.multiplyByPoint(gbe,c,f.renderMaxBounds),p){h.BOX_HAS_SHAPE_BOUNDS=!0;let m=t,x=n;f.boxUvToShapeUvScale=d.fromElements(2/(m.x===x.x?1:x.x-m.x),2/(m.y===x.y?1:x.y-m.y),2/(m.z===x.z?1:x.z-m.z),f.boxUvToShapeUvScale),f.boxUvToShapeUvTranslate=d.fromElements(-f.boxUvToShapeUvScale.x*(m.x*.5+.5),-f.boxUvToShapeUvScale.y*(m.y*.5+.5),-f.boxUvToShapeUvScale.z*(m.z*.5+.5),f.boxUvToShapeUvTranslate)}return this.shaderMaximumIntersectionsLength=g,!0};var TH=new d,FK=new d;ql.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(P.lerp(r.x,s.x,a*t),P.lerp(r.y,s.y,a*n),P.lerp(r.z,s.z,a*i),TH),u=d.fromElements(P.lerp(r.x,s.x,a*(t+1)),P.lerp(r.y,s.y,a*(n+1)),P.lerp(r.z,s.z,a*(i+1)),FK);return BK(c,u,this.shapeTransform,o)};var ybe=new d;ql.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,ybe),s=d.multiplyByScalar(r,o,ybe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,TH),o,TH),c=d.add(a,s,FK),u=this._minBounds,f=this._maxBounds,h=d.fromElements(P.lerp(u.x,f.x,a.x),P.lerp(u.y,f.y,a.y),P.lerp(u.z,f.z,a.z),TH),p=d.fromElements(P.lerp(u.x,f.x,c.x),P.lerp(u.y,f.y,c.y),P.lerp(u.z,f.z,c.z),FK);return BK(h,p,this.shapeTransform,i)};ql.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));ql.DefaultMaxBounds=Object.freeze(new d(1,1,1));function BK(e,t,n,i){let o=ql.DefaultMinBounds,r=ql.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=F.getTranslation(n,i.center),i.halfAxes=F.getMatrix3(n,i.halfAxes);else{let a=F.getScale(n,NK),c=d.midpoint(e,t,yyt);i.center=F.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),NK);let u=F.getRotation(n,xyt);i.halfAxes=Z.setScale(u,a,i.halfAxes)}return i}var M_=ql;function es(){this.orientedBoundingBox=new Dn,this.boundingSphere=new ce,this.boundTransform=new F,this.shapeTransform=new F,this._minimumRadius=es.DefaultMinBounds.x,this._maximumRadius=es.DefaultMaxBounds.x,this._minimumAngle=es.DefaultMinBounds.y,this._maximumAngle=es.DefaultMaxBounds.y,this._minimumHeight=es.DefaultMinBounds.z,this._maximumHeight=es.DefaultMaxBounds.z,this.shaderUniforms={cylinderRenderRadiusMinMax:new U,cylinderRenderAngleMinMax:new U,cylinderRenderHeightMinMax:new U,cylinderUvToShapeUvRadius:new U,cylinderUvToShapeUvAngle:new U,cylinderUvToShapeUvHeight:new U,cylinderShapeUvAngleMinMax:new U,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var Cbe=new d;es.prototype.update=function(e,t,n,i,o){i=y(i,es.DefaultMinBounds),o=y(o,es.DefaultMaxBounds);let r=es.DefaultMinBounds.x,s=es.DefaultMaxBounds.x,a=es.DefaultMinBounds.y,c=es.DefaultMaxBounds.y,u=es.DefaultMinBounds.z,f=es.DefaultMaxBounds.z,h=c-a,p=.5*h,g=P.EPSILON10,m=P.EPSILON3,x=P.EPSILON10,b=P.clamp(t.x,r,s),T=P.clamp(n.x,r,s),C=P.clamp(i.x,r,s),A=P.clamp(o.x,r,s),E=Math.max(b,C),v=Math.min(T,A),D=P.negativePiToPi(t.y),R=P.negativePiToPi(n.y),O=P.negativePiToPi(i.y),M=P.negativePiToPi(o.y),N=Math.max(D,O),_=Math.min(R,M),S=P.clamp(t.z,u,f),w=P.clamp(n.z,u,f),I=P.clamp(i.z,u,f),L=P.clamp(o.z,u,f),B=Math.max(S,I),H=Math.min(w,L),V=F.getScale(e,Cbe);if(v===0||E>v||B>H||P.equalsEpsilon(V.x,0,void 0,g)||P.equalsEpsilon(V.y,0,void 0,g)||P.equalsEpsilon(V.z,0,void 0,g))return!1;this._minimumRadius=b,this._maximumRadius=T,this._minimumAngle=D,this._maximumAngle=R,this._minimumHeight=S,this._maximumHeight=w,this.shapeTransform=F.clone(e,this.shapeTransform),this.orientedBoundingBox=VK(E,v,N,_,B,H,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=F.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ce.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let W=b===r&&T===s,q=R<D,J=R-D+q*h,j=J>p+x&&J<h-x,K=J<p-x,Q=J>=p-x&&J<=p+x,he=j||K||Q,ye=P.equalsEpsilon(D,a,void 0,m),re=P.equalsEpsilon(R,c,void 0,m),_e=S===u&&w===f,be=E===r,we=_<N,De=_-N+we*h,Me=De>=p-x&&De<h-x,Re=De>x&&De<p-x,rt=De<=x,Ye=Me||Re||rt,{shaderUniforms:dt,shaderDefines:Xe}=this;for(let ft in Xe)Xe.hasOwnProperty(ft)&&(Xe[ft]=void 0);let _t=0;if(Xe.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=_t,_t+=1,be||(Xe.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,Xe.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=_t,_t+=1),dt.cylinderRenderRadiusMinMax=U.fromElements(E,v,dt.cylinderRenderRadiusMinMax),E===v&&(Xe.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!W){Xe.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let ft=T-b,ht=0,vn=1;ft!==0&&(ht=1/ft,vn=-b/ft),dt.cylinderUvToShapeUvRadius=U.fromElements(ht,vn,dt.cylinderUvToShapeUvRadius)}if(!_e){Xe.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let ft=w-S,ht=0,vn=1;ft!==0&&(ht=2/ft,vn=-(S+1)/ft),dt.cylinderUvToShapeUvHeight=U.fromElements(ht,vn,dt.cylinderUvToShapeUvHeight)}if(dt.cylinderRenderHeightMinMax=U.fromElements(B,H,dt.cylinderRenderHeightMinMax),q&&(Xe.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),Ye&&(Xe.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,Xe.CYLINDER_INTERSECTION_INDEX_ANGLE=_t,Me?(Xe.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,_t+=1):Re?(Xe.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,_t+=2):rt&&(Xe.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,_t+=2),dt.cylinderRenderAngleMinMax=U.fromElements(N,_,dt.cylinderRenderAngleMinMax)),he){Xe.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,ye&&(Xe.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),re&&(Xe.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let ft=(D-a)/h,ht=(R-a)/h,vn=1-J/h;if(dt.cylinderShapeUvAngleMinMax=U.fromElements(ft,ht,dt.cylinderShapeUvAngleMinMax),dt.cylinderShapeUvAngleRangeZeroMid=(ht+.5*vn)%1,J<=x)dt.cylinderUvToShapeUvAngle=U.fromElements(0,1,dt.cylinderUvToShapeUvAngle);else{let tn=h/J,Te=-(D-a)/J;dt.cylinderUvToShapeUvAngle=U.fromElements(tn,Te,dt.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=_t,!0};es.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minimumRadius,s=this._maximumRadius,a=this._minimumAngle,c=this._maximumAngle,u=this._minimumHeight,f=this._maximumHeight,h=1/Math.pow(2,e),p=P.lerp(r,s,t*h),g=P.lerp(r,s,(t+1)*h),m=P.lerp(a,c,n*h),x=P.lerp(a,c,(n+1)*h),b=P.lerp(u,f,i*h),T=P.lerp(u,f,(i+1)*h);return VK(p,g,m,x,b,T,this.shapeTransform,o)};var xbe=new d,bbe=new d,Eyt=new d;es.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,xbe),s=d.multiplyByScalar(r,o,xbe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,bbe),o,bbe),c=d.add(a,s,Eyt),u=this._minimumRadius,f=this._maximumRadius,h=this._minimumHeight,p=this._maximumHeight,g=this._minimumAngle,m=this._maximumAngle,x=P.lerp(u,f,a.x),b=P.lerp(u,f,c.x),T=P.lerp(h,p,a.y),C=P.lerp(h,p,c.y),A=P.lerp(g,m,a.z),E=P.lerp(g,m,c.z);return VK(x,b,A,E,T,C,this.shapeTransform,i)};es.DefaultMinBounds=Object.freeze(new d(0,-P.PI,-1));es.DefaultMaxBounds=Object.freeze(new d(1,+P.PI,1));var Syt=5,vyt=new Array(Syt),wyt=new d,Dyt=new Z,Iyt=new F,Pyt=new F,Oyt=new F,kK=new F,Ryt=new d,Myt=new d,Lyt=new d,Abe=new Array(8);for(let e=0;e<8;e++)Abe[e]=new d;function Tbe(e,t,n){return Math.abs(oe.dot(e,t))<n}function Nyt(e){let t=F.getColumn(e,0,Ryt),n=F.getColumn(e,1,Myt),i=F.getColumn(e,2,Lyt),o=P.EPSILON4;return Tbe(t,n,o)&&Tbe(n,i,o)}function Fyt(e,t){let n=Abe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)F.multiplyByPoint(e,n[i],n[i]);return Dn.fromPoints(n,t)}function VK(e,t,n,i,o,r,s,a){let c=es.DefaultMinBounds,u=es.DefaultMaxBounds,f=c.x,h=u.x,p=c.y,g=u.y,m=c.z,x=u.z;if(e===f&&t===h&&o===m&&r===x&&n===p&&i===g)return a.center=F.getTranslation(s,a.center),a.halfAxes=F.getMatrix3(s,a.halfAxes),a;i<n&&(i+=P.TWO_PI);let T=i-n,C=n+T*.5,A=vyt,E=0;A[E++]=n,A[E++]=i,A[E++]=C,T>P.PI&&(A[E++]=C-P.PI_OVER_TWO,A[E++]=C+P.PI_OVER_TWO);let v=1,D=1,R=-1,O=-1;for(let J=0;J<E;++J){let j=A[J]-C,K=Math.cos(j),Q=Math.sin(j),he=K*e,ye=Q*e,re=K*t,_e=Q*t;v=Math.min(v,he),D=Math.min(D,ye),v=Math.min(v,re),D=Math.min(D,_e),R=Math.max(R,he),O=Math.max(O,ye),R=Math.max(R,re),O=Math.max(O,_e)}let M=R-v,N=O-D,_=r-o,S=(v+R)*.5,w=(D+O)*.5,I=(o+r)*.5,L=d.fromElements(S,w,I,wyt),B=Z.fromRotationZ(C,Dyt),H=d.fromElements(M,N,_,Cbe),V=F.fromScale(H,Oyt),G=F.fromRotation(B,Pyt),k=F.fromTranslation(L,Iyt),W=F.multiplyTransformation(G,F.multiplyTransformation(k,V,kK),kK),q=F.multiplyTransformation(s,W,kK);return Nyt(q)?Dn.fromTransformation(q,a):Fyt(q,a)}var L_=es;function N_(){this.orientedBoundingBox=new Dn,this.boundingSphere=new ce,this.boundTransform=new F,this.shapeTransform=new F,this._rectangle=new ae,this._minimumHeight=N_.DefaultMinBounds.z,this._maximumHeight=N_.DefaultMaxBounds.z,this._ellipsoid=new ee,this._translation=new d,this._rotation=new Z,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new U,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new U,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new U,ellipsoidUvToShapeUvLatitude:new U,ellipsoidRenderLatitudeSinMinMax:new U,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new U},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var Byt=new d,kyt=new d,Vyt=new d,Uyt=new d,zyt=new d,Hyt=new d,Gyt=new d,Wyt=new d,jyt=new Z,Ebe=new d,Sbe=new d,qyt=new ae;N_.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=N_;i=y(i,r),o=y(o,s);let a=P.EPSILON10,c=P.EPSILON3,u=P.EPSILON10,f=P.EPSILON10,h=P.EPSILON3,p=F.getScale(e,Wyt),g=d.clone(r,Byt);g.z=-d.minimumComponent(p);let m=d.clamp(t,g,s,kyt),x=d.clamp(n,g,s,Vyt),b=d.clamp(i,g,s,Uyt),T=d.clamp(o,g,s,zyt),C=d.maximumByComponent(m,b,Hyt),A=d.minimumByComponent(x,T,Gyt),E=d.add(p,d.fromElements(x.z,x.z,x.z,Ebe),Ebe),v=d.maximumComponent(E),D=d.add(p,d.fromElements(A.z,A.z,A.z,Sbe),Sbe);if(C.y>A.y||C.y===s.y||A.y===r.y||C.z>A.z||P.equalsEpsilon(D,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,x.x,x.y),this._translation=F.getTranslation(e,this._translation),this._rotation=F.getRotation(e,this._rotation),this._ellipsoid=ee.fromCartesian3(p,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=x.z;let R=ae.fromRadians(C.x,C.y,A.x,A.y,qyt);this.orientedBoundingBox=UK(R,C.z,A.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=F.fromRotationTranslation(Z.setScale(this._rotation,E,jyt),this._translation,this.shapeTransform),this.boundTransform=F.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ce.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let O=s.x-r.x,M=.5*O,N=A.x<C.x,_=A.x-C.x+N*O,S=_<=u,w=_>=M-u&&_<O-u,I=_>u&&_<M-u,L=S||w||I,B=x.x<m.x,H=x.x-m.x+B*O,V=H>M+u&&H<O-u,G=H>=M-u&&H<=M+u,k=H<M-u,W=V||G||k,q=A.y<-h,J=A.y>=-h&&A.y<=+h,j=A.y>+h&&A.y<s.y-f,K=q||J||j,Q=C.y>r.y+f&&C.y<-h,he=C.y>=-h&&C.y<=+h,ye=C.y>+h,re=Q||he||ye,_e=K||re,be=x.y-m.y,we=x.y<-h,De=x.y>=-h&&x.y<=+h,Me=x.y>+h&&x.y<s.y-f,Re=we||De||Me,rt=m.y>r.y+f&&m.y<-h,Ye=m.y>=-h&&m.y<=+h,dt=m.y>+h,_t=Re||(rt||Ye||dt),{shaderUniforms:ft,shaderDefines:ht}=this;for(let Ro in ht)ht.hasOwnProperty(Ro)&&(ht[Ro]=void 0);ft.ellipsoidRadiiUv=d.divideByScalar(E,v,ft.ellipsoidRadiiUv);let{x:vn,z:tn}=ft.ellipsoidRadiiUv,Te=tn/vn;ft.eccentricitySquared=1-Te*Te,ft.evoluteScale=U.fromElements((vn*vn-tn*tn)/vn,(tn*tn-vn*vn)/tn,ft.evoluteScale),ft.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(ft.ellipsoidRadiiUv,ft.ellipsoidRadiiUv,ft.ellipsoidInverseRadiiSquaredUv),ft.ellipsoidInverseRadiiSquaredUv);let Ae=0;ht.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Ae,Ae+=1,ht.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Ae,Ae+=1,ft.clipMinMaxHeight=U.fromElements((C.z-x.z)/v,(A.z-x.z)/v,ft.clipMinMaxHeight);let Mn=(x.z-m.z)/v;if(ft.ellipsoidInverseHeightDifferenceUv=1/Mn,m.z===x.z&&(ft.ellipsoidInverseHeightDifferenceUv=0),L&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,ht.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Ae,w?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Ae+=1):I?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Ae+=2):S&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Ae+=2),ft.ellipsoidRenderLongitudeMinMax=U.fromElements(C.x,A.x,ft.ellipsoidRenderLongitudeMinMax)),W)if(ht.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,x.x<m.x&&(ht.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),H<=u)ft.ellipsoidUvToShapeUvLongitude=U.fromElements(0,1,ft.ellipsoidUvToShapeUvLongitude);else{let Wo=O/H,Sr=-(m.x-r.x)/H;ft.ellipsoidUvToShapeUvLongitude=U.fromElements(Wo,Sr,ft.ellipsoidUvToShapeUvLongitude)}if(L){let Ro=P.equalsEpsilon(C.x,r.x,void 0,c),Wo=P.equalsEpsilon(A.x,s.x,void 0,c);Ro&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Wo&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Sr=(m.x-r.x)/O,ea=(x.x-r.x)/O,ys=(A.x-r.x)/O,ta=1-_/O,Fe=(ys+.5*ta)%1;ft.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Sr,ea,Fe,ft.ellipsoidShapeUvLongitudeMinMaxMid)}if(_e&&(re&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,ht.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Ae,Q?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Ae+=1):he?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Ae+=1):ye&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Ae+=2)),K&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,ht.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Ae,q?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Ae+=2):J?(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Ae+=1):j&&(ht.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Ae+=1)),ft.ellipsoidRenderLatitudeSinMinMax=U.fromElements(Math.sin(C.y),Math.sin(A.y),ft.ellipsoidRenderLatitudeSinMinMax)),_t)if(ht.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,be<f)ft.ellipsoidUvToShapeUvLatitude=U.fromElements(0,1,ft.ellipsoidUvToShapeUvLatitude);else{let Wo=(s.y-r.y)/be,Sr=(r.y-m.y)/be;ft.ellipsoidUvToShapeUvLatitude=U.fromElements(Wo,Sr,ft.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Ae,!0};var Dbe=new ae;N_.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,p=ae.subsection(this._rectangle,s,c,a,u,Dbe),g=P.lerp(this._minimumHeight,this._maximumHeight,f),m=P.lerp(this._minimumHeight,this._maximumHeight,h);return UK(p,g,m,this._ellipsoid,this._translation,this._rotation,o)};var vbe=new d,wbe=new d,Yyt=new d;N_.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,vbe),s=d.multiplyByScalar(r,o,vbe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,wbe),o,wbe),c=d.add(a,s,Yyt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,Dbe),f=P.lerp(this._minimumHeight,this._maximumHeight,a.z),h=P.lerp(this._minimumHeight,this._maximumHeight,c.z);return UK(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function UK(e,t,n,i,o,r,s){return s=Dn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=Z.multiply(s.halfAxes,r,s.halfAxes),s}N_.DefaultMinBounds=Object.freeze(new d(-P.PI,-P.PI_OVER_TWO,-ee.WGS84.minimumRadius));N_.DefaultMaxBounds=Object.freeze(new d(P.PI,P.PI_OVER_TWO,10*ee.WGS84.maximumRadius));var xS=N_;var ku={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};ku.getMinBounds=function(e){switch(e){case ku.BOX:return M_.DefaultMinBounds;case ku.ELLIPSOID:return xS.DefaultMinBounds;case ku.CYLINDER:return L_.DefaultMinBounds}};ku.getMaxBounds=function(e){switch(e){case ku.BOX:return M_.DefaultMaxBounds;case ku.ELLIPSOID:return xS.DefaultMaxBounds;case ku.CYLINDER:return L_.DefaultMaxBounds}};ku.getShapeConstructor=function(e){switch(e){case ku.BOX:return M_;case ku.ELLIPSOID:return xS;case ku.CYLINDER:return L_}};var zi=Object.freeze(ku);function gh(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(gh.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});gh.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new gh({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};gh.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};gh.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)Ibe(this,t)};gh.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,Ibe(this,i),t};gh.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],Pbe(this,0)),this._array[e-1]=void 0,t};gh.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=zK(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&Pbe(this,n)}return this._array[e-1]=void 0,t};gh.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};gh.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[zK(this,1,2)?1:2]};function CH(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function PP(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function zK(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function Ibe(e,t){if(t===0)return;let n=Math.floor(P.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=PP(e,t,i);for(o!==n&&(CH(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(PP(e,t,r)!==o)break;CH(e,t,r),t=r}}function Pbe(e,t){let n=e._length,i=Math.floor(P.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){PP(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;PP(e,f,r)===i&&(r=f)}}if(PP(e,r,t)===i&&(CH(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);zK(e,r,a)===i&&CH(e,r,a)}t=r}}var bS=gh;var HK=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function OP(e,t){this.spatialNode=e,this.keyframe=t,this.state=HK.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}OP.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=HK.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};OP.priorityComparator=function(e,t){return e.priority-t.priority};OP.searchComparator=function(e,t){return e.keyframe-t.keyframe};OP.LoadState=HK;var xo=OP;function h0(e,t,n,i,o){if(o=Math.min(y(o,128*1024*1024),536870912),i===Ft.UNSIGNED_SHORT&&(i=Ft.FLOAT32),i===Ft.FLOAT32&&!e.floatingPointTexture)throw new se("Floating point texture not supported");let s=Xyt(i),a=Kyt(n,e.webgl2),c=Ft.getSizeInBytes(i),u=$yt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),p=f*t.x,g=h*t.y,m=Math.floor(u/p),x=Math.floor(u/g);if(m===0||x===0)throw new se("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*x,this.regionCountPerMegatexture=new U(m,x),this.voxelCountPerRegion=new U(p,g),this.sliceCountPerRegion=new U(f,h),this.voxelSizeUv=new U(1/u,1/u),this.sliceSizeUv=new U(t.x/u,t.y/u),this.regionSizeUv=new U(p/u,g/u),this.texture=new Rt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR,magnificationFilter:pi.LINEAR})});let b=Ft.toComponentDatatype(i);this.tileVoxelDataTemp=X.createTypedArray(b,p*g*n),this.nodes=new Array(this.maximumTileCount);for(let T=0;T<this.maximumTileCount;T++)this.nodes[T]=new Zyt(T);for(let T=0;T<this.maximumTileCount;T++){let C=this.nodes[T];C.previousNode=T>0?this.nodes[T-1]:void 0,C.nextNode=T<this.maximumTileCount-1?this.nodes[T+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function Xyt(e){if(e===Ft.FLOAT32||e===Ft.FLOAT64)return Ke.FLOAT;if(e===Ft.UINT8)return Ke.UNSIGNED_BYTE}function Kyt(e,t){if(e===1)return t?nt.RED:nt.LUMINANCE;if(e===2)return t?nt.RG:nt.LUMINANCE_ALPHA;if(e===3)return nt.RGB;if(e===4)return nt.RGBA}function $yt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(kt.maximumTextureSize,P.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function Zyt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}h0.prototype.add=function(e){if(this.isFull())throw new de("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};h0.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new de("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};h0.prototype.isFull=function(){return this.emptyList===void 0};h0.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===Ft.UNSIGNED_SHORT&&(i=Ft.FLOAT32);let o=Ft.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=P.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let p=Math.floor(f/c),g=Math.floor(f/u);if(p*g>=e)break;f*=2}return f*f*n*o};h0.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,x=Math.floor(g/r.x)*o.y;for(let b=0;b<o.y;b++){let T=Qyt(o,b,g),C=(x+b)*s.x+m;for(let A=0;A<o.x;A++){let E=T+A,v=C+A;for(let D=0;D<a;D++)i[v*a+D]=n[E*a+D]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,p={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(p)};function Qyt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}h0.prototype.isDestroyed=function(){return!1};h0.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var RP=h0;function nd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Dn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var Jyt=new d;nd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=Z.getScale(this.orientedBoundingBox.halfAxes,Jyt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};nd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,p=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=p.map(([g,m,x,b])=>new nd(g,m,x,b,this,e,this.dimensions))};nd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};nd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,P.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var Obe={keyframe:0};function MP(e,t){return Obe.keyframe=e,No(t,Obe,xo.searchComparator)}nd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let p=e0t(i,h),g=h[p],m=o===i||i<g.keyframe?p:Math.min(p+1,h.length-1),x=h[m],b=i-g.keyframe,T=Rbe(n-t.level,b);T<a&&(a=T,r=g);let C=x.keyframe-o,A=Rbe(n-t.level,C);if(A<c&&(c=A,s=x),b===0&&C===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:P.clamp((e-u)/(f-u),0,1)};function e0t(e,t){let n=MP(e,t);return n<0?P.clamp(~n-1,0,t.length-1):n}function Rbe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}nd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};nd.prototype.createKeyframeNode=function(e){let t=MP(e,this.keyframeNodes);if(t<0){t=~t;let n=new xo(this,e);this.keyframeNodes.splice(t,0,n)}};nd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=MP(n,this.keyframeNodes);if(i<0)throw new de("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=MP(n,this.renderableKeyframeNodes);if(o<0)throw new de("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};nd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new de("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=MP(e.keyframe,i);if(o>=0)throw new de("Keyframe already renderable");o=~o,i.splice(o,0,e)};nd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var AH=nd;function m0(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===Zm.GLTF){let A=h.y;h.y=h.z,h.z=A}!l(i)&&l(o.maximumTileCount)&&(i=h0t(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let A=0;A<c.length;A++){let E=c[A],v=lt.getComponentCount(E),D=u[A];this.megatextures[A]=new RP(t,h,v,D,i),this.textureMemoryByteLength+=this.megatextures[A].textureMemoryByteLength}let p=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=y(this._primitive._calculateStatistics,!1),this._frameNumber=0;let g=e._shape;this.rootNode=new AH(0,0,0,0,void 0,g,r),this._priorityQueue=new bS({maximumLength:p,comparator:xo.priorityComparator}),this._highPriorityKeyframeNodes=new Array(p),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(p),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,GK(m,1,n-2,0);let x=9,b=2048,T=Math.floor(b/x),C=Math.ceil(p/T);this.internalNodeTexture=new Rt({context:t,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,flipY:!1,width:b,height:C,sampler:new Zt({minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=T,this.internalNodeTexelSizeUv=new U(1/b,1/C),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new U}m0.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function GK(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,GK(e,t,o-1,i+1),GK(e,o+1,n,i+1)}m0.simultaneousRequestCountMaximum=50;m0.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let p=h>=2;if(p&&!l(this.leafNodeTexture)){let A=Math.floor(512),E=Math.ceil(s/A);this.leafNodeTexture=new Rt({context:r,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,flipY:!1,width:1024,height:E,sampler:new Zt({minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=U.fromElements(1/1024,1/E,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=A}else!p&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=P.clamp(t,0,a-1),n&&Mbe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Ai();i0t(this,e),o0t(this,e);let m=Ai();l0t(this,h,c);let x=Ai(),b=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||b){let T=m-g,C=x-m,A=x-g;c0t(this,e,T,C,A)}};m0.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};m0.prototype.isDestroyed=function(){return!1};m0.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function Mbe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];Mbe(e,i)}}function t0t(e,t){if(e._simultaneousRequestCount>=m0.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?xo.LoadState.PROCESSING:xo.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=xo.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=xo.LoadState.RECEIVING,u.then(s).catch(a))}function n0t(e){return e/(1+e)}function i0t(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),Lbe(e.rootNode,As.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function o0t(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(r0t);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===xo.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===xo.LoadState.UNLOADED&&t0t(e,f),f.state===xo.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!s0t(h.metadata,e)){f.content=void 0,f.state=xo.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let p=0;if(n.isFull()){p=i-1-a,a++;let g=o[p];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else p=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=xo.LoadState.LOADED,o[p]=f,e._primitive.tileLoad.raiseEvent()}}}function r0t(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function s0t(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],p=f*s;if(h.length!==p)return!1}return!0}function Lbe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===As.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let p=n._primitive,g=p._shape,m=p.screenSpaceError,x=n._priorityQueue,b=n._keyframeCount,T=P.clamp(Math.floor(n._keyframeLocation),0,b-2),C=T+1;if(b===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==b)for(let R=0;R<b;R++)e.createKeyframeNode(R);let{screenSpaceError:A,keyframeNodes:E}=e,v=n0t(A),D=!1;for(let R=0;R<E.length;R++){let O=E[R];O.priority=10*v+a0t(T,O.keyframe,C,n),O.state!==xo.LoadState.UNAVAILABLE&&O.state!==xo.LoadState.FAILED&&O.priority!==-Number.MAX_VALUE&&x.insert(O),O.state===xo.LoadState.LOADED&&(D=!0)}if(A<m||!D){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let R=0;R<8;R++){let O=e.children[R];Lbe(O,t,n,i)}}function a0t(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return P.lerp(a,s,.15+.85*s)}function c0t(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(xo.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let D=0;D<a;D++){let R=new Array(r).fill(0);c[D]=R,u[D]=0}function h(D){let R=D.keyframeNodes;for(let O=0;O<R.length;O++){let M=R[O],N=M.keyframe,_=M.state;c[_][N]+=1,u[_]+=1,f++}if(l(D.children))for(let O=0;O<8;O++){let M=D.children[O];h(M)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[xo.LoadState.LOADED],e._primitive.statistics.visited=f;let p=u[xo.LoadState.RECEIVING],g=u[xo.LoadState.PROCESSING],m=p!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(p,g),!0}),e._primitive.statistics.numberOfPendingRequests=p,e._primitive.statistics.numberOfTilesProcessing=g,m&&(p===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let b=`KEYFRAMES: ${c[xo.LoadState.LOADED]}`,T=`UNLOADED: ${u[xo.LoadState.UNLOADED]} | RECEIVING: ${u[xo.LoadState.RECEIVING]} | PROCESSING: ${u[xo.LoadState.PROCESSING]} | LOADED: ${u[xo.LoadState.LOADED]} | FAILED: ${u[xo.LoadState.FAILED]} | UNAVAILABLE: ${u[xo.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,C=Math.round(n*100)/100,A=Math.round(i*100)/100,E=Math.round(o*100)/100,v=`LOAD: ${C} | OCT: ${A} | ALL: ${E}`;console.log(`${b} || ${T} || ${v}`)}var EH={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function l0t(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,x,b,T){let C=!1;if(l(g.children))for(let A=0;A<8;A++){let E=g.children[A];E.computeSurroundingRenderableKeyframeNodes(o),E.isRenderable(r)&&(C=!0)}if(C){u[T]=EH.INTERNAL<<16|m,u[x]=b,a++,b=m,T=b*9+1;for(let A=0;A<8;A++){let E=g.children[A];m=a,x=m*9+0,h(E,m,x,b,T+A)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let A=c*5,E=g.renderableKeyframeNodePrevious,v=g.level-E.spatialNode.level,D=E.spatialNode.parent,R=l(D)?D.renderableKeyframeNodePrevious:E,O=u0t(g,i,n),M=v,N=1,_=E.megatextureIndex,S=R.megatextureIndex;f[A+0]=O,f[A+1]=M,f[A+2]=N,f[A+3]=_,f[A+4]=S,u[T]=EH.LEAF<<16|c}else{let A=g.renderableKeyframeNodePrevious,v=g.level-A.spatialNode.level===0?EH.LEAF:EH.PACKED_LEAF_FROM_PARENT;u[T]=v<<16|A.megatextureIndex}c++}}let p=e.rootNode;p.computeSurroundingRenderableKeyframeNodes(o),p.isRenderable(r)&&h(p,0,0,0,0),f0t(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&d0t(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function u0t(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return P.clamp(s,0,1)}function f0t(e,t,n,i){let o=nt.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let p=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=p>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function d0t(e,t,n,i){let o=nt.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let p=0;p<s;p++){let g=e[p*r+0],m=e[p*r+1],x=e[p*r+2],b=e[p*r+3],T=e[p*r+4],C=P.clamp(Math.floor(65536*g),0,65535);u[p*8+0]=C>>>0&255,u[p*8+1]=C>>>8&255,u[p*8+2]=m&255,u[p*8+3]=x&255,u[p*8+4]=b>>>0&255,u[p*8+5]=b>>>8&255,u[p*8+6]=T>>>0&255,u[p*8+7]=T>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function h0t(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=lt.getComponentCount(a);o+=RP.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var SH=m0;function Qm(e){e=y(e,y.EMPTY_OBJECT),this._ready=!1,this._provider=y(e.provider,Qm.DefaultProvider),this._traversal=void 0,this._statistics=new pm,this._calculateStatistics=y(e.calculateStatistics,!1),this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._exaggeratedModelMatrix=F.clone(this._modelMatrix),this._compoundModelMatrix=new F,this._compoundModelMatrixOld=new F,this._customShader=y(e.customShader,Qm.DefaultCustomShader),this._customShaderCompilationEvent=new me,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new F,this._transformPositionUvToWorld=new F,this._transformDirectionWorldToLocal=new Z,this._transformNormalLocalToWorld=new Z,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new dm,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new U,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new U,megatextureTextures:[],megatextureSliceDimensions:new U,megatextureTileDimensions:new U,megatextureVoxelSizeUv:new U,megatextureSliceSizeUv:new U,megatextureTileSizeUv:new U,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new F,transformPositionUvToView:new F,transformDirectionViewToLocal:new Z,transformNormalLocalToWorld:new Z,cameraPositionUv:new d,ndcSpaceAxisAlignedBoundingBox:new oe,clippingPlanesTexture:void 0,clippingPlanesMatrix:new F,stepSize:0,pickColor:new z},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new me,this.tileVisible=new me,this.tileFailed=new me,this.tileUnload=new me,this.loadProgress=new me,this.allTilesLoaded=new me,this.initialTilesLoaded=new me;let i=this._provider;m0t(this,i)}function m0t(e,t){let{shape:n,minBounds:i=zi.getMinBounds(n),maxBounds:o=zi.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=zi.getMinBounds(n),e.maxClippingBounds=zi.getMaxBounds(n),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=F.clone(e._modelMatrix,e._exaggeratedModelMatrix),Fbe(e,t);let r=zi.getShapeConstructor(n);e._shape=new r,e._shapeVisible=Bbe(e,e._shape,t)}Object.defineProperties(Qm.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=F.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=P.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Es.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=Qm.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var p0t=new oe,_0t=new oe,g0t=new d,y0t=new d,x0t=new Z,b0t=new Z,T0t=new F,C0t=new F,A0t=new F,E0t=F.fromRotationTranslation(Z.fromUniformScale(.5,new Z),new d(.5,.5,.5),new F),S0t=F.fromRotationTranslation(Z.fromUniformScale(2,new Z),new d(-1,-1,-1),new F);Qm.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){O0t(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}I0t(this,e);let i=Fbe(this,t),o=this._shape;if(i&&(this._shapeVisible=Bbe(this,o,t),M0t(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=L0t(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&H0t(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),N0t(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=U.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(gH(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,p=o.orientedBoundingBox,g=k0t(p,h,_0t);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=oe.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let x=n.uniformState.inverseView;f.transformPositionViewToUv=F.multiplyTransformation(this._transformPositionWorldToUv,x,f.transformPositionViewToUv);let b=n.uniformState.view;f.transformPositionUvToView=F.multiplyTransformation(b,this._transformPositionUvToWorld,f.transformPositionUvToView);let T=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=Z.multiply(this._transformDirectionWorldToLocal,T,f.transformDirectionViewToLocal),f.transformNormalLocalToWorld=Z.clone(this._transformNormalLocalToWorld,f.transformNormalLocalToWorld);let C=e.camera.positionWC;f.cameraPositionUv=F.multiplyByPoint(this._transformPositionWorldToUv,C,f.cameraPositionUv),f.stepSize=this._stepSizeMultiplier;let A=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;A.boundingVolume=o.boundingSphere,e.commandList.push(A)};var v0t=new d,WK=new d,w0t=new fe,D0t=new d;function I0t(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===zi.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else if(e.shape===zi.BOX){let n=d.fromElements(1,1,t.verticalExaggeration,v0t);e._exaggeratedModelMatrix=F.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=F.multiplyByTranslation(e._exaggeratedModelMatrix,P0t(e,t),e._exaggeratedModelMatrix)}}function P0t(e,t){let{shapeTransform:n=F.IDENTITY,globalTransform:i=F.IDENTITY}=e._provider,o=F.getTranslation(n,WK),r=F.multiplyByPoint(e._modelMatrix,o,WK),s=F.multiplyByPoint(i,r,WK),c=ee.WGS84.cartesianToCartographic(s,w0t),u=0;l(c)&&(u=c.height);let f=Rr.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,D0t)}function O0t(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=z.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=He(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(y(t.paddingBefore,d.ZERO),e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(y(t.paddingAfter,d.ZERO),e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===Zm.GLTF){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=y(t.keyframeCount,1);e._traversal=new SH(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,R0t(e._traversal,i)}function Fbe(e,t){let n=y(t.shapeTransform,F.IDENTITY),i=y(t.globalTransform,F.IDENTITY);return F.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),F.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),qb(e,"_compoundModelMatrix","_compoundModelMatrixOld")+qb(e,"_minBounds","_minBoundsOld")+qb(e,"_maxBounds","_maxBoundsOld")+qb(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+qb(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+qb(e,"_minClippingBounds","_minClippingBoundsOld")+qb(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function qb(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function Bbe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=F.inverse(o,T0t),s=F.getRotation(o,x0t),a=F.getScale(o,g0t),c=d.maximumComponent(a),u=d.divideByScalar(a,c,y0t),f=Z.multiplyByScale(s,u,b0t);return e._transformPositionWorldToUv=F.multiplyTransformation(E0t,r,e._transformPositionWorldToUv),e._transformPositionUvToWorld=F.multiplyTransformation(o,S0t,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=F.getMatrix3(r,e._transformDirectionWorldToLocal),e._transformNormalLocalToWorld=Z.inverseTranspose(f,e._transformNormalLocalToWorld),!0}function R0t(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=U.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=U.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=U.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=U.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=U.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=U.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function M0t(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=He(n,!0)),i}function L0t(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=$.secondsDifference(i.stop,i.start),a=$.secondsDifference(n,i.start)/r;return o+a}function N0t(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=F.transpose(F.multiplyTransformation(F.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var Nbe=new Array(new oe(-1,-1,-1,1),new oe(1,-1,-1,1),new oe(-1,1,-1,1),new oe(1,1,-1,1),new oe(-1,-1,1,1),new oe(1,-1,1,1),new oe(-1,1,1,1),new oe(1,1,1,1)),F0t=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),B0t=new Array(new oe,new oe,new oe,new oe,new oe,new oe,new oe,new oe);function k0t(e,t,n){let i=F.fromRotationTranslation(e.halfAxes,e.center,C0t),o=F.multiply(t,i,A0t),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=B0t,h=Nbe.length;for(u=0;u<h;u++)F.multiplyByVector(o,Nbe[u],f[u]);for(u=0;u<h;u++){let p=f[u];if(p.z>=-p.w){let g=p.x/p.w,m=p.y/p.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=F0t[u*3+g],x=f[m];if(x.z>=-x.w){let b=p.z+p.w,T=x.z+x.w,C=b/(b-T),A=oe.lerp(p,x,C,p0t),E=A.x/A.w,v=A.y/A.w;r=Math.min(r,E),s=Math.max(s,E),a=Math.min(a,v),c=Math.max(c,v)}}}return r=P.clamp(r,-1,1),a=P.clamp(a,-1,1),s=P.clamp(s,-1,1),c=P.clamp(c,-1,1),n=oe.fromElements(r,a,s,c,n),n}var jK=3e7,V0t=new d(jK,0,0),U0t=new d(0,jK,0),z0t=new d(0,0,jK);function H0t(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:Zi.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[z.RED,z.LIME,z.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,z.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,V0t,z.RED,a),o(d.ZERO,U0t,z.LIME,a),o(d.ZERO,z0t,z.BLUE,a),i.update(t)}Qm.DefaultCustomShader=new gS({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
{
material.diffuse = vec3(1.0);
material.alpha = 1.0;
}`});function kbe(){this.ready=!0,this.shape=zi.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[lt.SCALAR],this.componentTypes=[Ft.FLOAT32],this.maximumTileCount=1}kbe.prototype.requestData=function(e){if((l(e)?y(e.tileLevel,0):0)>=1)return;let n=new yS({metadata:[new Float32Array(1)]});return Promise.resolve(n)};Qm.DefaultProvider=new kbe;var Yb=Qm;function G0t(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var vH=G0t;function W0t(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var wH=W0t;function j0t(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var DH=j0t;var PH=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function ii(e){e=y(e,y.EMPTY_OBJECT);let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=He(e.contextOptions),r=l(n),s=new fU(t,o);r||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Yn(),this._jobScheduler=new qz,this._frameState=new Gz(s,new Rz(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=y(e.scene3DOnly,!1),this._removeCreditContainer=!r,this._creditContainer=n,this._canvas=t,this._context=s,this._computeEngine=new sU(s),this._ellipsoid=y(e.ellipsoid,ee.default),this._globe=void 0,this._globeTranslucencyState=new Wz,this._primitives=new Ll,this._groundPrimitives=new Ll,this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=ii.defaultLogDepthBuffer&&s.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new hS,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=y(e.orderIndependentTranslucency,!0),this._executeOITFunction=void 0,this._depthPlane=new Vz(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new ai({color:new z,stencil:0,owner:this}),this._depthClearCommand=new ai({depth:1,owner:this}),this._stencilClearCommand=new ai({stencil:0}),this._classificationStencilClearCommand=new ai({stencil:0,renderState:Ve.fromCache({stencilMask:Ut.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new B4(this),this._preUpdate=new me,this._postUpdate=new me,this._renderError=new me,this._preRender=new me,this._postRender=new me,this._minimumDisableDepthTestDistance=0,this._debugInspector=new Q4,this._msaaSamples=y(e.msaaSamples,4),this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new me,this.morphComplete=new me,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=z.clone(z.BLACK),this._mode=ne.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Ri(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new LC,this.fog=new Hz,this.fog.enabled=ee.WGS84.equals(this._ellipsoid),ee.WGS84.equals(this._ellipsoid)||(lo.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new lo(this),this.shadowMap=new l0({context:s,lightCamera:this._shadowMapCamera,enabled:y(e.shadows,!1)}),this.invertClassification=!1,this.invertClassificationColor=z.clone(z.WHITE),this._actualInvertClassificationColor=z.clone(this._invertClassificationColor),this._invertClassification=new mP,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new L4,this._brdfLutGenerator=new Tz,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new X4(this),this._cameraUnderground=!1,this._mapMode2D=y(e.mapMode2D,Ru.INFINITE_SCROLL),this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=y(e.requestRenderMode,!1),this._renderRequested=!0,this.maximumRenderTimeChange=y(e.maximumRenderTimeChange,0),this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Ec.requestCompletedEvent.addEventListener(PH(this)),this._removeTaskProcessorListenerCallback=bi.taskCompletedEvent.addEventListener(PH(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new je(0,0,s.drawingBufferWidth,s.drawingBufferHeight),c=new lo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new lo(this),this.preloadFlightCullingVolume=void 0,this._picking=new h4(this),this._defaultView=new lS(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new Xy,Gbe(this,0,$.now()),this.updateFrameState(),this.initializeFrame()}ii.defaultLogDepthBuffer=!0;function q0t(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(PH(e))),n.push(t.terrainProviderChanged.addEventListener(PH(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(ii.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return kt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return kt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return jh.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,q0t(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ne.SCENE2D?this.morphTo2D(0):e===ne.SCENE3D?this.morphTo3D(0):e===ne.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new lo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new zz(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,kt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});ii.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function Y0t(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return(n==null?void 0:n.schemaId)!==(i==null?void 0:i.schemaId)||(n==null?void 0:n.className)!==(i==null?void 0:i.className)||(n==null?void 0:n.propertyName)!==(i==null?void 0:i.propertyName)}function Vbe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=S_.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=S_.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=S_.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=S_.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=l0.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===ve.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}ii.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),p=o&&!u,g=c&&!f,m=(!o||!c)&&!h,x=n.pickingMetadata&&Y0t(e,n);if(e.dirty=e.dirty||p||g||m||x,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:b,shadowMaps:T}=i;b&&e.castShadows&&(t.shadows=l0.createCastDerivedCommand(T,e,s,r,t.shadows)),(u||p)&&(t.logDepth=S_.createLogDepthCommand(e,r,t.logDepth),Vbe(this,t.logDepth.command,s)),(h||m)&&Vbe(this,e,s)};var X0t=new hh({pass:zo.RENDER}),qK=new hh({pass:zo.PRELOAD}),YK=new hh({pass:zo.PRELOAD_FLIGHT}),K0t=new hh({pass:zo.REQUEST_RENDER_MODE_DEFER_CHECK}),Ube=new ce,XK;function $0t(e){var t;if(!(e._mode!==ne.SCENE3D||!((t=e.globe)!=null&&t.show)||e._cameraUnderground||e._globeTranslucencyState.translucent))return Ube.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,XK=xz.fromBoundingSphere(Ube,e.camera.positionWC,XK),XK}ii.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function Gbe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=$.clone(n,i.time)}ii.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=$0t(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof an||this.camera.frustum instanceof qr),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=z.clone(this.invertClassificationColor,this._actualInvertClassificationColor),mP.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};ii.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===jt.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var IH=new F(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);IH=F.inverseTransformation(IH,IH);function Z0t(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ne.SCENE3D){a=F.multiplyByPoint(IH,a,a);let m=o.mapProjection,x=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(x)}let c,u,{radius:f}=s;l(f)?(c=_a.createGeometry(new _a({radii:new d(f,f,f),vertexFormat:ln.FLAT_VERTEX_FORMAT})),u=F.fromTranslation(a)):(c=Ya.createGeometry(Ya.fromDimensions({dimensions:new d(2,2,2),vertexFormat:ln.FLAT_VERTEX_FORMAT})),u=F.fromRotationTranslation(s.halfAxes,a,new F)),t._debugVolume=new Pn({geometryInstances:new Dt({geometry:kn.toWireframe(c),modelMatrix:u,attributes:{color:new Wt(1,0,0,1)}}),appearance:new ln({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,p=o.commandList=[];t._debugVolume.update(o),e=p[0],o.useLogDepth&&(e=S_.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Jm(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof ai){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&Z0t(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function zbe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function Wbe(e,t,n){var i,o;return((i=t.boundingVolume)==null?void 0:i.distanceSquaredTo(n))-((o=e.boundingVolume)==null?void 0:o.distanceSquaredTo(n))}function Q0t(e,t,n){var i,o;return((i=e.boundingVolume)==null?void 0:i.distanceSquaredTo(n))-((o=t.boundingVolume)==null?void 0:o.distanceSquaredTo(n))+P.EPSILON12}function J0t(e,t,n,i,o){i0(i,Wbe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function ext(e,t,n,i,o){i0(i,Q0t,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function txt(e,t,n){e.context.uniformState.updatePass(ve.VOXELS);let i=n.commands[ve.VOXELS];i.length=n.indices[ve.VOXELS],i0(i,Wbe,e.camera.positionWC);for(let o=0;o<i.length;++o)Jm(i[o],e,t)}var nxt=new Pi,ixt=new Wl,oxt=new an,rxt=new qr;function sxt(e){let{frustum:t}=e;return l(t.fov)?t.clone(nxt):l(t.infiniteProjectionMatrix)?t.clone(ixt):l(t.width)?t.clone(oxt):t.clone(rxt)}function axt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?J0t:ext}function cxt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=axt(e);o.uniformState.updatePass(ve.TRANSLUCENT);let f=n.commands[ve.TRANSLUCENT];f.length=n.indices[ve.TRANSLUCENT],u(e,Jm,t,f,c)}function lxt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[ve.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[ve.TRANSLUCENT];i.executeTranslucentCommands(e,Jm,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Jm,t,n)}function $K(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=sxt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||uxt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:p,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:x,globeTranslucencyFramebuffer:b,sceneFramebuffer:T,frustumCommandsList:C}=e._view,A=C.length,E=e._globeTranslucencyState,v=e._depthClearCommand,D=e._stencilClearCommand,R=e._classificationStencilClearCommand,O=e._depthPlane,M=n.position.z;function N(S,w){r.updatePass(w);let I=S.commands[w],L=S.indices[w];for(let B=0;B<L;++B)Jm(I[B],e,t);return L}function _(S,w){r.updatePass(w);let I=S.commands[w],L=S.indices[w];for(let B=0;B<L;++B)zbe(I[B],e,t)}for(let S=0;S<A;++S){let w=A-S-1,I=C[w];e.mode===ne.SCENE2D?(n.position.z=M-I.near+1,s.far=Math.max(1,I.far-I.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=w!==0?I.near*e.opaqueFrustumNearOffset:I.near,s.far=I.far,r.updateFrustum(s)),v.execute(i,t),i.stencilBuffer&&D.execute(i,t),E.translucent?(r.updatePass(ve.GLOBE),E.executeGlobeCommands(I,Jm,b,e,t)):N(I,ve.GLOBE),p&&x.executeCopyDepth(i,t),f||(E.translucent?(r.updatePass(ve.TERRAIN_CLASSIFICATION),E.executeGlobeClassificationCommands(I,Jm,b,e,t)):N(I,ve.TERRAIN_CLASSIFICATION)),u&&(v.execute(i,t),h&&O.execute(i,t));let L;if(!g||c||f)L=N(I,ve.CESIUM_3D_TILE),L>0&&(p&&(x.prepareColorTextures(i,u),x.executeUpdateDepth(i,t,x.depthStencilTexture)),f||(L=N(I,ve.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let H=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,L=N(I,ve.CESIUM_3D_TILE),p&&(e._invertClassification.prepareTextures(i),x.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),L=N(I,ve.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=H,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),L>0&&i.stencilBuffer&&R.execute(i,t),L=N(I,ve.CESIUM_3D_TILE_CLASSIFICATION)}if(L>0&&i.stencilBuffer&&D.execute(i,t),txt(e,t,I),N(I,ve.OPAQUE),w!==0&&e.mode!==ne.SCENE2D&&(s.near=I.near,r.updateFrustum(s)),cxt(e,t,I),lxt(e,t,I),i.depthTexture&&e.useDepthPicking&&(p||f)){let H=e._picking.getPickDepth(e,w);H.update(i,x.depthStencilTexture),H.executeCopyDepth(i,t)}if(c||!m)continue;let B=t.framebuffer;t.framebuffer=T.getIdFramebuffer(),s.near=w!==0?I.near*e.opaqueFrustumNearOffset:I.near,s.far=I.far,r.updateFrustum(s),E.translucent?(r.updatePass(ve.GLOBE),E.executeGlobeCommands(I,zbe,b,e,t)):_(I,ve.GLOBE),u&&(v.framebuffer=t.framebuffer,v.execute(i,t),v.framebuffer=void 0),u&&h&&O.execute(i,t),_(I,ve.CESIUM_3D_TILE),_(I,ve.OPAQUE),_(I,ve.TRANSLUCENT),t.framebuffer=B}}function uxt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(ve.ENVIRONMENT),l(i.skyBoxCommand)&&Jm(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Jm(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function jbe(e){e.context.uniformState.updatePass(ve.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function fxt(e,t){e.context.uniformState.updatePass(ve.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function dxt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[ve.GLOBE,ve.CESIUM_3D_TILE,ve.OPAQUE,ve.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let p=r[h].cullingVolume;if(e.isVisible(p,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function qbe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;dxt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:p,commandList:g}=h;s.updateCamera(p),c.updatePass(r,f);for(let m=0;m<g.length;++m){let x=g[m];s.updatePass(x.pass);let b=x.derivedCommands.shadows.castCommands[a];Jm(b,e,h.passState)}}}}var hxt=new d;ii.prototype.updateAndExecuteCommands=function(e,t){vxt(this,e,t),this._environmentState.useWebVR?mxt(this,e,t):this._frameState.mode!==ne.SCENE2D||this._mapMode2D===Ru.ROTATE?p0(!0,this,e):Axt(this,e)};function mxt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;Ybe(e),n.createPotentiallyVisibleSet(e),jbe(e),r||qbe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=lo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*y(e.focalLength,5),f=y(e.eyeSeparation,u/30),h=d.multiplyByScalar(a.right,f*.5,hxt);i.frustum.aspectRatio=s.width/s.height;let p=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=p,$K(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-p,$K(e,t),lo.clone(a,i)}var pxt=new fe(Math.PI,P.PI_OVER_TWO),_xt=new d,gxt=new d,yxt=new F,xxt=new F,bxt=new d,Txt=new d,Cxt=new je;function Axt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=je.clone(r,Cxt);t.viewport=s;let a=pxt,c=_xt;e.mapProjection.project(a,c);let f=d.clone(i.position,gxt),h=F.clone(i.transform,xxt),p=i.frustum.clone();i._setTransform(F.IDENTITY);let g=F.computeViewportTransformation(s,0,1,yxt),m=i.frustum.projectionMatrix,x=i.positionWC.y,b=d.fromElements(P.sign(x)*c.x-x,0,-i.positionWC.x,bxt),T=Mt.pointToGLWindowCoordinates(m,g,b,Txt);T.x=Math.floor(T.x);let C=s.x,A=s.width;if(x===0||T.x<=C||T.x>=C+A)p0(!0,e,t);else if(Math.abs(C+A*.5-T.x)<1)s.width=T.x-s.x,i.position.x*=P.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!0,e,t),s.x=T.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!1,e,t);else if(T.x>C+A*.5){s.width=T.x-C;let E=i.frustum.right;i.frustum.right=c.x-x,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!0,e,t),s.x=T.x,s.width=C+A-T.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=E-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!1,e,t)}else{s.x=T.x,s.width=C+A-T.x;let E=i.frustum.left;i.frustum.left=-c.x-x,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!0,e,t),s.x=C,s.width=T.x-C,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=E-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),p0(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=p.clone(),t.viewport=r}function p0(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),Ybe(t),i.createPotentiallyVisibleSet(t),e&&(jbe(t),o||qbe(t)),$K(t,n)}var Hbe=new As;ii.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ne.SCENE2D&&t.camera.frustum instanceof an||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(Mg.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let T=r.dynamicLighting;s.setDynamicLighting(T),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let b=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(b)?b.drawCommand:void 0,n.sunComputeCommand=l(b)?b.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ne.SCENE2D);(n.useDepthPlane=u&&this.mode===ne.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ne.SCENE2D&&!o;let h=e.mode===ne.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,p=e.cullingVolume,g=Hbe.planes;for(let b=0;b<5;++b)g[b]=p.planes[b];p=Hbe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(p,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(p,n.moonCommand,h);let m=this.specularEnvironmentMaps,x=this._specularEnvironmentCubeMap;l(m)&&(x==null?void 0:x.url)!==m?(x=x&&x.destroy(),this._specularEnvironmentCubeMap=new jh(m)):!l(m)&&l(x)&&(x.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Ext(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new E_({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function Sxt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ne.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function Ybe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Ext(e),Sxt(e),e._globe&&e._globe.render(t)}function vxt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new Z4:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;z.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let p=s.oit,g=r.useOIT=!c&&l(p)&&p.isSupported();g&&(p.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),p.clear(i,t,n),r.useOIT=p.isSupported());let m=e.postProcessStages,x=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,x&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),x=r.usePostProcess=m.ready,r.usePostProcessSelected=x&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:x&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let T;if(o.invertClassificationColor.alpha===1&&h&&(T=s.globeDepth.framebuffer),l(T)||i.depthTexture){if(e._invertClassification.previousFramebuffer=T,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let C=e._invertClassification.unclassifiedCommand,A=C.derivedCommands;A.oit=p.createDerivedCommands(C,i,A.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}ii.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,p=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,x=g.getColorTexture(0),b=p.getColorTexture(0),T=y(f,h).getDepthStencilTexture();m.execute(t,x,T,b),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function wxt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function Dxt(e){if(e.mode===ne.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function Xbe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof Ll){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=Xbe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}ii.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===qe.CLAMP_TO_TERRAIN||t===qe.RELATIVE_TO_TERRAIN,i=t===qe.CLAMP_TO_3D_TILE||t===qe.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=Xbe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var KK=new fe;ii.prototype.updateHeight=function(e,t,n){let i=()=>{fe.clone(e,KK);let g=this.getHeight(e,n);l(g)&&(KK.height=g,t(KK))},o=n===qe.CLAMP_TO_TERRAIN||n===qe.RELATIVE_TO_TERRAIN,r=n===qe.CLAMP_TO_3D_TILE||n===qe.RELATIVE_TO_3D_TILE,s;!r&&l(this.globe)&&(s=this.globe._surface.updateHeight(e,i));let a={},c=this._ellipsoid,u=g=>{if(o||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,i,c);a[g.id]=m};if(!o){let g=this.primitives.length;for(let m=0;m<g;++m){let x=this.primitives.get(m);u(x)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(a[g.id])&&a[g.id](),delete a[g.id])});return()=>{s=s&&s(),Object.values(a).forEach(g=>g()),a={},f(),h()}};function Ixt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ne.SCENE2D||n===ne.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}ii.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=Dxt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=Ixt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function Pxt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new a0({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function Oxt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function Rxt(e){e.primitives.postPassesUpdate(e._frameState),Ec.update()}var Mxt=new z;function Lxt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=X0t;let r=y(e.backgroundColor,z.BLACK);e._hdr&&(r=z.clone(r,Mxt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof Xy?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=je.clone(a,c.viewport),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,fxt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function Xb(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function Nxt(e){return e._picking.updateMostDetailedRayPicks(e)}ii.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=$.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ne.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs($.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=$.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=P.incrementWrap(t.frameNumber,15e6,1);Gbe(this,o,e),t.newFrame=!0}Xb(this,Oxt),this.primitives.show&&(Xb(this,Nxt),Xb(this,Fxt),Xb(this,Bxt),i||Xb(this,kxt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),Xb(this,Lxt)),Pxt(this,i),Xb(this,Rxt),wxt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};ii.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};ii.prototype.requestRender=function(){this._renderRequested=!0};ii.prototype.clampLineWidth=function(e){return Math.max(kt.minimumAliasedLineWidth,Math.min(e,kt.maximumAliasedLineWidth))};ii.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};ii.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof Yb))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return J4.fromKeyframeNode(o,s,c,a)};ii.prototype.pickMetadata=function(e,t,n,i){var h,p;let o=this.pick(e);if(!l(o))return;let r=(p=(h=o.detail)==null?void 0:h.model)==null?void 0:p.structuralMetadata;if(!l(r))return;let s=r.schema,a=vH(s,t,n,i);if(!l(a))return;let c=DH(r,n,i);if(!l(c))return;let u=new wH(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};ii.prototype.pickMetadataSchema=function(e){var i,o,r;let t=this.pick(e);return l(t)?(r=(o=(i=t.detail)==null?void 0:i.model)==null?void 0:o.structuralMetadata)==null?void 0:r.schema:void 0};ii.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};ii.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};ii.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function Fxt(e){let t=e._frameState;qK.camera=t.camera,qK.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,qK)}function Bxt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;YK.camera=e.preloadFlightCamera,YK.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,YK)}function kxt(e){e.primitives.updateForPass(e._frameState,K0t)}ii.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};ii.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};ii.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};ii.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};ii.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};ii.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};ii.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};ii.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};ii.prototype.cartesianToCanvasCoordinates=function(e,t){return Wi.worldToWindowCoordinates(this,e,t)};ii.prototype.completeMorph=function(){this._transitioner.completeMorph()};ii.prototype.morphTo2D=function(e){e=y(e,2),this._transitioner.morphTo2D(e,this._ellipsoid)};ii.prototype.morphToColumbusView=function(e){e=y(e,2),this._transitioner.morphToColumbusView(e,this._ellipsoid)};ii.prototype.morphTo3D=function(e){e=y(e,2),this._transitioner.morphTo3D(e,this._ellipsoid)};function Vxt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}ii.prototype.setTerrain=function(e){return Vxt(this,e),e};ii.prototype.isDestroyed=function(){return!1};ii.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var OH=ii;var LP=`float interpolateByDistance(vec4 nearFarScalar, float distance)
{
float startDistance = nearFarScalar.x;
float startValue = nearFarScalar.y;
float endDistance = nearFarScalar.z;
float endValue = nearFarScalar.w;
float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0);
return mix(startValue, endValue, t);
}
void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe)
{
float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z;
// Adjustment to the atmosphere radius applied based on the camera height.
float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0;
float distanceAdjustMax = czm_ellipsoidRadii.x;
float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0;
float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0);
// Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit
// for the position on the ellipsoid.
float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust;
float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust;
// Setup the primary ray: from the camera position to the vertex position.
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
underTranslucentGlobe = 0.0;
// Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled.
#if defined(GLOBE_TRANSLUCENT)
// Check for intersection with the inner radius of the atmopshere.
czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust);
if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) {
// Compute position on globe.
vec3 direction = normalize(positionWC);
czm_ray ellipsoidRay = czm_ray(positionWC, -direction);
czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii);
vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start);
// Control the color using the camera angle.
float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth));
// Control the opacity using the distance from Earth.
opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth));
vec3 horizonColor = vec3(0.1, 0.2, 0.3);
vec3 nearColor = vec3(0.0);
rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity);
// Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton.
underTranslucentGlobe = 1.0;
return;
}
#endif
computeScattering(
primaryRay,
length(cameraToPositionWC),
lightDirection,
atmosphereInnerRadius,
rayleighColor,
mieColor,
opacity
);
// Alter the opacity based on how close the viewer is to the ground.
// (0.0 = At edge of atmosphere, 1.0 = On ground)
float cameraHeight = czm_eyeHeight + atmosphereInnerRadius;
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0);
// Alter alpha based on time of day (0.0 = night , 1.0 = day)
float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0;
opacity *= pow(nightAlpha, 0.5);
}
`;var RH=`in vec3 v_outerPositionWC;
uniform vec3 u_hsbShift;
#ifndef PER_FRAGMENT_ATMOSPHERE
in vec3 v_mieColor;
in vec3 v_rayleighColor;
in float v_opacity;
in float v_translucent;
#endif
void main (void)
{
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum);
vec3 mieColor;
vec3 rayleighColor;
float opacity;
float translucent;
#ifdef PER_FRAGMENT_ATMOSPHERE
computeAtmosphereScattering(
v_outerPositionWC,
lightDirection,
rayleighColor,
mieColor,
opacity,
translucent
);
#else
mieColor = v_mieColor;
rayleighColor = v_rayleighColor;
opacity = v_opacity;
translucent = v_translucent;
#endif
vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity);
#ifndef HDR
color.rgb = czm_pbrNeutralTonemapping(color.rgb);
color.rgb = czm_inverseGamma(color.rgb);
#endif
#ifdef COLOR_CORRECT
const bool ignoreBlackPixels = true;
color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels);
#endif
// For the parts of the sky atmosphere that are not behind a translucent globe,
// we mix in the default opacity so that the sky atmosphere still appears at distance.
// This is needed because the opacity in the sky atmosphere is initially adjusted based
// on the camera height.
if (translucent == 0.0) {
color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime);
}
out_FragColor = color;
}
`;var MH=`in vec4 position;
out vec3 v_outerPositionWC;
#ifndef PER_FRAGMENT_ATMOSPHERE
out vec3 v_mieColor;
out vec3 v_rayleighColor;
out float v_opacity;
out float v_translucent;
#endif
void main(void)
{
vec4 positionWC = czm_model * position;
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum);
#ifndef PER_FRAGMENT_ATMOSPHERE
computeAtmosphereScattering(
positionWC.xyz,
lightDirection,
v_rayleighColor,
v_mieColor,
v_opacity,
v_translucent
);
#endif
v_outerPositionWC = positionWC.xyz;
gl_Position = czm_modelViewProjection * position;
}
`;function TS(e){e=y(e,ee.WGS84),this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=F.fromScale(n),this._modelMatrix=new F,this._command=new Qe({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(TS.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});TS.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var ZK=new F;TS.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ne.SCENE3D&&n!==ne.MORPHING||!e.passes.render)return;let i=F.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,ZK),o=F.multiplyTransformation(i,Vo.Y_UP_TO_Z_UP,ZK),r=F.multiply(this._scaleMatrix,o,ZK);F.clone(r,this._modelMatrix);let s=e.context,a=Uxt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let p=_a.createGeometry(new _a({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Ie.POSITION_ONLY}));f.vertexArray=oi.fromGeometry({context:s,geometry:p,attributeLocations:kn.createAttributeLocations(p),bufferUsage:ke.STATIC_DRAW}),f.renderState=Ve.fromCache({cull:{enabled:!0,face:xi.FRONT},blending:fn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let p=[];a&&p.push("COLOR_CORRECT"),u&&p.push("PER_FRAGMENT_ATMOSPHERE"),c&&p.push("GLOBE_TRANSLUCENT");let g=new Ue({defines:p,sources:[nm,LP,MH]}),m=new Ue({defines:p,sources:[nm,LP,RH]});this._spSkyAtmosphere=Jt.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function Uxt(e){return!(P.equalsEpsilon(e.hueShift,0,P.EPSILON7)&&P.equalsEpsilon(e.saturationShift,0,P.EPSILON7)&&P.equalsEpsilon(e.brightnessShift,0,P.EPSILON7))}TS.prototype.isDestroyed=function(){return!1};TS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var LH=TS;var NH=`uniform samplerCube u_cubeMap;
in vec3 v_texCoord;
void main()
{
vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord));
out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime);
}
`;var FH=`in vec3 position;
out vec3 v_texCoord;
void main()
{
vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position));
gl_Position = czm_projection * vec4(p, 1.0);
v_texCoord = position.xyz;
}
`;function AS(e){this.sources=e.sources,this._sources=void 0,this.show=y(e.show,!0),this._command=new Qe({modelMatrix:F.clone(F.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}AS.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ne.SCENE3D&&i!==ne.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?dU(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new Or({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=Ya.createGeometry(Ya.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Ie.POSITION_ONLY})),c=this._attributeLocations=kn.createAttributeLocations(a);s.vertexArray=oi.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:ke.STATIC_DRAW}),s.renderState=Ve.fromCache({blending:fn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new Ue({defines:[t?"HDR":""],sources:[NH]});s.shaderProgram=Jt.fromCache({context:r,vertexShaderSource:FH,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};AS.prototype.isDestroyed=function(){return!1};AS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function CS(e){return nn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}AS.createEarthSkyBox=function(){return new AS({sources:{positiveX:CS("px"),negativeX:CS("mx"),positiveY:CS("py"),negativeY:CS("my"),positiveZ:CS("pz"),negativeZ:CS("mz")}})};var BH=AS;var kH=`uniform sampler2D u_texture;
in vec2 v_textureCoordinates;
void main()
{
vec4 color = texture(u_texture, v_textureCoordinates);
out_FragColor = czm_gammaCorrect(color);
}
`;var VH=`uniform float u_radiusTS;
in vec2 v_textureCoordinates;
vec2 rotate(vec2 p, vec2 direction)
{
return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x);
}
vec4 addBurst(vec2 position, vec2 direction, float lengthScalar)
{
vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75);
float radius = length(rotatedPosition) * lengthScalar;
float burst = 1.0 - smoothstep(0.0, 0.55, radius);
return vec4(burst);
}
void main()
{
float lengthScalar = 2.0 / sqrt(2.0);
vec2 position = v_textureCoordinates - vec2(0.5);
float radius = length(position) * lengthScalar;
float surface = step(radius, u_radiusTS);
vec4 color = vec4(vec2(1.0), surface + 0.2, surface);
float glow = 1.0 - smoothstep(0.0, 0.55, radius);
color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75;
vec4 burst = vec4(0.0);
// The following loop has been manually unrolled for speed, to
// avoid sin() and cos().
//
//for (float i = 0.4; i < 3.2; i += 1.047) {
// vec2 direction = vec2(sin(i), cos(i));
// burst += 0.4 * addBurst(position, direction, lengthScalar);
//
// direction = vec2(sin(i - 0.08), cos(i - 0.08));
// burst += 0.3 * addBurst(position, direction, lengthScalar);
//}
burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4
burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047
burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0
burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08
burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08
burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08
// End of manual loop unrolling.
color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15;
out_FragColor = clamp(color, vec4(0.0), vec4(1.0));
}
`;var UH=`in vec2 direction;
uniform float u_size;
out vec2 v_textureCoordinates;
void main()
{
vec4 position;
if (czm_morphTime == 1.0)
{
position = vec4(czm_sunPositionWC, 1.0);
}
else
{
position = vec4(czm_sunPositionColumbusView.zxy, 1.0);
}
vec4 positionEC = czm_view * position;
vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
vec2 halfSize = vec2(u_size * 0.5);
halfSize *= ((direction * 2.0) - 1.0);
gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0);
v_textureCoordinates = direction;
}
`;function FP(){this.show=!0,this._drawCommand=new Qe({primitiveType:Ne.TRIANGLES,boundingVolume:new ce,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new ce,this._boundingVolume2D=new ce,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(FP.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var zxt=new U,Hxt=new U,Gxt=new oe,NP=new oe;FP.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ne.SCENE2D||i===ne.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let E=Math.max(r,s);E=Math.pow(2,Math.ceil(Math.log(E)/Math.log(2))-2),E=Math.max(1,E);let v=n?o.halfFloatingPointTexture?Ke.HALF_FLOAT:Ke.FLOAT:Ke.UNSIGNED_BYTE;this._texture=new Rt({context:o,width:E,height:E,pixelFormat:nt.RGBA,pixelDatatype:v}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let D=this,R={u_radiusTS:function(){return D._radiusTS}};this._commands.computeCommand=new Al({fragmentShaderSource:VH,outputTexture:this._texture,uniformMap:R,persists:!1,owner:this,postExecute:function(){D._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let E={direction:0},v=new Uint8Array(4*2);v[0]=0,v[1]=0,v[2]=255,v[3]=0,v[4]=255,v[5]=255,v[6]=0,v[7]=255;let D=Tt.createVertexBuffer({context:o,typedArray:v,usage:ke.STATIC_DRAW}),R=[{index:E.direction,vertexBuffer:D,componentsPerAttribute:2,normalize:!0,componentDatatype:X.UNSIGNED_BYTE}],O=Tt.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT});a.vertexArray=new oi({context:o,attributes:R,indexBuffer:O}),a.shaderProgram=Jt.fromCache({context:o,vertexShaderSource:UH,fragmentShaderSource:kH,attributeLocations:E}),a.renderState=Ve.fromCache({blending:fn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=P.SOLAR_RADIUS+P.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ne.SCENE3D?ce.clone(f,a.boundingVolume):i===ne.COLUMBUS_VIEW&&ce.clone(h,a.boundingVolume);let p=Wi.computeActualEllipsoidPosition(e,c,NP),g=d.magnitude(d.subtract(p,e.camera.position,NP)),m=o.uniformState.projection,x=Gxt;x.x=0,x.y=0,x.z=-g,x.w=1;let b=F.multiplyByVector(m,x,NP),T=Wi.clipToGLWindowCoordinates(t.viewport,b,zxt);x.x=P.SOLAR_RADIUS;let C=F.multiplyByVector(m,x,NP),A=Wi.clipToGLWindowCoordinates(t.viewport,C,Hxt);return this._size=U.magnitude(U.subtract(A,T,NP)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};FP.prototype.isDestroyed=function(){return!1};FP.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var zH=FP;var Zbe=Hr(g1(),1);function Wxt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t});
vec4 clippingPlanesEdgeColor = vec4(1.0);
clippingPlanesEdgeColor.rgb = ${n}.rgb;
float clippingPlanesEdgeWidth = ${n}.a;
if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth)
{
out_FragColor = clippingPlanesEdgeColor;
}
`}var HH=Wxt;var jxt={modifyFragmentShader:function(t){return t=Ue.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection;
void main()
{
#ifndef SHADOW_MAP
if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
#endif
czm_splitter_main();
}
`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},BP=jxt;var Kb={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function kP(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=z.clone(z.DARKGRAY),this._highlightColor=z.clone(z.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=Kb.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=y(e.opaquePass,ve.OPAQUE),this._cull=y(e.cull,!0),this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=F.clone(F.IDENTITY),this._modelMatrix=F.clone(F.IDENTITY),this.time=0,this.shadows=yn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=y(e.splitDirection,Gr.NONE),this._splittingEnabled=!1,this._error=void 0,qxt(this,e)}Object.defineProperties(kP.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return z.clone(this._highlightColor)},set:function(e){this._highlightColor=z.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=ce.clone(e,this._boundingSphere)}}});function qxt(e,t){let n=nA.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=dg.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=Kb.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=z.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var Yxt=new d,Xxt=new d,Kxt=new d,Kbe,GH;function $xt(e){if(!l(GH)){Kbe=new Zbe.default(0),GH=new Array(e);for(let t=0;t<e;++t)GH[t]=Kbe.random()}return GH}function Zxt(e){let n=e.length/3,i=Math.min(n,20),o=$xt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,Yxt),c=d.fromElements(s,s,s,Xxt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),p=d.unpack(e,h*3,Kxt);d.minimumByComponent(a,p,a),d.maximumByComponent(c,p,c)}let u=ce.fromCornerPoints(a,c);return u.radius+=P.EPSILON2,u}function $be(e,t){let n=X.fromTypedArray(e);return n===X.INT||n===X.UNSIGNED_INT||n===X.DOUBLE?(Ct("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var Qxt=new oe,Jxt=new oe,ebt=new z,Qbe=0,WH=1,n$=2,Jbe=3,tbt=4,QK=new F,nbt=new F;function ibt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,p=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,x=e._quantizedRange,b=e._octEncodedRange,T=e._isRGB565,C=e._isTranslucent,A=e._hasColors,E=e._hasNormals,v=e._hasBatchIds,D,R,O=[],M={};if(e._styleableShaderAttributes=M,f){let V=tbt;for(let G in u)if(u.hasOwnProperty(G)){let k=u[G],W=$be(k.typedArray,G);D=k.componentCount,R=X.fromTypedArray(W);let q=Tt.createVertexBuffer({context:n,typedArray:W,usage:ke.STATIC_DRAW});e._geometryByteLength+=q.sizeInBytes;let J={index:V,vertexBuffer:q,componentsPerAttribute:D,componentDatatype:R,normalize:!1,offsetInBytes:0,strideInBytes:0};O.push(J),M[G]={location:V,componentCount:D},++V}}let N=Tt.createVertexBuffer({context:n,typedArray:r.typedArray,usage:ke.STATIC_DRAW});e._geometryByteLength+=N.sizeInBytes;let _;A&&(_=Tt.createVertexBuffer({context:n,typedArray:s.typedArray,usage:ke.STATIC_DRAW}),e._geometryByteLength+=_.sizeInBytes);let S;E&&(S=Tt.createVertexBuffer({context:n,typedArray:a.typedArray,usage:ke.STATIC_DRAW}),e._geometryByteLength+=S.sizeInBytes);let w;v&&(c.typedArray=$be(c.typedArray,"batchIds"),w=Tt.createVertexBuffer({context:n,typedArray:c.typedArray,usage:ke.STATIC_DRAW}),e._geometryByteLength+=w.sizeInBytes);let I=[];if(h?R=X.UNSIGNED_SHORT:p?R=x<=255?X.UNSIGNED_BYTE:X.UNSIGNED_SHORT:R=X.FLOAT,I.push({index:Qbe,vertexBuffer:N,componentsPerAttribute:3,componentDatatype:R,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||p?e._boundingSphere=ce.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=Zxt(r.typedArray)),A)if(T)I.push({index:WH,vertexBuffer:_,componentsPerAttribute:1,componentDatatype:X.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let V=C?4:3;I.push({index:WH,vertexBuffer:_,componentsPerAttribute:V,componentDatatype:X.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}E&&(g?(D=2,R=X.UNSIGNED_BYTE):m?(D=2,R=b<=255?X.UNSIGNED_BYTE:X.UNSIGNED_SHORT):(D=3,R=X.FLOAT),I.push({index:n$,vertexBuffer:S,componentsPerAttribute:D,componentDatatype:R,normalize:!1,offsetInBytes:0,strideInBytes:0})),v&&I.push({index:Jbe,vertexBuffer:w,componentsPerAttribute:1,componentDatatype:X.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(I=I.concat(O));let L=new oi({context:n,attributes:I}),B={depthTest:{enabled:!0}},H={depthTest:{enabled:!0},depthMask:!1,blending:fn.ALPHA_BLEND};e._opaquePass===ve.CESIUM_3D_TILE&&(B.stencilTest=Ut.setCesium3DTileBit(),B.stencilMask=Ut.CESIUM_3D_TILE_MASK,H.stencilTest=Ut.setCesium3DTileBit(),H.stencilMask=Ut.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ve.fromCache(B),e._translucentRenderState=Ve.fromCache(H),e._drawCommand=new Qe({boundingVolume:new ce,cull:e._cull,modelMatrix:new F,primitiveType:Ne.POINTS,vertexArray:L,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:C?e._translucentRenderState:e._opaqueRenderState,pass:C?ve.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function obt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=Qxt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ne.SCENE2D||c instanceof an?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return z.TRANSPARENT;let c=z.clone(a.edgeColor,ebt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return F.IDENTITY;let c=y(e.clippingPlanesOriginMatrix,e._modelMatrix);F.multiply(n.uniformState.view3D,c,QK);let u=F.multiply(QK,a.modelMatrix,QK);return F.inverseTranspose(u,nbt)}};BP.addUniforms(e,s),(i||o||r)&&(s=At(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=Jxt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function JK(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function e$(e,t){e=e.slice(e.indexOf(`
`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function t$(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var rbt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function sbt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,p=e._isRGB565,g=e._isTranslucent,m=e._hasColors,x=e._hasNormals,b=e._hasBatchIds,T=e._backFaceCulling,C=e._normalShading,A=e._drawCommand.vertexArray,E=e.clippingPlanes,v=e._attenuation,D,R,O,M=g,N=He(rbt),_={},S=e._styleableShaderAttributes;for(o in S)S.hasOwnProperty(o)&&(r=S[o],N[o]=`czm_3dtiles_property_${r.location}`,_[r.location]=r);if(a){let re={translucent:!1},_e="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";D=n.getColorShaderFunction(`getColorFromStyle${_e}`,N,re),R=n.getShowShaderFunction(`getShowFromStyle${_e}`,N,re),O=n.getPointSizeShaderFunction(`getPointSizeFromStyle${_e}`,N,re),l(D)&&re.translucent&&(M=!0)}e._styleTranslucent=M;let w=l(D),I=l(R),L=l(O),B=e.isClipped,H=[],V=[];w&&(JK(D,H),e$(D,V)),I&&(JK(R,H),e$(R,V)),L&&(JK(O,H),e$(O,V));let G=V.indexOf("COLOR")>=0,k=V.indexOf("NORMAL")>=0;if(k&&!x)throw new se("Style references the NORMAL semantic but the point cloud does not have normals");for(o in S)if(S.hasOwnProperty(o)){r=S[o];let re=H.indexOf(r.location)>=0,_e=t$(A,r.location);_e.enabled=re}let W=m&&(!w||G);if(m){let re=t$(A,WH);re.enabled=W}let q=x&&(C||T||k);if(x){let re=t$(A,n$);re.enabled=q}let J={a_position:Qbe};W&&(J.a_color=WH),q&&(J.a_normal=n$),b&&(J.a_batchId=Jbe);let j="",K=H.length;for(i=0;i<K;++i){let re=H[i];r=_[re];let _e=r.componentCount,be=`czm_3dtiles_property_${re}`,we;_e===1?we="float":we=`vec${_e}`,j+=`in ${we} ${be};
`,J[be]=r.location}obt(e,t);let Q=`in vec3 a_position;
out vec4 v_color;
uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier;
uniform vec4 u_constantColor;
uniform vec4 u_highlightColor;
`;Q+=`float u_pointSize;
float tiles3d_tileset_time;
`,v&&(Q+=`float u_geometricError;
float u_depthMultiplier;
`),Q+=j,W&&(g?Q+=`in vec4 a_color;
`:p?Q+=`in float a_color;
const float SHIFT_RIGHT_11 = 1.0 / 2048.0;
const float SHIFT_RIGHT_5 = 1.0 / 32.0;
const float SHIFT_LEFT_11 = 2048.0;
const float SHIFT_LEFT_5 = 32.0;
const float NORMALIZE_6 = 1.0 / 64.0;
const float NORMALIZE_5 = 1.0 / 32.0;
`:Q+=`in vec3 a_color;
`),q&&(f||h?Q+=`in vec2 a_normal;
`:Q+=`in vec3 a_normal;
`),b&&(Q+=`in float a_batchId;
`),(c||u||h)&&(Q+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange;
`),w&&(Q+=D),I&&(Q+=R),L&&(Q+=O),Q+=`void main()
{
u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x;
tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y;
`,v&&(Q+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z;
u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w;
`),W?g?Q+=` vec4 color = a_color;
`:p?Q+=` float compressed = a_color;
float r = floor(compressed * SHIFT_RIGHT_11);
compressed -= r * SHIFT_LEFT_11;
float g = floor(compressed * SHIFT_RIGHT_5);
compressed -= g * SHIFT_LEFT_5;
float b = compressed;
vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);
vec4 color = vec4(rgb, 1.0);
`:Q+=` vec4 color = vec4(a_color, 1.0);
`:Q+=` vec4 color = u_constantColor;
`,c||u?Q+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz;
`:Q+=` vec3 position = a_position;
`,Q+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0));
`,q?(f?Q+=` vec3 normal = czm_octDecode(a_normal);
`:h?Q+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy;
`:Q+=` vec3 normal = a_normal;
`,Q+=` vec3 normalEC = czm_normal * normal;
`):Q+=` vec3 normal = vec3(1.0);
`,w&&(Q+=` color = getColorFromStyle(position, position_absolute, color, normal);
`),I&&(Q+=` float show = float(getShowFromStyle(position, position_absolute, color, normal));
`),L?Q+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio;
`:v?Q+=` vec4 positionEC = czm_modelView * vec4(position, 1.0);
float depth = -positionEC.z;
gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize);
`:Q+=` gl_PointSize = u_pointSize;
`,Q+=` color = color * u_highlightColor;
`,q&&C&&(Q+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC);
diffuseStrength = max(diffuseStrength, 0.4);
color.xyz *= diffuseStrength * czm_lightColor;
`),Q+=` v_color = color;
gl_Position = czm_modelViewProjection * vec4(position, 1.0);
`,q&&T&&(Q+=` float visible = step(-normalEC.z, 0.0);
gl_Position *= visible;
gl_PointSize *= visible;
`),I&&(Q+=` gl_Position.w *= float(show);
gl_PointSize *= float(show);
`),Q+=`}
`;let he=`in vec4 v_color;
`;B&&(he+=`uniform highp sampler2D u_clippingPlanes;
uniform mat4 u_clippingPlanesMatrix;
uniform vec4 u_clippingPlanesEdgeStyle;
`,he+=`
`,he+=$y(E,s),he+=`
`),he+=`void main()
{
out_FragColor = czm_gammaCorrect(v_color);
`,B&&(he+=HH("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`}
`,e.splitDirection!==Gr.NONE&&(he=BP.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(Q=e._vertexShaderLoaded(Q)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ye=e._drawCommand;l(ye.shaderProgram)&&ye.shaderProgram.destroy(),ye.shaderProgram=Jt.fromCache({context:s,vertexShaderSource:Q,fragmentShaderSource:he,attributeLocations:J});try{ye.shaderProgram._bind()}catch{throw new se("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function abt(e,t){if(e._decodingState===Kb.READY)return!1;if(e._decodingState===Kb.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=Tg.decodePointCloud(i,t);l(o)&&(e._decodingState=Kb.DECODING,o.then(function(r){e._decodingState=Kb.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),p=l(u)&&l(r.NORMAL.data.quantization);if(h){let b=r.POSITION.data.quantization,T=b.range;e._quantizedVolumeScale=d.fromElements(T,T,T),e._quantizedVolumeOffset=d.unpack(b.minValues),e._quantizedRange=(1<<b.quantizationBits)-1,e._isQuantizedDraco=!0}p&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let b in m)if(m.hasOwnProperty(b)){let T=r[b];l(g)||(g={}),g[b]={typedArray:T.array,componentCount:T.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let x=y(c,a);l(x)&&(n.colors={typedArray:x}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=Kb.FAILED,e._error=r}))}return!0}var cbt=new oe,lbt=new d;kP.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(abt(this,t))return;let i=!1,o=!F.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ibt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){F.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(F.clone(this._modelMatrix,u),l(this._rtcCenter)&&F.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&F.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ne.SCENE3D){let h=e.mapProjection,p=F.getColumn(u,3,cbt);oe.equals(p,oe.UNIT_W)||Mt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(ce.clone(this._boundingSphere,f),this._cull){let h=f.center;F.multiplyByPoint(u,h,h);let p=F.getScale(u,lbt);f.radius*=d.maximumComponent(p)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==Gr.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&sbt(this,e,this._style),this._drawCommand.castShadows=yn.castShadows(this.shadows),this._drawCommand.receiveShadows=yn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?ve.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};kP.prototype.isDestroyed=function(){return!1};kP.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var jH=kP;function Zb(e){e=y(e,y.EMPTY_OBJECT),this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this.shadows=y(e.shadows,yn.ENABLED),this.maximumMemoryUsage=y(e.maximumMemoryUsage,256),this.shading=new Bp(e.shading),this.style=e.style,this.frameFailed=new me,this.frameChanged=new me,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new kg,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(Zb.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Es.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function ubt(e){return`uniform vec4 czm_pickColor;
${e}`}function fbt(e){return function(t){return At(t,{czm_pickColor:function(){return e._pickId.color}})}}function dbt(){return"czm_pickColor"}Zb.prototype.makeStyleDirty=function(){this._styleDirty=!0};Zb.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var hbt=new $;function o$(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function $b(e,t){return e._intervals.indexOf(t.start)}function mbt(e,t){let n=e._intervals,i=e._clock,o=o$(e);if(o===0)return;let r=e._getAverageLoadTime(),s=$.addSeconds(i.currentTime,r*o,hbt),a=n.indexOf(s),c=$b(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function pbt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function _bt(e,t,n){let i=o$(e),o=$b(e,t),r=$b(e,n);return i>=0?o>=r:o<=r}function tTe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function gbt(e,t,n){let i=$b(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?F.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Ai(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,Ee.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new jH({arrayBuffer:u,cull:!0,fragmentShaderLoaded:ubt,uniformMapLoaded:fbt(e),pickIdLoaded:dbt})}).catch(tTe(e,c))}return r}function ybt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function xbt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(nTe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Ai()-t.timestamp)/1e3;ybt(e,a)}}t.touchedFrameNumber=i.frameNumber}var bbt=new F;function Tbt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?P.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function Cbt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var Abt=new Bp;function nTe(e,t,n,i){let o=y(e.shading,Abt),r=t.pointCloud,s=y(t.transform,F.IDENTITY);r.modelMatrix=F.multiplyTransformation(e.modelMatrix,s,bbt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=Tbt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=Cbt(e);try{r.update(i)}catch(a){tTe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function i$(e,t,n,i){let o=gbt(e,t,i);xbt(e,o,n,i)}function Ebt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function iTe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Sbt(e,t){let n=$b(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function eTe(e,t,n,i,o){return l(n)?n.ready?!0:(i$(e,t,i,o),n.ready):!1}function vbt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=$b(e,n),h=$b(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],eTe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],eTe(e,s,a,i,o))return s;return t}function wbt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var ES={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};Zb.prototype.update=function(e){if(e.mode===ne.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=$.clone(e.time));let t=Math.max($.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&wbt(this,o,s),ES.timeSinceLoad=t,ES.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,p=this._nextInterval,g=pbt(this);if(!l(g))return;let m=!1,x=o$(this),b=x===0;x!==this._clockMultiplier&&(m=!0,this._clockMultiplier=x),(!l(h)||b)&&(h=g),(!l(p)||m||_bt(this,g,p))&&(p=mbt(this,g)),h=vbt(this,h,g,ES,e);let T=Sbt(this,h);l(T)||(i$(this,h,ES,e),T=this._lastRenderedFrame),l(T)&&nTe(this,T,ES,e),l(p)&&i$(this,p,ES,e);let C=this;l(T)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(T)&&T!==this._lastRenderedFrame&&C.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return C.frameChanged.raiseEvent(C),!0}),this._previousInterval=h,this._nextInterval=p,this._lastRenderedFrame=T;let A=this._totalMemoryUsageInBytes,E=this.maximumMemoryUsage*1024*1024;A>E&&iTe(this,Ebt(e));let D=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&D>0&&c.update(e,f,a,this.boundingSphere)};Zb.prototype.isDestroyed=function(){return!1};Zb.prototype.destroy=function(){return iTe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var VP=Zb;function sTe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Dbt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function aTe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function cTe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=aTe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function lTe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Eo(e,t){var p;e=Rn(e),t=y(t,y.EMPTY_OBJECT);let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=Ht.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=Ht.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}y(t.blurActiveElementOnCanvasFocus,!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Rn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?Rn(t.creditViewport):n,f=y(t.showRenderLoopErrors,!0),h=y(t.useBrowserRecommendedResolution,!0);this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new me,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new ym,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),cTe(this);try{let g=y(t.ellipsoid,ee.default),m=new OH({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:g,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:y(t.scene3DOnly,!1),shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=m,m.camera.constrainedAxis=d.UNIT_Z,aTe(this),lTe(this);let x=t.globe;l(x)||(x=new az(g)),x!==!1&&(m.globe=x,m.globe.shadows=y(t.terrainShadows,yn.RECEIVE_ONLY));let b=t.skyBox;!l(b)&&ee.WGS84.equals(g)&&(b=BH.createEarthSkyBox()),b!==!1&&(m.skyBox=b,m.sun=new zH,ee.WGS84.equals(g)&&(m.moon=new pz));let T=t.skyAtmosphere;!l(T)&&ee.WGS84.equals(g)&&(T=new LH(g),T.show=t.globe!==!1&&x.show),T!==!1&&(m.skyAtmosphere=T);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=hc.fromWorldImagery()),m.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(m.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&m.setTerrain(t.terrain),this._screenSpaceEventHandler=new Jf(i),l(t.sceneMode)&&(t.sceneMode===ne.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ne.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=y(t.useDefaultRenderLoop,!0),this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let A=this;this._onRenderError=function(M,N){A._useDefaultRenderLoop=!1,A._renderLoopRunning=!1,A._showRenderLoopErrors&&A.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,N)},m.renderError.addEventListener(this._onRenderError);let E=t.dataSources,v=!1;l(E)||(E=new H3,v=!0);let D=new Pk({scene:m,dataSourceCollection:E}),R=new xr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=(p=t.automaticallyTrackDataSourceClocks)!=null?p:!0,this._dataSourceCollection=E,this._destroyDataSourceCollection=v,this._dataSourceDisplay=D,this._eventHelper=R,this._canAnimateUpdateCallback=this._updateCanAnimate,R.add(this._clock.onTick,Eo.prototype._onTick,this),R.add(m.morphStart,Eo.prototype._clearTrackedObject,this),R.add(E.dataSourceAdded,Eo.prototype._onDataSourceAdded,this),R.add(E.dataSourceRemoved,Eo.prototype._onDataSourceRemoved,this),R.add(m.postRender,Eo.prototype._postRender,this);let O=E.length;for(let M=0;M<O;M++)this._dataSourceAdded(E,E.get(M));this._dataSourceAdded(void 0,D.defaultDataSource),R.add(E.dataSourceAdded,Eo.prototype._dataSourceAdded,this),R.add(E.dataSourceRemoved,Eo.prototype._dataSourceRemoved,this)}catch(g){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',g),g}}Object.defineProperties(Eo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Dbt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,r$(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ne.COLUMBUS_VIEW||n===ne.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ne.COLUMBUS_VIEW||n===ne.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(F.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,sTe(this.clock,e))}}});Eo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=T_(n);u||(typeof n=="string"&&(n=new Error(n)),t=T_({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e}
${t}
${m}`);let x=document.createElement("div");x.className="cesium-widget-errorPanel-message-details collapsed";let b=document.createElement("span");b.className="cesium-widget-errorPanel-more-details",b.appendChild(document.createTextNode("See more...")),x.appendChild(b),x.onclick=function(T){x.removeChild(b),x.appendChild(document.createTextNode(m)),x.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",x.onclick=void 0},a.appendChild(x)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let p=document.createElement("button");p.setAttribute("type","button"),p.className="cesium-button",p.appendChild(document.createTextNode("OK")),p.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(p),i.appendChild(o)};Eo.prototype.isDestroyed=function(){return!1};Eo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Eo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,cTe(this),lTe(this),this._scene.requestRender())};Eo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Eo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Eo.prototype._onEntityCollectionChanged,this)};Eo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Eo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Eo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};Eo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)&&l(i.boundingSphere)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere)===ct.DONE&&i.update(t,i.boundingSphere)}};Eo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Eo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Eo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&sTe(this.clock,e)};Eo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Eo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Eo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Eo.prototype.zoomTo=function(e,t){return uTe(this,e,{offset:t},!1)};Eo.prototype.flyTo=function(e,t){return uTe(this,e,t,!0)};function uTe(e,t,n,i){r$(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){var s;if(e._zoomPromise===o){if(r instanceof hc){let a;l(r.imageryProvider)?a=Promise.resolve(r.getImageryRectangle()):a=new Promise(c=>{let u=r.readyEvent.addEventListener(()=>{u(),c(r.getImageryRectangle())})}),a.then(function(c){return VE(c,e.scene)}).then(function(c){e._zoomPromise===o&&(e._zoomTarget=c)});return}if(r instanceof ws||r instanceof VP||r instanceof Yb){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let a=r.loadingEvent.addEventListener(function(){a(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=(s=r.values)!=null?s:r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function UP(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function r$(e){let t=e._zoomPromise;l(t)&&(UP(e),e._completeZoom(!1))}Eo.prototype._postRender=function(){Ibt(this),Pbt(this)};var oTe=new ce;function Ibt(e){var f;let t=e._zoomTarget;if(!l(t)||e.scene.mode===ne.MORPHING)return;let n=e.scene,i=n.camera,o=(f=e._zoomOptions)!=null?f:{},r;function s(h){l(o.offset)||(o.offset=new Jd(0,-.5,h.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(h,o.offset),i.lookAtTransform(F.IDENTITY),e._completeZoom(!0)),UP(e)}if(t instanceof VP){if(l(t.boundingSphere)){s(t.boundingSphere);return}let h=t.frameChanged.addEventListener(function(p){s(p.boundingSphere),h()});return}if(t instanceof ws||t instanceof Yb){s(t.boundingSphere);return}if(t instanceof fe){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),UP(e);return}let a=t,c=[];for(let h=0,p=a.length;h<p;h++){let g=e._dataSourceDisplay.getBoundingSphere(a[h],!1,oTe);if(g===ct.PENDING)return;g!==ct.FAILED&&c.push(ce.clone(oTe))}if(c.length===0){r$(e);return}e.trackedEntity=void 0;let u=ce.fromBoundingSpheres(c);e._zoomIsFlight?(UP(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(F.IDENTITY),UP(e),e._completeZoom(!0))}var rTe=new ce;function Pbt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=Y.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,rTe);if(r===ct.PENDING)return;let s=o.mode;(s===ne.COLUMBUS_VIEW||s===ne.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ne.COLUMBUS_VIEW||s===ne.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==ct.FAILED?rTe:void 0;e._entityView=new Mk(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var qH=Eo;var YH=`uniform sampler2D u_noiseTexture;
uniform vec3 u_noiseTextureDimensions;
uniform float u_noiseDetail;
in vec2 v_offset;
in vec3 v_maximumSize;
in vec4 v_color;
in float v_slice;
in float v_brightness;
float wrap(float value, float rangeLength) {
if(value < 0.0) {
float absValue = abs(value);
float modValue = mod(absValue, rangeLength);
return mod(rangeLength - modValue, rangeLength);
}
return mod(value, rangeLength);
}
vec3 wrapVec(vec3 value, float rangeLength) {
return vec3(wrap(value.x, rangeLength),
wrap(value.y, rangeLength),
wrap(value.z, rangeLength));
}
vec2 voxelToUV(vec3 voxelIndex) {
float textureSliceWidth = u_noiseTextureDimensions.x;
float noiseTextureRows = u_noiseTextureDimensions.y;
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth;
vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared,
inverseNoiseTextureRows / textureSliceWidth);
vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth);
float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows);
float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows);
float xPixelCoord = wrappedIndex.x + column * textureSliceWidth;
float yPixelCoord = wrappedIndex.y + row * textureSliceWidth;
return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions;
}
// Interpolate a voxel with its neighbor (along the positive X-axis)
vec4 lerpSamplesX(vec3 voxelIndex, float x) {
vec2 uv0 = voxelToUV(voxelIndex);
vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0));
vec4 sample0 = texture(u_noiseTexture, uv0);
vec4 sample1 = texture(u_noiseTexture, uv1);
return mix(sample0, sample1, x);
}
vec4 sampleNoiseTexture(vec3 position) {
float textureSliceWidth = u_noiseTextureDimensions.x;
vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0);
vec3 lerpValue = fract(recenteredPos);
vec3 voxelIndex = floor(recenteredPos);
vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x);
vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x);
vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x);
vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x);
vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y);
vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y);
return mix(yLerp0, yLerp1, lerpValue.z);
}
// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0).
bool intersectSphere(vec3 origin, vec3 dir, float slice,
out vec3 point, out vec3 normal) {
float A = dot(dir, dir);
float B = dot(origin, dir);
float C = dot(origin, origin) - 0.25;
float discriminant = (B * B) - (A * C);
if(discriminant < 0.0) {
return false;
}
float root = sqrt(discriminant);
float t = (-B - root) / A;
if(t < 0.0) {
t = (-B + root) / A;
}
point = origin + t * dir;
if(slice >= 0.0) {
point.z = (slice / 2.0) - 0.5;
if(length(point) > 0.5) {
return false;
}
}
normal = normalize(point);
point -= czm_epsilon2 * normal;
return true;
}
// Transforms the ray origin and direction into unit sphere space,
// then transforms the result back into the ellipsoid's space.
bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice,
out vec3 point, out vec3 normal) {
if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) {
return false;
}
vec3 o = (origin - center) / scale;
vec3 d = dir / scale;
vec3 p, n;
bool intersected = intersectSphere(o, d, slice, p, n);
if(intersected) {
point = (p * scale) + center;
normal = n;
}
return intersected;
}
// Assume that if phase shift is being called for octave i,
// the frequency is of i - 1. This saves us from doing extra
// division / multiplication operations.
vec2 phaseShift2D(vec2 p, vec2 freq) {
return (czm_pi / 2.0) * sin(freq.yx * p.yx);
}
vec2 phaseShift3D(vec3 p, vec2 freq) {
return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z));
}
// The cloud texture function derived from Gardner's 1985 paper,
// "Visual Simulation of Clouds."
// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf
const float T0 = 0.6; // contrast of the texture pattern
const float k = 0.1; // computed to produce a maximum value of 1
const float C0 = 0.8; // coefficient
const float FX0 = 0.6; // frequency X
const float FY0 = 0.6; // frequency Y
const int octaves = 5;
float T(vec3 point) {
vec2 sum = vec2(0.0);
float Ci = C0;
vec2 FXY = vec2(FX0, FY0);
vec2 PXY = vec2(0.0);
for(int i = 1; i <= octaves; i++) {
PXY = phaseShift3D(point, FXY);
Ci *= 0.707;
FXY *= 2.0;
vec2 sinTerm = sin(FXY * point.xy + PXY);
sum += Ci * sinTerm + vec2(T0);
}
return k * sum.x * sum.y;
}
const float a = 0.5; // fraction of surface reflection due to ambient or scattered light,
const float t = 0.4; // fraction of texture shading
const float s = 0.25; // fraction of specular reflection
float I(float Id, float Is, float It) {
return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a;
}
const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7));
vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice,
float brightness) {
vec3 cloudPoint, cloudNormal;
if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice,
cloudPoint, cloudNormal)) {
return vec4(0.0);
}
float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection
float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection
float It = T(cloudPoint); // texture function
float intensity = I(Id, Is, It);
vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0));
vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint);
float W = noise.x;
float W2 = noise.y;
float W3 = noise.z;
// The dot product between the cloud's normal and the ray's direction is greatest
// in the center of the ellipsoid's surface. It decreases towards the edge.
// Thus, it is used to blur the areas leading to the edges of the ellipsoid,
// so that no harsh lines appear.
// The first (and biggest) layer of worley noise is then subtracted from this.
// The final result is scaled up so that the base cloud is not too translucent.
float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0);
float TR = pow(ndDot, 3.0) - W; // translucency
TR *= 1.3;
// Subtracting the second and third layers of worley noise is more complicated.
// If these layers of noise were simply subtracted from the current translucency,
// the shape derived from the first layer of noise would be completely deleted.
// The erosion of this noise should thus be constricted to the edges of the cloud.
// However, because the edges of the ellipsoid were already blurred away, mapping
// the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance.
// The value of (0.5 - ndDot) provides the best compromise.
float minusDot = 0.5 - ndDot;
// Even with the previous calculation, subtracting the second layer of wnoise
// erode too much of the cloud. The addition of it, however, will detailed
// volume to the cloud. As long as the noise is only added and not subtracted,
// the results are aesthetically pleasing.
// The minusDot product is mapped in a way that it is larger at the edges of
// the ellipsoid, so a subtraction and min operation are used instead of
// an addition and max one.
TR -= min(minusDot * W2, 0.0);
// The third level of worley noise is subtracted from the result, with some
// modifications. First, a scalar is added to minusDot so that the noise
// starts affecting the shape farther away from the center of the ellipsoid's
// surface. Then, it is scaled down so its impact is not too intense.
TR -= 0.8 * (minusDot + 0.25) * W3;
// The texture function's shading does not correlate with the shape of the cloud
// produced by the layers of noise, so an extra shading scalar is calculated.
// The darkest areas of the cloud are assigned to be where the noise erodes
// the cloud the most. This is then interpolated based on the translucency
// and the diffuse shading term of that point in the cloud.
float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR);
// To avoid values that are too dark, this scalar is increased by a small amount
// and clamped so it never goes to zero.
shading = clamp(shading + 0.2, 0.3, 1.0);
// Finally, the contrast of the cloud's color is increased.
vec3 finalColor = mix(vec3(0.5), shading * color, 1.15);
return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color;
}
void main() {
#ifdef DEBUG_BILLBOARDS
out_FragColor = vec4(0.0, 0.5, 0.5, 1.0);
#endif
// To avoid calculations with high values,
// we raycast from an arbitrarily smaller space.
vec2 coordinate = v_maximumSize.xy * v_offset;
vec3 ellipsoidScale = 0.82 * v_maximumSize;
vec3 ellipsoidCenter = vec3(0.0);
float zOffset = max(ellipsoidScale.z - 10.0, 0.0);
vec3 eye = vec3(0, 0, -10.0 - zOffset);
vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye);
vec3 rayOrigin = eye;
#ifdef DEBUG_ELLIPSOIDS
vec3 point, normal;
if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice,
point, normal)) {
out_FragColor = v_brightness * v_color;
}
#else
#ifndef DEBUG_BILLBOARDS
vec4 cloud = drawCloud(rayOrigin, rayDir,
ellipsoidCenter, ellipsoidScale, v_slice, v_brightness);
if(cloud.w < 0.01) {
discard;
}
out_FragColor = cloud;
#endif
#endif
}
`;var XH=`#ifdef INSTANCED
in vec2 direction;
#endif
in vec4 positionHighAndScaleX;
in vec4 positionLowAndScaleY;
in vec4 packedAttribute0;
in vec4 packedAttribute1;
in vec4 color;
out vec2 v_offset;
out vec3 v_maximumSize;
out vec4 v_color;
out float v_slice;
out float v_brightness;
void main() {
// Unpack attributes.
vec3 positionHigh = positionHighAndScaleX.xyz;
vec3 positionLow = positionLowAndScaleY.xyz;
vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w);
float show = packedAttribute0.x;
float brightness = packedAttribute0.y;
vec2 coordinates = packedAttribute0.wz;
vec3 maximumSize = packedAttribute1.xyz;
float slice = packedAttribute1.w;
#ifdef INSTANCED
vec2 dir = direction;
#else
vec2 dir = coordinates;
#endif
vec2 offset = dir - vec2(0.5, 0.5);
vec2 scaledOffset = scale * offset;
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
vec4 positionEC = czm_modelViewRelativeToEye * p;
positionEC.xy += scaledOffset;
positionEC.xyz *= show;
gl_Position = czm_projection * positionEC;
v_offset = offset;
v_maximumSize = maximumSize;
v_color = color;
v_slice = slice;
v_brightness = brightness;
}
`;var KH=`uniform vec3 u_noiseTextureDimensions;
uniform float u_noiseDetail;
uniform vec3 u_noiseOffset;
in vec2 v_position;
float wrap(float value, float rangeLength) {
if(value < 0.0) {
float absValue = abs(value);
float modValue = mod(absValue, rangeLength);
return mod(rangeLength - modValue, rangeLength);
}
return mod(value, rangeLength);
}
vec3 wrapVec(vec3 value, float rangeLength) {
return vec3(wrap(value.x, rangeLength),
wrap(value.y, rangeLength),
wrap(value.z, rangeLength));
}
vec3 random3(vec3 p) {
float dot1 = dot(p, vec3(127.1, 311.7, 932.8));
float dot2 = dot(p, vec3(269.5, 183.3, 421.4));
return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2));
}
// Frequency corresponds to cell size.
// The higher the frequency, the smaller the cell size.
vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) {
float textureSliceWidth = u_noiseTextureDimensions.x;
vec3 cell = centerCell + offset;
cell = wrapVec(cell, textureSliceWidth / u_noiseDetail);
cell += floor(u_noiseOffset / u_noiseDetail);
vec3 p = offset + random3(cell);
return p;
}
float worleyNoise(vec3 p, float freq) {
vec3 centerCell = floor(p * freq);
vec3 pointInCell = fract(p * freq);
float shortestDistance = 1000.0;
for(float z = -1.0; z <= 1.0; z++) {
for(float y = -1.0; y <= 1.0; y++) {
for(float x = -1.0; x <= 1.0; x++) {
vec3 offset = vec3(x, y, z);
vec3 point = getWorleyCellPoint(centerCell, offset, freq);
float distance = length(pointInCell - point);
if(distance < shortestDistance) {
shortestDistance = distance;
}
}
}
}
return shortestDistance;
}
const float MAX_FBM_ITERATIONS = 10.0;
float worleyFBMNoise(vec3 p, float octaves, float scale) {
float noise = 0.0;
float freq = 1.0;
float persistence = 0.625;
for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) {
if(i >= octaves) {
break;
}
noise += worleyNoise(p * scale, freq * scale) * persistence;
persistence *= 0.5;
freq *= 2.0;
}
return noise;
}
void main() {
float textureSliceWidth = u_noiseTextureDimensions.x;
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
float x = mod(v_position.x, textureSliceWidth);
float y = mod(v_position.y, textureSliceWidth);
float sliceRow = floor(v_position.y / textureSliceWidth);
float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth;
vec3 position = vec3(x, y, z);
position /= u_noiseDetail;
float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0);
float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0);
float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0);
out_FragColor = vec4(worley0, worley1, worley2, 1.0);
}
`;var $H=`uniform vec3 u_noiseTextureDimensions;
in vec2 position;
out vec2 v_position;
void main()
{
gl_Position = vec4(position, 0.1, 1.0);
float textureSliceWidth = u_noiseTextureDimensions.x;
float noiseTextureRows = u_noiseTextureDimensions.y;
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
vec2 transformedPos = (position * 0.5) + vec2(0.5);
transformedPos *= textureSliceWidth;
transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows;
transformedPos.y *= noiseTextureRows;
v_position = transformedPos;
}
`;var ZH=`
in vec2 v_textureCoordinates;
void main()
{
czm_materialInput materialInput;
materialInput.s = v_textureCoordinates.s;
materialInput.st = v_textureCoordinates;
materialInput.str = vec3(v_textureCoordinates, 0.0);
materialInput.normalEC = vec3(0.0, 0.0, -1.0);
czm_material material = czm_getMaterial(materialInput);
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
}
`;function wS(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var Qb=new ae;function Obt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}wS.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let p=n;p<=o;++p)for(let g=t;g<=i;++g)Obt(e,g,p,s)||s.push(new SS(r,void 0,0,g,p));r.tileXYToRectangle(t,n,e,Qb);let a=Qb.west,c=Qb.north;r.tileXYToRectangle(i,o,e,Qb);let u=Qb.east,f=Qb.south,h=new Fbt(e,a,f,u,c);for(let p=0;p<s.length;++p){let g=s[p];s$(g.extent,h)&&Bbt(this._maximumLevel,g,h)}};wS.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(vS(i.extent,e)){t=i;break}}return l(t)?zP(void 0,t,e):-1};var Rbt=[],Mbt=[],Lbt=new ae,Nbt=new ae;wS.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=Rbt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Lbt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Nbt))):t.push(e);let n=Mbt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)HP(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var fTe=new fe;wS.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,Qb);return ae.center(i,fTe),this.computeMaximumLevelAtPosition(fTe)>=e};wS.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function SS(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(SS.prototype,{nw:{get:function(){return this._nw||(this._nw=new SS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new SS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new SS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new SS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function Fbt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function s$(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function Bbt(e,t,n){for(;t.level<e;)if(QH(t.nw.extent,n))t=t.nw;else if(QH(t.ne.extent,n))t=t.ne;else if(QH(t.sw.extent,n))t=t.sw;else if(QH(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=No(t.rectangles,n.level,kbt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function kbt(e,t){return e.level-t}function QH(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function vS(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function zP(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&vS(t._nw.extent,n),s=t._ne&&vS(t._ne.extent,n),a=t._sw&&vS(t._sw.extent,n),c=t._se&&vS(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,zP(t,t._nw,n))),s&&(i=Math.max(i,zP(t,t._ne,n))),a&&(i=Math.max(i,zP(t,t._sw,n))),c&&(i=Math.max(i,zP(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];vS(a,n)&&(i=a.level)}t=t.parent}return i}function HP(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||s$(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=Vbt(e[s.level],s)}HP(e,t._nw,n),HP(e,t._ne,n),HP(e,t._sw,n),HP(e,t._se,n)}function Vbt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];s$(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var ep=wS;var Ubt=15;function dTe(e){this.ellipsoid=y(e.ellipsoid,ee.default),this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}dTe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function zbt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new vt(n));let i=t.spatialReference,o=y(i.latestWkid,i.wkid),r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new Qi(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new U(r.xmin,r.ymin),s.rectangleNortheastInMeters=new U(r.xmax,r.ymax),e.tilingScheme=new ms(s)}else throw new se("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new se("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?ah.LERC:ah.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new ep(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new ep(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function Hbt(e,t,n){try{let i=await t.fetchJson();zbt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw Oo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function _0(e){e=y(e,y.EMPTY_OBJECT),this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new me}Object.defineProperties(_0.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});_0.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT),e=await Promise.resolve(e);let n=Ee.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new dTe(t);await Hbt(o,i);let r=new _0(t);return o.build(r),r._resource=n,r};_0.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(a$(this,n+1,e*2,t*2))){let h=hTe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new fc({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):Ubt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){var p;if(l(a)&&a.state===ei.CANCELLED){i.cancel();try{await((p=i.deferred)==null?void 0:p.promise)}catch{}return i.state=ei.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function a$(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}_0.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};_0.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=a$(this,n,e,t);if(l(i))return i;hTe(this,n,e,t)};_0.prototype.loadTileDataAvailability=function(e,t,n){};function Gbt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new U(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let p=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new U(u.x,e.y)),--u.x,--p,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let x=e.x;x<=p;++x)if(i[m+x]!==s){h=!0;break}h?(a.push(new U(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function Wbt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new U(0,0)];for(;a.length>0;){let c=a.pop(),u=Gbt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function hTe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new rr({throttle:!1,throttleByServer:!0,type:Ts.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(p){let g=Wbt(o,r,s,s,p.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let x=0;x<g.length;++x){let b=g[x];m.addAvailableTileRange(t,b.startX,b.startY,b.endX,b.endY)}return a$(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(p){return delete c[a],p}),{promise:h,request:u}):{}}var mTe=_0;var pTe="https://dev.virtualearth.net/REST/v1/Locations";function c$(e){e=y(e,y.EMPTY_OBJECT);let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new Ee({url:pTe,queryParameters:n}),this._credit=new vt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(c$.prototype,{url:{get:function(){return pTe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});c$.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var _Te=c$;function l$(){}Object.defineProperties(l$.prototype,{credit:{get:function(){}}});l$.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var gTe=l$;var jbt=new oe,yTe=new d,DS=new d;function qbt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=jbt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,p;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,yTe),d.multiplyByScalar(h,.5,h),p=F.multiplyByVector(vx.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],yTe),d.multiplyByScalar(f,.5,f),p=F.multiplyByVector(vx.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],p=F.multiplyByVector(g0.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,p.x,o),d.multiplyByScalar(u,p.y,DS),d.add(o,DS,o),d.multiplyByScalar(f,p.z,DS),d.add(o,DS,o),d.multiplyByScalar(h,p.w,DS),d.add(o,DS,o)}}var Ybt=new d,Xbt=new d;function g0(e){e=y(e,y.EMPTY_OBJECT);let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=Ybt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=Xbt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=qbt(this),this._lastTimeIndex=0}Object.defineProperties(g0.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});g0.catmullRomCoefficientMatrix=new F(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);g0.prototype.findTimeInterval=so.prototype.findTimeInterval;g0.prototype.wrapTime=so.prototype.wrapTime;g0.prototype.clampTime=so.prototype.clampTime;g0.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var xTe=g0;var JH={};JH.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,p,g,m,x;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(p=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),p!==1&&(r.push(-1),r.push(1),r.push(2),r.push(p))):c&&(m=(e-o)/(n-o),x=(e-o)/(i-o),r.push(0),r.push(1),x!==1&&(r.push(-1),r.push(2),r.push(1),r.push(x)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(x=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(x),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),p=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(p)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};JH.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,p=i-a,g=1/(h*u+f*p),m=t-a,x=e-s,b=(h*x+f*m)*g,T=(-p*x+u*m)*g,C=1-b-T;return l(c)?(c.x=b,c.y=T,c.z=C,c):new d(b,T,C)};JH.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let p=u/h,g=f/h;if(p>=0&&p<=1&&g>=0&&g<=1)return l(c)||(c=new U),c.x=e+p*(n-e),c.y=t+p*(i-t),c};var y0=JH;function x0(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=t8(e.westIndices,o,t),this._southIndices=t8(e.southIndices,r,t),this._eastIndices=t8(e.eastIndices,o,t),this._northIndices=t8(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=y(e.childTileMask,15),this._createdByUpsampling=y(e.createdByUpsampling,!1),this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(x0.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var e8=[];function t8(e,t,n){e8.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)e8[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(e8.sort(t),Be.createTypedArray(n,e8)):e}var bTe="createVerticesFromQuantizedTerrainMesh",Kbt=new bi(bTe),$bt=new bi(bTe,Um.maximumAsynchronousTasks);x0.prototype.createMesh=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=y(e.exaggeration,1),s=y(e.exaggerationRelativeHeight,0),a=y(e.throttle,!0),c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?$bt:Kbt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let p=this;return Promise.resolve(h).then(function(g){let m=p._quantizedVertices.length/3,x=m+p._westIndices.length+p._southIndices.length+p._eastIndices.length+p._northIndices.length,b=Be.createTypedArray(x,g.indices),T=new Float32Array(g.vertices),C=g.center,A=g.minimumHeight,E=g.maximumHeight,v=p._boundingSphere,D=p._orientedBoundingBox,R=y(d.clone(g.occludeePointInScaledSpace),p._horizonOcclusionPoint),O=g.vertexStride,M=el.clone(g.encoding);return p._mesh=new ch(C,T,b,g.indexCountWithoutSkirts,m,A,E,v,R,O,D,M,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),p._quantizedVertices=void 0,p._encodedNormals=void 0,p._indices=void 0,p._uValues=void 0,p._vValues=void 0,p._heightValues=void 0,p._westIndices=void 0,p._southIndices=void 0,p._eastIndices=void 0,p._northIndices=void 0,p._mesh})};var Zbt=new bi("upsampleQuantizedTerrainMesh",Um.maximumAsynchronousTasks);x0.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=Zbt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(p))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,x=u?g*.5:this._southSkirtHeight,b=c?this._eastSkirtHeight:g*.5,T=u?this._northSkirtHeight:g*.5,C=this._credits;return Promise.resolve(p).then(function(A){let E=new Uint16Array(A.vertices),v=Be.createTypedArray(E.length/3,A.indices),D;return l(A.encodedNormals)&&(D=new Uint8Array(A.encodedNormals)),new x0({quantizedVertices:E,indices:v,encodedNormals:D,minimumHeight:A.minimumHeight,maximumHeight:A.maximumHeight,boundingSphere:ce.clone(A.boundingSphere),orientedBoundingBox:Dn.clone(A.orientedBoundingBox),horizonOcclusionPoint:d.clone(A.horizonOcclusionPoint),westIndices:A.westIndices,southIndices:A.southIndices,eastIndices:A.eastIndices,northIndices:A.northIndices,westSkirtHeight:m,southSkirtHeight:x,eastSkirtHeight:b,northSkirtHeight:T,childTileMask:0,credits:C,createdByUpsampling:!0})})};var u$=32767,TTe=new d;x0.prototype.interpolateHeight=function(e,t,n){let i=P.clamp((t-e.west)/e.width,0,1);i*=u$;let o=P.clamp((n-e.south)/e.height,0,1);return o*=u$,l(this._mesh)?tTt(this,i,o):nTt(this,i,o)};function CTe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var Qbt=new U,Jbt=new U,eTt=new U;function tTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,u,Qbt),g=r.decodeTextureCoordinates(o,f,Jbt),m=r.decodeTextureCoordinates(o,h,eTt);if(CTe(t,n,p.x,p.y,g.x,g.y,m.x,m.y)){let x=y0.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,m.x,m.y,TTe);if(x.x>=-1e-15&&x.y>=-1e-15&&x.z>=-1e-15){let b=r.decodeHeight(o,u),T=r.decodeHeight(o,f),C=r.decodeHeight(o,h);return x.x*b+x.y*T+x.z*C}}}}function nTt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],p=i[u],g=i[f],m=i[h],x=o[u],b=o[f],T=o[h];if(CTe(t,n,p,x,g,b,m,T)){let C=y0.computeBarycentricCoordinates(t,n,p,x,g,b,m,T,TTe);if(C.x>=-1e-15&&C.y>=-1e-15&&C.z>=-1e-15){let A=C.x*r[u]+C.y*r[f]+C.z*r[h];return P.lerp(e._minimumHeight,e._maximumHeight,A/u$)}}}}x0.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};x0.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var IS=x0;function iTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function ETe(e){this.requestVertexNormals=y(e.requestVertexNormals,!1),this.requestWaterMask=y(e.requestWaterMask,!1),this.requestMetadata=y(e.requestMetadata,!0),this.ellipsoid=y(e.ellipsoid,ee.default),this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}ETe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function STe(e,t,n){if(!t.format){let x="The tile format is not specified in the layer.json file.";throw e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,x),new se(x)}if(!t.tiles||t.tiles.length===0){let x="The layer.json file does not specify any tile URL templates.";throw e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,x),new se(x)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let x=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,x),new se(x)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new Qi({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new ms({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let x=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,x),new se(x)}if(e.levelZeroMaximumGeometricError=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let x=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,x),new se(x)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,p=t.available,g;if(l(p)&&!l(h)){g=new ep(e.tilingScheme,p.length);for(let x=0;x<p.length;++x){let b=p[x],T=e.tilingScheme.getNumberOfYTilesAtLevel(x);l(e.overallAvailability[x])||(e.overallAvailability[x]=[]);for(let C=0;C<b.length;++C){let A=b[C],E=T-A.endY-1,v=T-A.startY-1;e.overallAvailability[x].push([A.startX,E,A.endX,v]),g.addAvailableTileRange(x,A.startX,E,A.endX,v)}}}else l(h)&&(f=new ep(e.tilingScheme,u),g=new ep(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new iTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await h$(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function oTt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=`
${t.message}`),e.previousError=Oo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return h$(e,n);throw new se(i)}async function rTt(e,t,n){await STe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new ep(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new vt(e.attribution);e.tileCredits.push(o)}return!0}async function h$(e,t){try{let n=await e.layerJsonResource.fetchJson();return rTt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await STe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):oTt(e,n,t)}}function yh(e){e=y(e,y.EMPTY_OBJECT),this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=y(e.requestVertexNormals,!1),this._requestWaterMask=y(e.requestWaterMask,!1),this._requestMetadata=y(e.requestMetadata,!0),this._errorEvent=new me;let t=e.credit;typeof t=="string"&&(t=new vt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var f$={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function ATe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function sTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new fc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function aTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,x=Uint16Array.BYTES_PER_ELEMENT,b=x*m,T=new DataView(t),C=new d(T.getFloat64(a,!0),T.getFloat64(a+8,!0),T.getFloat64(a+16,!0));a+=f;let A=T.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let E=T.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let v=new ce(new d(T.getFloat64(a,!0),T.getFloat64(a+8,!0),T.getFloat64(a+16,!0)),T.getFloat64(a+f,!0));a+=h;let D=new d(T.getFloat64(a,!0),T.getFloat64(a+8,!0),T.getFloat64(a+16,!0));a+=f;let R=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let O=new Uint16Array(t,a,R*3);a+=R*g,R>64*1024&&(x=Uint32Array.BYTES_PER_ELEMENT,b=x*m);let M=O.subarray(0,R),N=O.subarray(R,2*R),_=O.subarray(R*2,3*R);Bn.zigZagDeltaDecode(M,N,_),a%x!==0&&(a+=x-a%x);let S=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let w=Be.createTypedArrayFromArrayBuffer(R,t,a,S*m);a+=S*b;let I=0,L=w.length;for(let re=0;re<L;++re){let _e=w[re];w[re]=I-_e,_e===0&&++I}let B=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Be.createTypedArrayFromArrayBuffer(R,t,a,B);a+=B*x;let V=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let G=Be.createTypedArrayFromArrayBuffer(R,t,a,V);a+=V*x;let k=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let W=Be.createTypedArrayFromArrayBuffer(R,t,a,k);a+=k*x;let q=T.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let J=Be.createTypedArrayFromArrayBuffer(R,t,a,q);a+=q*x;let j,K;for(;a<T.byteLength;){let re=T.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let _e=T.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,re===f$.OCT_VERTEX_NORMALS&&e._requestVertexNormals)j=new Uint8Array(t,a,R*2);else if(re===f$.WATER_MASK&&e._requestWaterMask)K=new Uint8Array(t,a,_e);else if(re===f$.METADATA&&e._requestMetadata){let be=T.getUint32(a,!0);if(be>0){let De=cr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,be).available;if(l(De))for(let Me=0;Me<De.length;++Me){let Re=n+Me+1,rt=De[Me],Ye=e._tilingScheme.getNumberOfYTilesAtLevel(Re);for(let dt=0;dt<rt.length;++dt){let Xe=rt[dt],_t=Ye-Xe.endY-1,ft=Ye-Xe.startY-1;e.availability.addAvailableTileRange(Re,Xe.startX,_t,Xe.endX,ft),r.availability.addAvailableTileRange(Re,Xe.startX,_t,Xe.endX,ft)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=_e}let Q=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ye=Dn.fromRectangle(he,A,E,e._tilingScheme.ellipsoid);return new IS({center:C,minimumHeight:A,maximumHeight:E,boundingSphere:v,orientedBoundingBox:ye,horizonOcclusionPoint:D,quantizedVertices:O,encodedNormals:j,indices:w,westIndices:H,southIndices:G,eastIndices:W,northIndices:J,westSkirtHeight:Q,southSkirtHeight:Q,eastSkirtHeight:Q,northSkirtHeight:Q,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:K,credits:e._tileCredits})}yh.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=m$(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):vTe(this,e,t,n,r,i)};function vTe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new se("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],p=o.resource;l(p._ionEndpoint)&&!l(p._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=ATe(void 0)):u=ATe(c);let g=p.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?sTt(e,m,i,t,n):aTt(e,m,i,t,n,o):Promise.reject(new se("Mesh buffer doesn't exist."))})}Object.defineProperties(yh.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});yh.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};yh.fromIonAssetId=async function(e,t){let n=await cf.fromAssetId(e);return yh.fromUrl(n,t)};yh.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT),e=await Promise.resolve(e);let n=Ee.createIfNeeded(e);n.appendForwardSlash();let i=new ETe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await h$(i);let o=new yh(t);return i.build(o),o};yh.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(m$(this,e,t,n,i[r],r===0).result)return;return!1};yh.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=m$(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function d$(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function m$(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=d$(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let p=new rr({throttle:!1,throttleByServer:!0,type:Ts.TERRAIN});h=vTe(e,f.x,f.y,f.level,o,p),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=d$(o,f.x,f.y,f.level)}return{result:!1}}yh._getAvailabilityTile=d$;var PS=yh;function F_(e){e=y(e,y.EMPTY_OBJECT);let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new Nl(n),this._workerName="createCircleGeometry"}F_.packedLength=Nl.packedLength;F_.pack=function(e,t,n){return Nl.pack(e._ellipseGeometry,t,n)};var wTe=new Nl({center:new d,semiMajorAxis:1,semiMinorAxis:1}),ka={center:new d,radius:void 0,ellipsoid:ee.clone(ee.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Ie,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};F_.unpack=function(e,t,n){let i=Nl.unpack(e,t,wTe);return ka.center=d.clone(i._center,ka.center),ka.ellipsoid=ee.clone(i._ellipsoid,ka.ellipsoid),ka.ellipsoid=ee.clone(i._ellipsoid,wTe._ellipsoid),ka.height=i._height,ka.extrudedHeight=i._extrudedHeight,ka.granularity=i._granularity,ka.vertexFormat=Ie.clone(i._vertexFormat,ka.vertexFormat),ka.stRotation=i._stRotation,ka.shadowVolume=i._shadowVolume,l(n)?(ka.semiMajorAxis=i._semiMajorAxis,ka.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Nl(ka),n):(ka.radius=i._semiMajorAxis,new F_(ka))};F_.createGeometry=function(e){return Nl.createGeometry(e._ellipseGeometry)};F_.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new F_({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Ie.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(F_.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var DTe=F_;function OS(e){e=y(e,y.EMPTY_OBJECT);let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new Vf(n),this._workerName="createCircleOutlineGeometry"}OS.packedLength=Vf.packedLength;OS.pack=function(e,t,n){return Vf.pack(e._ellipseGeometry,t,n)};var cTt=new Vf({center:new d,semiMajorAxis:1,semiMinorAxis:1}),Vu={center:new d,radius:void 0,ellipsoid:ee.clone(ee.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};OS.unpack=function(e,t,n){let i=Vf.unpack(e,t,cTt);return Vu.center=d.clone(i._center,Vu.center),Vu.ellipsoid=ee.clone(i._ellipsoid,Vu.ellipsoid),Vu.height=i._height,Vu.extrudedHeight=i._extrudedHeight,Vu.granularity=i._granularity,Vu.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(Vu.semiMajorAxis=i._semiMajorAxis,Vu.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Vf(Vu),n):(Vu.radius=i._semiMajorAxis,new OS(Vu))};OS.createGeometry=function(e){return Vf.createGeometry(e._ellipseGeometry)};var ITe=OS;function lTt(e){return e=y(e,y.EMPTY_OBJECT),PS.fromIonAssetId(2426648,{requestVertexNormals:y(e.requestVertexNormals,!1)})}var n8=lTt;function uTt(e){return e=y(e,y.EMPTY_OBJECT),PS.fromIonAssetId(1,{requestVertexNormals:y(e.requestVertexNormals,!1),requestWaterMask:y(e.requestWaterMask,!1),ellipsoid:ee.WGS84})}var RS=uTt;function MS(e){e=y(e,y.EMPTY_OBJECT),this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new Qi({ellipsoid:y(e.ellipsoid,ee.default)})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new me;let n=e.credit;typeof n=="string"&&(n=new vt(n)),this._credit=n}Object.defineProperties(MS.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});MS.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new fc({buffer:c,width:r,height:s})})};MS.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};MS.prototype.getTileDataAvailable=function(e,t,n){};MS.prototype.loadTileDataAvailability=function(e,t,n){};var PTe=MS;var fTt=1953029805,dTt=2917034100;function p$(e,t){if(p$.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new se("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===fTt||o===dTt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}p$.passThroughDataForTesting=!1;var i8=p$;function OTe(e){this.proxy=e}OTe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var RTe=OTe;function o8(){de.throwInstantiationError()}Object.defineProperties(o8.prototype,{credit:{get:de.throwInstantiationError}});o8.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(vt.getIonCredit)};o8.prototype.geocode=de.throwInstantiationError;var GP=o8;var hTt={SEARCH:0,AUTOCOMPLETE:1},Jb=Object.freeze(hTt);function MTe(){de.throwInstantiationError()}MTe.createGeometry=function(e){de.throwInstantiationError()};var LTe=MTe;var xTt=Hr(_$(),1);function mTt(e,t){return(e&t)!==0}var rl=mTt;var pTt=[1,2,4,8],NTe=15,_Tt=16,gTt=64,yTt=128;function tp(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}tp.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new tp(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};tp.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};tp.prototype.hasSubtree=function(){return rl(this._bits,_Tt)};tp.prototype.hasImagery=function(){return rl(this._bits,gTt)};tp.prototype.hasTerrain=function(){return rl(this._bits,yTt)};tp.prototype.hasChildren=function(){return rl(this._bits,NTe)};tp.prototype.hasChild=function(e){return rl(this._bits,pTt[e])};tp.prototype.getChildBitmask=function(){return this._bits&NTe};var r8=tp;function bTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var TTt=bTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y
wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB
\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2
\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1
ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS
>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88
\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function Uu(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=P.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(Uu.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});Uu.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof Ee)&&(t=e.url);let n=Ee.createIfNeeded(t);n.appendForwardSlash();let i=new Uu;i._resource=n;try{await CTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${BTe(i,"",1).url}: ${o}`;throw new se(r)}return i};Uu.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;rl(t,r)?rl(e,r)&&(s|=1):(s|=2,rl(e,r)||(s|=1)),i+=s}return i};Uu.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];rl(s,2)?rl(s,1)||(t|=r):(n|=r,rl(s,1)&&(t|=r))}return{x:t,y:n,level:i}};Uu.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var FTe=new bi("decodeGoogleEarthEnterprisePacket");Uu.prototype.getQuadTreePacket=function(e,t,n){t=y(t,1),e=y(e,"");let o=BTe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return FTe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let p=Object.keys(u);p.sort(function(m,x){return m.length-x.length});let g=p.length;for(let m=0;m<g;++m){let x=p[m];if(u[x]!==null){let T=r8.clone(u[x]),C=x.length;if(C===h)T.setParent(f);else if(C>1){let A=r[x.substring(0,x.length-1)];T.setParent(A)}r[x]=T}else r[x]=null}})})};Uu.prototype.populateSubtree=function(e,t,n,i){let o=Uu.tileXYToQuadKey(e,t,n);return x$(this,o,i)};function x$(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new rr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),x$(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new se(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new rr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),x$(e,t,s)}).finally(function(){delete a[o]})}Uu.prototype.getTileInformation=function(e,t,n){let i=Uu.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};Uu.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function BTe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var g$,y$;function CTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(y$)){let n=nn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;y$=TT(n).then(function(){g$=window.cesiumGoogleEarthDbRootParser(xTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return y$.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=g$.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return FTe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=g$.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=y(i.imageryPresent,e.imageryPresent),e.protoImagery=i.protoImagery,e.terrainPresent=y(i.terrainPresent,e.terrainPresent),l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=y(a.negativeAltitudeExponentBias,e.negativeAltitudeExponentBias),e.negativeAltitudeThreshold=y(a.compressedNegativeAltitudeThreshold,e.negativeAltitudeThreshold)}l(i.databaseVersion)&&(e._quadPacketVersion=y(i.databaseVersion.quadtreeVersion,e._quadPacketVersion));let o=e.providers,r=y(i.providerInfo,[]),s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new vt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=TTt})}var b0=Uu;function eT(e){e=y(e,y.EMPTY_OBJECT),this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=y(e.childTileMask,15),n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=y(e.createdByUpsampling,!1),this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(eT.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var UTe="createVerticesFromGoogleEarthEnterpriseBuffer",ATt=new bi(UTe),ETt=new bi(UTe,Um.maximumAsynchronousTasks),kTe=new ae,b$=new ae;eT.prototype.createMesh=function(e){e=y(e,y.EMPTY_OBJECT);let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=y(e.exaggeration,1),s=y(e.exaggerationRelativeHeight,0),a=y(e.throttle,!0),c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,kTe),t.tileXYToRectangle(n,i,o,b$);let u=c.cartographicToCartesian(ae.center(b$)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?ETt:ATt).scheduleTask({buffer:this._buffer,nativeRectangle:kTe,rectangle:b$,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(x){return m._mesh=new ch(u,new Float32Array(x.vertices),new Uint16Array(x.indices),x.indexCountWithoutSkirts,x.vertexCountWithoutSkirts,x.minimumHeight,x.maximumHeight,ce.clone(x.boundingSphere3D),d.clone(x.occludeePointInScaledSpace),x.numberOfAttributes,Dn.clone(x.orientedBoundingBox),el.clone(x.encoding),x.westIndicesSouthToNorth,x.southIndicesEastToWest,x.eastIndicesNorthToSouth,x.northIndicesWestToEast),m._minimumHeight=x.minimumHeight,m._maximumHeight=x.maximumHeight,m._buffer=void 0,m._mesh})};eT.prototype.interpolateHeight=function(e,t,n){let i=P.clamp((t-e.west)/e.width,0,1),o=P.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?ITt(this,i,o):RTt(this,i,o,e)};var STt=new bi("upsampleQuantizedTerrainMesh",Um.maximumAsynchronousTasks);eT.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=STt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(p))return;let g=this;return p.then(function(m){let x=new Uint16Array(m.vertices),b=Be.createTypedArray(x.length/3,m.indices),T=g._skirtHeight;return new IS({quantizedVertices:x,indices:b,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:ce.clone(m.boundingSphere),orientedBoundingBox:Dn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:T,southSkirtHeight:T,eastSkirtHeight:T,northSkirtHeight:T,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};eT.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};eT.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var vTt=new U,wTt=new U,DTt=new U,zTe=new d;function ITt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,u,vTt),g=r.decodeTextureCoordinates(o,f,wTt),m=r.decodeTextureCoordinates(o,h,DTt),x=y0.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,m.x,m.y,zTe);if(x.x>=-1e-15&&x.y>=-1e-15&&x.z>=-1e-15){let b=r.decodeHeight(o,u),T=r.decodeHeight(o,f),C=r.decodeHeight(o,h);return x.x*b+x.y*T+x.z*C}}}var PTt=Uint16Array.BYTES_PER_ELEMENT,VTe=Uint32Array.BYTES_PER_ELEMENT,T$=Int32Array.BYTES_PER_ELEMENT,OTt=Float32Array.BYTES_PER_ELEMENT,C$=Float64Array.BYTES_PER_ELEMENT;function RTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let v=0;v<r;++v)u+=c.getUint32(u,!0),u+=VTe;u+=VTe,u+=2*C$;let f=P.toRadians(c.getFloat64(u,!0)*180);u+=C$;let h=P.toRadians(c.getFloat64(u,!0)*180);u+=C$;let p=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=T$;let x=c.getInt32(u,!0)*3;u+=T$,u+=T$;let b=new Array(m),T=new Array(m),C=new Array(m),A;for(A=0;A<m;++A)b[A]=s+c.getUint8(u++)*p,T[A]=a+c.getUint8(u++)*g,C[A]=c.getFloat32(u,!0)*6371010,u+=OTt;let E=new Array(x);for(A=0;A<x;++A)E[A]=c.getUint16(u,!0),u+=PTt;for(A=0;A<x;A+=3){let v=E[A],D=E[A+1],R=E[A+2],O=b[v],M=b[D],N=b[R],_=T[v],S=T[D],w=T[R],I=y0.computeBarycentricCoordinates(t,n,O,_,M,S,N,w,zTe);if(I.x>=-1e-15&&I.y>=-1e-15&&I.z>=-1e-15)return I.x*C[v]+I.y*C[D]+I.z*C[R]}}var WP=eT;var id={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},s8=new $;function a8(){this._terrainCache={},this._lastTidy=$.now()}a8.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:$.now()}};a8.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};a8.prototype.tidy=function(){if($.now(s8),$.secondsDifference(s8,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];$.secondsDifference(s8,r.timestamp)>10&&delete e[o]}$.clone(s8,this._lastTidy)}};function T0(e){e=y(e,y.EMPTY_OBJECT),this._tilingScheme=new Qi({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-P.PI,-P.PI,P.PI,P.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new vt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new a8,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new me}Object.defineProperties(T0.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});T0.fromMetadata=function(e,t){if(!e.terrainPresent)throw new se(`The server ${e.url} doesn't have terrain`);let n=new T0(t);return n._metadata=e,n};var MTt=new bi("decodeGoogleEarthEnterprisePacket");function HTe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===id.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}T0.prototype.requestTileGeometry=function(e,t,n,i){let o=b0.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new se("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=id.UNKNOWN);let u=r.get(o);if(l(u)){let T=s.providers[a.terrainProvider];return Promise.resolve(new WP({buffer:u,childTileMask:HTe(o,a,s),credits:l(T)?[T]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===id.NONE)return Promise.reject(new se("Terrain tile doesn't exist"))}else return Promise.resolve(new fc({buffer:new Uint8Array(16*16),width:16,height:16}));let f,h=o,p=-1;switch(c){case id.SELF:p=a.terrainVersion;break;case id.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),p=f.terrainVersion;break;case id.UNKNOWN:a.hasTerrain()?p=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(p=f.terrainVersion));break}if(p<0)return Promise.reject(new se("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,x,b;if(l(g[h]))x=g[h],b=m[h];else{b=i;let T=LTt(this,h,p,b).fetchArrayBuffer();if(!l(T))return;x=T.then(function(C){return l(C)?MTt.scheduleTask({buffer:C,type:"Terrain",key:s.key},[C]).then(function(A){let E=s.getTileInformationFromQuadKey(h);E.terrainState=id.SELF,r.add(h,A[0]);let v=E.terrainProvider,D=A.length-1;for(let R=0;R<D;++R){let O=h+R.toString(),M=s.getTileInformationFromQuadKey(O);l(M)&&(r.add(O,A[R+1]),M.terrainState=id.PARENT,M.terrainProvider===0&&(M.terrainProvider=v))}}):Promise.reject(new se("Failed to load terrain."))}),g[h]=x,m[h]=b,x=x.finally(function(){delete g[h],delete m[h]})}return x.then(function(){let T=r.get(o);if(l(T)){let C=s.providers[a.terrainProvider];return new WP({buffer:T,childTileMask:HTe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new se("Failed to load terrain."))}).catch(function(T){return b.state===ei.CANCELLED?(i.state=b.state,Promise.reject(T)):(a.terrainState=id.NONE,Promise.reject(T))})};T0.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};T0.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=b0.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===id.NONE)return!1;if((!l(s)||s===id.UNKNOWN)&&(r.terrainState=id.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new rr({throttle:!1,throttleByServer:!0,type:Ts.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};T0.prototype.loadTileDataAvailability=function(e,t,n){};function LTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var GTe=T0;var NTt="https://maps.googleapis.com/maps/api/geocode/json",WTe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function A$(e){e=y(e,y.EMPTY_OBJECT);let t=e.key;this._resource=new Ee({url:NTt,queryParameters:{key:t}}),this._credit=new vt(WTe,!0)}Object.defineProperties(A$.prototype,{credit:{get:function(){return this._credit}}});A$.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new se(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:WTe,collapsible:!1}}})};var jTe=A$;var c8={};c8.defaultApiKey=void 0;c8.mapTilesApiEndpoint=new Ee({url:"https://tile.googleapis.com/v1/"});c8.getDefaultCredit=function(){return new vt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var LS=c8;var jP={};jP.type=void 0;jP.getRequiredDataPoints=de.throwInstantiationError;jP.interpolateOrderZero=de.throwInstantiationError;jP.interpolate=de.throwInstantiationError;var qTe=jP;var FTt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},C0=Object.freeze(FTt);function E$(e){this._url=Ee.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(E$.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});E$.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===Jb.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var l8=E$;function BTt(e){if(!Object.values(C0).some(t=>t===e))throw new de(`Invalid geocodeProviderType: "${e}"`)}var YTe=Object.freeze({[C0.GOOGLE]:"google",[C0.BING]:"bing",[C0.DEFAULT]:void 0});function kTt(e){return YTe[e]}function VTt(e){return Object.entries(YTe).find(t=>t[1]===e)[0]}function S$(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.geocodeProviderType,C0.DEFAULT),n=y(e.accessToken,qh.defaultAccessToken),i=Ee.createIfNeeded(y(e.server,qh.defaultServer));i.appendForwardSlash();let o=qh.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(vt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new l8(r),this.geocodeProviderType=t}Object.defineProperties(S$.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return VTt(this._pelias.url.queryParameters.geocoder)},set:function(e){BTt(e);let t={...this._pelias.url.queryParameters,geocoder:kTt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});S$.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var NS=S$;var yc={};yc.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});yc.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});yc.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});yc.defaultAccessToken=void 0;yc.apiEndpoint=new Ee({url:"https://api.bentley.com"});yc.getExports=async function(e){let t=new Ee({url:`${yc.apiEndpoint}mesh-export`,headers:{Authorization:`Bearer ${yc.defaultAccessToken}`,Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:yc.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&t.appendQueryParameters({clientVersion:CESIUM_VERSION});try{return await t.fetchJson()}catch(n){let i=JSON.parse(n.response);throw n.statusCode===401?new se(`Unauthorized, bad token, wrong scopes or headers bad. ${i.error.details[0].code}`):n.statusCode===403?(console.error(i.error.code,i.error.message),new se("Not allowed, forbidden")):n.statusCode===422?new se(`Unprocessable Entity:${i.error.code} ${i.error.message}`):n.statusCode===429?new se("Too many requests"):new se(`Unknown request failure ${n.statusCode}`)}};yc.getRealityDataMetadata=async function(e,t){let n=new Ee({url:`${yc.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:`Bearer ${yc.defaultAccessToken}`,Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);throw i.statusCode===401?new se(`Unauthorized, bad token, wrong scopes or headers bad. ${o.error.details[0].code}`):i.statusCode===403?(console.error(o.error.code,o.error.message),new se("Not allowed, forbidden")):i.statusCode===404?new se(`Reality data not found: ${e}, ${t}`):i.statusCode===422?new se(`Unprocessable Entity:${o.error.code} ${o.error.message}`):i.statusCode===429?new se("Too many requests"):new se(`Unknown request failure ${i.statusCode}`)}};yc.getRealityDataURL=async function(e,t,n){let i=new Ee({url:`${yc.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:`Bearer ${yc.defaultAccessToken}`,Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);throw o.statusCode===401?new se(`Unauthorized, bad token, wrong scopes or headers bad. ${r.error.details[0].code}`):o.statusCode===403?(console.error(r.error.code,r.error.message),new se("Not allowed, forbidden")):o.statusCode===404?new se(`Reality data not found: ${e}, ${t}`):o.statusCode===422?new se(`Unprocessable Entity:${r.error.code} ${r.error.message}`):o.statusCode===429?new se("Too many requests"):new se(`Unknown request failure ${o.statusCode}`)}};var Js=yc;function u8(){de.throwInstantiationError()}Object.defineProperties(u8.prototype,{ellipsoid:{get:de.throwInstantiationError}});u8.prototype.project=de.throwInstantiationError;u8.prototype.unproject=de.throwInstantiationError;var XTe=u8;function FS(e){e=y(e,y.EMPTY_OBJECT);let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(FS.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});FS.prototype.findTimeInterval=so.prototype.findTimeInterval;FS.prototype.wrapTime=so.prototype.wrapTime;FS.prototype.clampTime=so.prototype.clampTime;FS.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var KTe=FS;function v$(e,t,n){e=Ee.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=y(n,{}),this._credit=new vt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(v$.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});v$.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:At(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var $Te=v$;var UTt={packedLength:void 0,pack:de.throwInstantiationError,unpack:de.throwInstantiationError},ZTe=UTt;var zTt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:de.throwInstantiationError,unpackInterpolationResult:de.throwInstantiationError},QTe=zTt;var HTt=new d;function GTt(e,t,n,i){let o=BT(e,t,n,i,HTt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var JTe=GTt;function eCe(){de.throwInstantiationError()}eCe.prototype.getURL=de.throwInstantiationError;var tCe=eCe;function WTt(e,t,n,i,o,r,s){let a=Bi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,p=n.alpha,g=i.red,m=i.green,x=i.blue,b=i.alpha;if(z.equals(n,i)){for(c=0;c<a;c++)r[s++]=z.floatToByte(u),r[s++]=z.floatToByte(f),r[s++]=z.floatToByte(h),r[s++]=z.floatToByte(p);return s}let T=(g-u)/a,C=(m-f)/a,A=(x-h)/a,E=(b-p)/a,v=s;for(c=0;c<a;c++)r[v++]=z.floatToByte(u+c*T),r[v++]=z.floatToByte(f+c*C),r[v++]=z.floatToByte(h+c*A),r[v++]=z.floatToByte(p+c*E);return v}function qP(e){e=y(e,y.EMPTY_OBJECT);let t=e.positions,n=e.colors,i=y(e.colorsPerVertex,!1);this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=y(e.arcType,en.GEODESIC),this._granularity=y(e.granularity,P.RADIANS_PER_DEGREE),this._ellipsoid=y(e.ellipsoid,ee.default),this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*z.packedLength:1,this.packedLength=o+ee.packedLength+3}qP.pack=function(e,t,n){n=y(n,0);let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=z.packedLength)z.pack(s[i],t,n);return ee.pack(e._ellipsoid,t,n),n+=ee.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};qP.unpack=function(e,t,n){t=y(t,0);let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=z.packedLength)s[i]=z.unpack(e,t);let a=ee.unpack(e,t);t+=ee.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new qP({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var f8=new Array(2),d8=new Array(2),jTt={positions:f8,height:d8,ellipsoid:void 0,minDistance:void 0,granularity:void 0};qP.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=P.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,p,g,m,x=0;if(o===en.GEODESIC||o===en.RHUMB){let E,v,D;o===en.GEODESIC?(E=P.chordLength(r,s.maximumRadius),v=Bi.numberOfPoints,D=Bi.generateArc):(E=r,v=Bi.numberOfPointsRhumbLine,D=Bi.generateRhumbArc);let R=Bi.extractHeights(t,s),O=jTt;if(o===en.GEODESIC?O.minDistance=a:O.granularity=r,O.ellipsoid=s,c){let M=0;for(u=0;u<f-1;u++)M+=v(t[u],t[u+1],E)+1;h=new Float64Array(M*3),g=new Uint8Array(M*4),O.positions=f8,O.height=d8;let N=0;for(u=0;u<f-1;++u){f8[0]=t[u],f8[1]=t[u+1],d8[0]=R[u],d8[1]=R[u+1];let _=D(O);if(l(n)){let S=_.length/3;m=n[u];for(let w=0;w<S;++w)g[N++]=z.floatToByte(m.red),g[N++]=z.floatToByte(m.green),g[N++]=z.floatToByte(m.blue),g[N++]=z.floatToByte(m.alpha)}h.set(_,x),x+=_.length}}else if(O.positions=t,O.height=R,h=new Float64Array(D(O)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let N=t[u],_=t[u+1],S=n[u],w=n[u+1];x=WTt(N,_,S,w,a,g,x)}let M=n[f-1];g[x++]=z.floatToByte(M.red),g[x++]=z.floatToByte(M.green),g[x++]=z.floatToByte(M.blue),g[x++]=z.floatToByte(M.alpha)}}else{p=c?f*2-2:f,h=new Float64Array(p*3),g=l(n)?new Uint8Array(p*4):void 0;let E=0,v=0;for(u=0;u<f;++u){let D=t[u];if(c&&u>0&&(d.pack(D,h,E),E+=3,m=n[u-1],g[v++]=z.floatToByte(m.red),g[v++]=z.floatToByte(m.green),g[v++]=z.floatToByte(m.blue),g[v++]=z.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(D,h,E),E+=3,l(n)&&(m=n[u],g[v++]=z.floatToByte(m.red),g[v++]=z.floatToByte(m.green),g[v++]=z.floatToByte(m.blue),g[v++]=z.floatToByte(m.alpha))}}let b=new mn;b.position=new Se({componentDatatype:X.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(b.color=new Se({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),p=h.length/3;let T=(p-1)*2,C=Be.createTypedArray(p,T),A=0;for(u=0;u<p-1;++u)C[A++]=u,C[A++]=u+1;return new ut({attributes:b,indices:C,primitiveType:Ne.LINES,boundingSphere:ce.fromPoints(t)})};var nCe=qP;function BS(e){let t=y(e.radius,1),i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new _a(i),this._workerName="createSphereGeometry"}BS.packedLength=_a.packedLength;BS.pack=function(e,t,n){return _a.pack(e._ellipsoidGeometry,t,n)};var qTt=new _a,A0={radius:void 0,radii:new d,vertexFormat:new Ie,stackPartitions:void 0,slicePartitions:void 0};BS.unpack=function(e,t,n){let i=_a.unpack(e,t,qTt);return A0.vertexFormat=Ie.clone(i._vertexFormat,A0.vertexFormat),A0.stackPartitions=i._stackPartitions,A0.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,A0.radii),n._ellipsoidGeometry=new _a(A0),n):(A0.radius=i._radii.x,new BS(A0))};BS.createGeometry=function(e){return _a.createGeometry(e._ellipsoidGeometry)};var iCe=BS;function YTt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var kS=YTt;function E0(e){}Object.defineProperties(E0.prototype,{ellipsoid:{get:de.throwInstantiationError},rectangle:{get:de.throwInstantiationError},projection:{get:de.throwInstantiationError}});E0.prototype.getNumberOfXTilesAtLevel=de.throwInstantiationError;E0.prototype.getNumberOfYTilesAtLevel=de.throwInstantiationError;E0.prototype.rectangleToNativeRectangle=de.throwInstantiationError;E0.prototype.tileXYToNativeRectangle=de.throwInstantiationError;E0.prototype.tileXYToRectangle=de.throwInstantiationError;E0.prototype.positionToTileXY=de.throwInstantiationError;var oCe=E0;function tT(e){e=y(e,y.EMPTY_OBJECT),this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=y(e.epoch,ze.MINIMUM_VALUE),this.tolerance=y(e.tolerance,1),this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(tT.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(tT.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=XTt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});tT.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};tT.prototype.isDestroyed=function(){return!1};tT.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};tT.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=y(this.epoch,ze.MINIMUM_VALUE),s=$.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?y(this.tolerance,1):.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function XTt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var rCe=tT;function KTt(e,t){this.rectangle=e,this.maxLevel=t}function sCe(e){this.ellipsoid=y(e.ellipsoid,ee.default),this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}sCe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function $Tt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new Qi({ellipsoid:e.ellipsoid});else throw new se(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=hs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=P.toRadians(parseFloat(s.getAttribute("minx"))),c=P.toRadians(parseFloat(s.getAttribute("miny"))),u=P.toRadians(parseFloat(s.getAttribute("maxx"))),f=P.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new KTt(new ae(a,c,u,f),h))}}function ZTt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),Oo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new se(i)}async function QTt(e,t,n){try{let i=await t.fetchXML();$Tt(e,i)}catch(i){ZTt(t,i,n)}}function S0(e){e=y(e,y.EMPTY_OBJECT),this._errorEvent=new me,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new vt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(S0.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});S0.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=new sCe(t),i=Ee.createIfNeeded(e);await QTt(n,i);let o=new S0(t);return n.build(o),o._resource=i,o};S0.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new fc({buffer:vh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:JTt(a,e,t,n),structure:a._terrainDataStructure})})};S0.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var aCe=new ae;function JTt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,aCe);l(h)&&(h8(o,f,t*2,n*2,i+1)&&(a|=4),h8(o,f,t*2+1,n*2,i+1)&&(a|=8),h8(o,f,t*2,n*2+1,i+1)&&(a|=1),h8(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function h8(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,aCe))}S0.prototype.getTileDataAvailable=function(e,t,n){};S0.prototype.loadTileDataAvailability=function(e,t,n){};var cCe=S0;var eCt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},lCe=Object.freeze(eCt);function tCt(e){switch(e){case te.FLOAT:return"float";case te.FLOAT_VEC2:return"vec2";case te.FLOAT_VEC3:return"vec3";case te.FLOAT_VEC4:return"vec4";case te.FLOAT_MAT2:return"mat2";case te.FLOAT_MAT3:return"mat3";case te.FLOAT_MAT4:return"mat4";case te.SAMPLER_2D:return"sampler2D";case te.BOOL:return"bool"}}var uCe=tCt;function nCt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var m8=nCt;var iCt=new d(1,1,1);function w$(e){e=y(e,iCt),this._dimensions=d.clone(e)}Object.defineProperties(w$.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var oCt=new d;w$.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,oCt),i=P.randomBetween(-n.x,n.x),o=P.randomBetween(-n.y,n.y),r=P.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var fCe=w$;function np(){this.featurePropertiesDirty=!1}Object.defineProperties(np.prototype,{featuresLength:{get:function(){de.throwInstantiationError()}},pointsLength:{get:function(){de.throwInstantiationError()}},trianglesLength:{get:function(){de.throwInstantiationError()}},geometryByteLength:{get:function(){de.throwInstantiationError()}},texturesByteLength:{get:function(){de.throwInstantiationError()}},batchTableByteLength:{get:function(){de.throwInstantiationError()}},innerContents:{get:function(){de.throwInstantiationError()}},ready:{get:function(){de.throwInstantiationError()}},tileset:{get:function(){de.throwInstantiationError()}},tile:{get:function(){de.throwInstantiationError()}},url:{get:function(){de.throwInstantiationError()}},batchTable:{get:function(){de.throwInstantiationError()}},metadata:{get:function(){de.throwInstantiationError()},set:function(e){de.throwInstantiationError()}},group:{get:function(){de.throwInstantiationError()},set:function(e){de.throwInstantiationError()}}});np.prototype.hasProperty=function(e,t){de.throwInstantiationError()};np.prototype.getFeature=function(e){de.throwInstantiationError()};np.prototype.applyDebugSettings=function(e,t){de.throwInstantiationError()};np.prototype.applyStyle=function(e){de.throwInstantiationError()};np.prototype.update=function(e,t){de.throwInstantiationError()};np.prototype.pick=function(e,t,n){de.throwInstantiationError()};np.prototype.isDestroyed=function(){de.throwInstantiationError()};np.prototype.destroy=function(){de.throwInstantiationError()};var dCe=np;function VS(e,t){this._conditionsExpression=He(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,sCt(this,t)}Object.defineProperties(VS.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function rCt(e,t){this.condition=e,this.expression=t}function sCt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new rCt(new Cd(a,t),new Cd(c,t)))}e._runtimeConditions=n}VS.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};VS.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};VS.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u})
{
return ${f};
}
`}return r=`${i} ${e}
{
${r} return ${i}(1.0);
}
`,r};VS.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];e.push.apply(e,o.condition.getVariables()),e.push.apply(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var p8=VS;function v0(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,aCt(this,e)}function aCt(e,t){t=y(He(t,!0),e._style),e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=y(t.meta,y.EMPTY_OBJECT);for(let r in o)o.hasOwnProperty(r)&&(n[r]=new Cd(o[r],i))}e._meta=n,e._ready=!0}function ir(e,t){let n=y(e._style,y.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new Cd(String(t));if(typeof t=="string")return new Cd(t,n);if(l(t.conditions))return new p8(t,n)}else return;return t}function or(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return He(e.conditionsExpression,!0)}else return;return e}Object.defineProperties(v0.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=ir(this,e),this._style.show=or(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=ir(this,e),this._style.color=or(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=ir(this,e),this._style.pointSize=or(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=ir(this,e),this._style.pointOutlineColor=or(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=ir(this,e),this._style.pointOutlineWidth=or(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=ir(this,e),this._style.labelColor=or(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=ir(this,e),this._style.labelOutlineColor=or(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=ir(this,e),this._style.labelOutlineWidth=or(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=ir(this,e),this._style.font=or(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=ir(this,e),this._style.labelStyle=or(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=ir(this,e),this._style.labelText=or(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=ir(this,e),this._style.backgroundColor=or(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=ir(this,e),this._style.backgroundPadding=or(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=ir(this,e),this._style.backgroundEnabled=or(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=ir(this,e),this._style.scaleByDistance=or(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=ir(this,e),this._style.translucencyByDistance=or(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=ir(this,e),this._style.distanceDisplayCondition=or(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=ir(this,e),this._style.heightOffset=or(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=ir(this,e),this._style.anchorLineEnabled=or(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=ir(this,e),this._style.anchorLineColor=or(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=ir(this,e),this._style.image=or(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=ir(this,e),this._style.disableDepthTestDistance=or(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=ir(this,e),this._style.horizontalOrigin=or(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=ir(this,e),this._style.verticalOrigin=or(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=ir(this,e),this._style.labelHorizontalOrigin=or(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=ir(this,e),this._style.labelVerticalOrigin=or(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});v0.fromUrl=function(e){return Ee.createIfNeeded(e).fetchJson(e).then(function(n){return new v0(n)})};v0.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};v0.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};v0.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};v0.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&e.push.apply(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&e.push.apply(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&e.push.apply(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var US=v0;function YP(e){e=y(e,y.EMPTY_OBJECT),this._maximumSubtreeCount=y(e.maximumSubtreeCount,0),this._subtreeRequestCounter=0,this._queue=new bS({comparator:YP.comparator})}YP.prototype.addSubtree=function(e){let t=new cCt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};YP.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};YP.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function cCt(e,t){this.subtree=e,this.stamp=t}var _8=YP;function XP(e){e=y(e,y.EMPTY_OBJECT);let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=F.IDENTITY.clone(),shapeTransform:f=F.IDENTITY.clone(),minBounds:h,maxBounds:p,minimumValues:g,maximumValues:m,maximumTileCount:x}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=p,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=Zm.GLTF,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=x,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new _8}Object.defineProperties(XP.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});XP.fromUrl=async function(e){let t=Ee.createIfNeeded(e),n=await t.fetchJson();uCt(n);let i=pCt(n,t);await i.load();let{root:o}=n,r=ci(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new EA({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=_Ct(s,c);Object.assign(u,fCt(o)),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=lCt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new XP(u),h=new vA(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,wi.unload(i),f};function lCt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(vC.TILESET_TILE_COUNT)}function uCt(e){let t=e.root;if(!l(t.content))throw new se("Root must have content");if(!ci(t.content,"3DTILES_content_voxels"))throw new se("Root tile content must have 3DTILES_content_voxels extension");if(!ci(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new se("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!ci(e,"3DTILES_metadata"))throw new se("Tileset must have a metadata schema")}function fCt(e){let t=e.boundingVolume,n;if(l(e.transform)?n=F.unpack(e.transform):n=F.clone(F.IDENTITY),l(t.box))return hCt(t.box,n);if(l(t.region))return dCt(t.region);if(ci(t,"3DTILES_bounding_volume_cylinder"))return mCt(t.extensions["3DTILES_bounding_volume_cylinder"].cylinder,n);throw new se("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function dCt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=F.fromScale(ee.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:zi.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a,globalTransform:F.clone(F.IDENTITY)}}function hCt(e,t){let n=Dn.unpack(e),i=F.fromRotationTranslation(n.halfAxes,n.center);return{shape:zi.BOX,minBounds:d.clone(M_.DefaultMinBounds),maxBounds:d.clone(M_.DefaultMaxBounds),shapeTransform:i,globalTransform:t}}function mCt(e,t){let n=Dn.unpack(e),i=F.fromRotationTranslation(n.halfAxes,n.center);return{shape:zi.CYLINDER,minBounds:d.clone(L_.DefaultMinBounds),maxBounds:d.clone(L_.DefaultMaxBounds),shapeTransform:i,globalTransform:t}}function pCt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?wi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):wi.getSchemaLoader({schema:i})}function _Ct(e,t){let{schema:n,statistics:i}=e,o=i==null?void 0:i.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:x,componentType:b}=m,T=o==null?void 0:o.properties[g].min,C=o==null?void 0:o.properties[g].max,A=lt.getComponentCount(x),E=hCe(T,A),v=hCe(C,A);return{id:g,type:x,componentType:b,minValue:E,maxValue:v}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),p=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:p?f:void 0,maximumValues:p?h:void 0}}function hCe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function gCt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=ty(a);return o=await SC.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}XP.prototype.requestData=async function(e){e=y(e,y.EMPTY_OBJECT);let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new wA({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await gCt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:x}=s,b=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),T=x.getDerivedResource({url:b.url});return yS.fromGltf(T)};var mCe=XP;function D$(e){e=y(e,1),this._radius=y(e,1)}Object.defineProperties(D$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});D$.prototype.emit=function(e){let t=P.randomBetween(0,P.TWO_PI),n=P.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var g8=D$;var I$={CUMULUS:0};I$.validate=function(e){return e===I$.CUMULUS};var KP=Object.freeze(I$);function xh(e,t){if(e=y(e,y.EMPTY_OBJECT),this._show=y(e.show,!0),this._position=d.clone(y(e.position,d.ZERO)),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new U(this._maximumSize.x,this._maximumSize.y);else{this._scale=U.clone(y(e.scale,new U(20,12)));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(y(e.maximumSize,n))}this._slice=y(e.slice,-1),this._color=z.clone(y(e.color,z.WHITE)),this._brightness=y(e.brightness,1),this._cloudCollection=t,this._index=-1}var yCt=xh.SHOW_INDEX=0,xCt=xh.POSITION_INDEX=1,bCt=xh.SCALE_INDEX=2,TCt=xh.MAXIMUM_SIZE_INDEX=3,CCt=xh.SLICE_INDEX=4,ACt=xh.BRIGHTNESS_INDEX=5,ECt=xh.COLOR_INDEX=6;xh.NUMBER_OF_PROPERTIES=7;function nT(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(xh.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,nT(this,yCt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),nT(this,xCt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;U.equals(t,e)||(U.clone(e,t),nT(this,bCt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),nT(this,TCt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;z.equals(t,e)||(z.clone(e,t),nT(this,ECt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,nT(this,CCt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,nT(this,ACt))}}});xh.prototype._destroy=function(){this._cloudCollection=void 0};var od=xh;var zu,y8=new d,SCt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},vCt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},wCt=od.SHOW_INDEX,DCt=od.POSITION_INDEX,ICt=od.SCALE_INDEX,PCt=od.MAXIMUM_SIZE_INDEX,OCt=od.SLICE_INDEX,RCt=od.BRIGHTNESS_INDEX,MCt=od.NUMBER_OF_PROPERTIES,LCt=od.COLOR_INDEX;function bh(e){e=y(e,y.EMPTY_OBJECT),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(MCt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=y(e.noiseDetail,16),this.noiseOffset=d.clone(y(e.noiseOffset,d.ZERO)),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:pCe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=y(e.show,!0),this._colorCommands=[],this.debugBillboards=y(e.debugBillboards,!1),this._compiledDebugBillboards=!1,this.debugEllipsoids=y(e.debugEllipsoids,!1),this._compiledDebugEllipsoids=!1}function pCe(e){return function(){return y8.x=e._textureSliceWidth,y8.y=e._noiseTextureRows,y8.z=1/e._noiseTextureRows,y8}}Object.defineProperties(bh.prototype,{length:{get:function(){return O$(this),this._clouds.length}}});function _Ce(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}bh.prototype.add=function(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.cloudType,KP.CUMULUS),n;return t===KP.CUMULUS&&(n=new od(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};bh.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};bh.prototype.removeAll=function(){_Ce(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function O$(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}bh.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};bh.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};bh.prototype.get=function(e){return O$(this),this._clouds[e]};var NCt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),FCt=new Uint16Array([0,1,2,0,2,3]);function BCt(e){let t=Tt.createVertexBuffer({context:e,typedArray:NCt,usage:ke.STATIC_DRAW}),n=Tt.createIndexBuffer({context:e,typedArray:FCt,usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:X.FLOAT}];return new oi({context:e,attributes:i,indexBuffer:n})}var R$;function kCt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Tt.createIndexBuffer({context:e,typedArray:o,usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function VCt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Tt.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ke.STATIC_DRAW,indexDatatype:Be.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function UCt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Tt.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:ke.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function zCt(e,t,n){let i=[{index:zu.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:ke.STATIC_DRAW},{index:zu.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:ke.STATIC_DRAW},{index:zu.packedAttribute0,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:ke.STATIC_DRAW},{index:zu.packedAttribute1,componentsPerAttribute:4,componentDatatype:X.FLOAT,usage:ke.STATIC_DRAW},{index:zu.color,componentsPerAttribute:4,componentDatatype:X.UNSIGNED_BYTE,normalize:!0,usage:ke.STATIC_DRAW}];n&&i.push({index:zu.direction,componentsPerAttribute:2,componentDatatype:X.FLOAT,vertexBuffer:UCt(e)});let o=n?t:4*t;return new Kg(e,i,o,n)}var P$=new Wn;function gCe(e,t,n,i){let o,r=n[zu.positionHighAndScaleX],s=n[zu.positionLowAndScaleY],a=i.position;Wn.fromCartesian(a,P$);let c=i.scale,u=P$.high,f=P$.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function yCe(e,t,n,i){let o,r=n[zu.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function xCe(e,t,n,i){let o,r=n[zu.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function bCe(e,t,n,i){let o,r=n[zu.color],s=i.color,a=z.floatToByte(s.red),c=z.floatToByte(s.green),u=z.floatToByte(s.blue),f=z.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function HCt(e,t,n,i){gCe(e,t,n,i),yCe(e,t,n,i),xCe(e,t,n,i),bCe(e,t,n,i)}function GCt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=BCt(a),o._spNoise=Jt.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Rt({context:a,width:r*r/s,height:r*s,pixelDatatype:Ke.UNSIGNED_BYTE,pixelFormat:nt.RGBA,sampler:new Zt({wrapS:En.REPEAT,wrapT:En.REPEAT,minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST})});let f=new Al({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:pCe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function WCt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=zCt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];HCt(e,t,s,c)}n._vaf.commit(R$(i))}}var jCt=[];function qCt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=jCt;u.length=0,(c[DCt]||c[ICt])&&u.push(gCe),(c[wCt]||c[RCt])&&u.push(yCe),(c[PCt]||c[OCt])&&u.push(xCe),c[LCt]&&u.push(bCe);let f=u.length,h=i._vaf.writers,p,g,m;if(a/r>.1){for(p=0;p<a;++p)for(g=s[p],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(R$(n))}else{for(p=0;p<a;++p){for(g=s[p],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function YCt(e,t,n,i){let o=t.context,r=e,s=new Ue({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new Ue({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=Jt.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:zu}),r._rs=Ve.fromCache({depthTest:{enabled:!0,func:te.LESS},depthMask:!1,blending:fn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function XCt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new Qe),f.pass=ve.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}bh.prototype.update=function(e){if(O$(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&GCt(this,e,$H,KH),this._instanced=e.context.instancedArrays,zu=this._instanced?vCt:SCt,R$=this._instanced?VCt:kCt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?WCt(this,e):r>0&&qCt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&YCt(this,e,XH,YH),XCt(this,e))};bh.prototype.isDestroyed=function(){return!1};bh.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),_Ce(this._clouds),ue(this)};var TCe=bh;var KCt=P.toRadians(30);function M$(e){this._angle=y(e,KCt)}Object.defineProperties(M$.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});M$.prototype.emit=function(e){let t=Math.tan(this._angle),n=P.randomBetween(0,P.TWO_PI),i=P.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var CCe=M$;var $Ct=new z,ZCt=new z,QCt=new z,JCt=new z,ACe=new oe,$P=new Uint8Array(4);function ECe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return z.lerp(t.color,n.color,o,i)}function x8(e,t){return{height:e,color:z.clone(t)}}function SCe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?z.equals(t.color,i[n-1].color):!1,a=r?z.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?z.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function eAt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=P.clamp(g.height,Yl._minimumHeight,Yl._maximumHeight),x=z.clone(g.color,$Ct);x.red*=x.alpha,x.green*=x.alpha,x.blue*=x.alpha,c.push(x8(m,x))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||i0(c,function(g,m){return P.sign(g.height-m.height)});let h=y(r.extendDownwards,!1),p=y(r.extendUpwards,!1);c.length===1&&!h&&!p&&(h=!0,p=!0),h&&c.splice(0,0,x8(Yl._minimumHeight,c[0].color)),p&&c.splice(c.length,0,x8(Yl._maximumHeight,c[c.length-1].color)),c=SCe(c),i.push(c)}return i}function tAt(e){let t=eAt(e),n=[],i=[],o;function r(u,f){n.push(x8(u,f))}function s(u,f,h){let p=z.multiplyByScalar(h,1-f.alpha,JCt);p=z.add(p,f,p),r(u,p)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let p=u.length,g=i.length;for(;f<p||h<g;){let m=f<p?u[f]:void 0,x=f>0?u[f-1]:void 0,b=f<p-1?u[f+1]:void 0,T=h<g?i[h]:void 0,C=h>0?i[h-1]:void 0,A=h<g-1?i[h+1]:void 0;if(l(m)&&l(T)&&m.height===T.height){let E=l(A)&&T.height===A.height,v=!l(C),D=!l(A),R=l(b)&&m.height===b.height,O=!l(x),M=!l(b);E?R?(s(m.height,m.color,T.color),s(m.height,b.color,A.color)):O?(r(m.height,T.color),s(m.height,m.color,A.color)):M?(s(m.height,m.color,T.color),r(m.height,A.color)):(s(m.height,m.color,T.color),s(m.height,m.color,A.color)):v?R?(r(m.height,m.color),s(m.height,b.color,T.color)):M?(r(m.height,m.color),r(m.height,T.color)):(O||r(m.height,m.color),s(m.height,m.color,T.color)):D?R?(s(m.height,m.color,T.color),r(m.height,b.color)):O?(r(m.height,T.color),r(m.height,m.color)):M?s(m.height,m.color,T.color):(s(m.height,m.color,T.color),r(m.height,m.color)):R?(s(m.height,m.color,T.color),s(m.height,b.color,T.color)):O?(r(m.height,T.color),s(m.height,m.color,T.color)):M?(s(m.height,m.color,T.color),r(m.height,T.color)):s(m.height,m.color,T.color),f+=R?2:1,h+=E?2:1}else if(l(m)&&l(T)&&l(C)&&m.height<T.height){let E=ECe(m.height,C,T,QCt);l(x)?l(b)?s(m.height,m.color,E):(s(m.height,m.color,E),r(m.height,E)):(r(m.height,E),s(m.height,m.color,E)),f++}else if(l(T)&&l(m)&&l(x)&&T.height<m.height){let E=ECe(T.height,x,m,ZCt);l(C)?l(A)?s(T.height,E,T.color):(s(T.height,E,T.color),r(T.height,E)):(r(T.height,E),s(T.height,E,T.color)),h++}else l(m)&&(!l(T)||m.height<T.height)?(l(T)&&!l(C)&&!l(b)?(r(m.height,m.color),r(m.height,Yl._emptyColor),r(T.height,Yl._emptyColor)):(!l(T)&&l(C)&&!l(x)&&(r(C.height,Yl._emptyColor),r(m.height,Yl._emptyColor)),r(m.height,m.color)),f++):l(T)&&(!l(m)||T.height<m.height)&&(r(T.height,T.color),h++)}}return SCe(n)}function Yl(e){let{scene:t,layers:n}=y(e,y.EMPTY_OBJECT),{context:i}=t,o=tAt(n),r=o.length,s,a,c;if(!Yl._useFloatTexture(i)){a=Ke.UNSIGNED_BYTE,c=nt.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)oe.packFloat(o[g].height,ACe),oe.pack(ACe,s,g*4)}else{a=Ke.FLOAT,c=i.webgl2?nt.RED:nt.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Rt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes($P),h[g*4+0]=$P[0],h[g*4+1]=$P[1],h[g*4+2]=$P[2],h[g*4+3]=$P[3];let p=Rt.create({context:i,pixelFormat:nt.RGBA,pixelDatatype:Ke.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new Zt({wrapS:En.CLAMP_TO_EDGE,wrapT:En.CLAMP_TO_EDGE,minificationFilter:$t.LINEAR,magnificationFilter:pi.LINEAR})});return Zi.fromType("ElevationBand",{heights:f,colors:p})}Yl._useFloatTexture=function(e){return e.floatingPointTexture};Yl._maximumHeight=5906376425472;Yl._minimumHeight=-5906376425472;Yl._emptyColor=new z(0,0,0,0);var vCe=Yl;async function nAt(e,t){t=y(t,{}),t.cacheBytes=y(t.cacheBytes,1536*1024*1024),t.maximumCacheOverflowBytes=y(t.maximumCacheOverflowBytes,1024*1024*1024),t.enableCollision=y(t.enableCollision,!0),e=y(e,y.EMPTY_OBJECT),e.onlyUsingWithGoogleGeocoder||Ct("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=y(e.key,LS.defaultApiKey);if(!l(n))return iAt(t);let i,o=LS.getDefaultCredit();l(o)&&(i=[o]);let r=new Ee({url:`${LS.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return ws.fromUrl(r,t)}var wCe={};async function iAt(e){let i=wCe[2275207];l(i)||(i=cf.fromAssetId(2275207),wCe[2275207]=i);let o=await i;return ws.fromUrl(o,e)}var DCe=nAt;async function oAt(e){let t=await ws.fromIonAssetId(96188,e);e=y(e,y.EMPTY_OBJECT);let n=e.style;if(!l(n)){let i=y(e.defaultColor,z.WHITE).toCssColorString();n=new US({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var ICe=oAt;function rAt(e){e=y(e,y.EMPTY_OBJECT);let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=F.clone(y(e.modelMatrix,F.IDENTITY)),r=y(e.length,1e4);if(l(i.normal)&&t.push(new Dt({geometry:kn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new Wt(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Dt({geometry:kn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new Wt(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Dt({geometry:kn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new Wt(0,0,1,1)},modelMatrix:o})),t.length>0)return new Pn({asynchronous:!1,geometryInstances:t,appearance:new ln({flat:!0,translucent:!1})})}var PCe=rAt;function ZP(e){e=y(e,y.EMPTY_OBJECT);let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=y(e.glslDatatype,"vec3"),o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); }
`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); }
`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); }
`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); }
`;break;case"vec4":r=`vec4 getColor() { return ${o}; }
`;break}let s=`in vec3 position3DHigh;
in vec3 position3DLow;
in float batchId;
${n?"":`in ${i} ${t};
`}out ${i} ${o};
void main()
{
vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow);
${n?`${o} = czm_batchTable_${t}(batchId);
`:`${o} = ${t};
`}gl_Position = czm_modelViewProjectionRelativeToEye * p;
}`,a=`in ${i} ${o};
${r}
void main()
{
out_FragColor = getColor();
}`;this.material=void 0,this.translucent=y(e.translucent,!1),this._vertexShaderSource=y(e.vertexShaderSource,s),this._fragmentShaderSource=y(e.fragmentShaderSource,a),this._renderState=ro.getDefaultRenderState(!1,!1,e.renderState),this._closed=y(e.closed,!1),this._attributeName=t,this._glslDatatype=i}Object.defineProperties(ZP.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});ZP.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;ZP.prototype.isTranslucent=ro.prototype.isTranslucent;ZP.prototype.getRenderState=ro.prototype.getRenderState;var OCe=ZP;function b8(e){e=y(e,y.EMPTY_OBJECT),this.length=y(e.length,1e7),this._length=void 0,this.width=y(e.width,2),this._width=void 0,this.show=y(e.show,!0),this.modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._modelMatrix=new F,this.id=e.id,this._id=void 0,this._primitive=void 0}b8.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!F.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=F.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Dt({geometry:new Oy({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:rs.VERTEX_FORMAT,colors:[z.RED,z.RED],arcType:en.NONE}),modelMatrix:F.multiplyByUniformScale(this.modelMatrix,this.length,new F),id:this.id,pickPrimitive:this}),n=new Dt({geometry:new Oy({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:rs.VERTEX_FORMAT,colors:[z.GREEN,z.GREEN],arcType:en.NONE}),modelMatrix:F.multiplyByUniformScale(this.modelMatrix,this.length,new F),id:this.id,pickPrimitive:this}),i=new Dt({geometry:new Oy({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:rs.VERTEX_FORMAT,colors:[z.BLUE,z.BLUE],arcType:en.NONE}),modelMatrix:F.multiplyByUniformScale(this.modelMatrix,this.length,new F),id:this.id,pickPrimitive:this});this._primitive=new Pn({geometryInstances:[t,n,i],appearance:new rs,asynchronous:!1})}this._primitive.update(e)}};b8.prototype.isDestroyed=function(){return!1};b8.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var T8=b8;function sAt(e){this.direction=d.clone(e.direction),this.color=z.clone(y(e.color,z.WHITE)),this.intensity=y(e.intensity,1)}var RCe=sAt;var C8=`in vec3 v_positionMC;
in vec3 v_positionEC;
in vec2 v_st;
void main()
{
czm_materialInput materialInput;
vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));
#ifdef FACE_FORWARD
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
#endif
materialInput.s = v_st.s;
materialInput.st = v_st;
materialInput.str = vec3(v_st, 0.0);
// Convert tangent space material normal to eye space
materialInput.normalEC = normalEC;
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);
// Convert view vector to world space
vec3 positionToEyeEC = -v_positionEC;
materialInput.positionToEyeEC = positionToEyeEC;
czm_material material = czm_getMaterial(materialInput);
#ifdef FLAT
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
#else
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
#endif
}
`;var A8=`in vec3 position3DHigh;
in vec3 position3DLow;
in vec2 st;
in float batchId;
out vec3 v_positionMC;
out vec3 v_positionEC;
out vec2 v_st;
void main()
{
vec4 p = czm_computePosition();
v_positionMC = position3DHigh + position3DLow; // position in model coordinates
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
v_st = st;
gl_Position = czm_modelViewProjectionRelativeToEye * p;
}
`;function iT(e){e=y(e,y.EMPTY_OBJECT);let t=y(e.translucent,!0),n=y(e.aboveGround,!1);this.material=l(e.material)?e.material:Zi.fromType(Zi.ColorType),this.translucent=y(e.translucent,!0),this._vertexShaderSource=y(e.vertexShaderSource,A8),this._fragmentShaderSource=y(e.fragmentShaderSource,C8),this._renderState=ro.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=y(e.flat,!1),this._faceForward=y(e.faceForward,n),this._aboveGround=n}Object.defineProperties(iT.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return iT.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});iT.VERTEX_FORMAT=Ie.POSITION_AND_ST;iT.prototype.getFragmentShaderSource=ro.prototype.getFragmentShaderSource;iT.prototype.isTranslucent=ro.prototype.isTranslucent;iT.prototype.getRenderState=ro.prototype.getRenderState;var MCe=iT;function Xl(e){this._scene=e.scene,this.samplingWindow=y(e.samplingWindow,Xl.defaultSettings.samplingWindow),this.quietPeriod=y(e.quietPeriod,Xl.defaultSettings.quietPeriod),this.warmupPeriod=y(e.warmupPeriod,Xl.defaultSettings.warmupPeriod),this.minimumFrameRateDuringWarmup=y(e.minimumFrameRateDuringWarmup,Xl.defaultSettings.minimumFrameRateDuringWarmup),this.minimumFrameRateAfterWarmup=y(e.minimumFrameRateAfterWarmup,Xl.defaultSettings.minimumFrameRateAfterWarmup),this._lowFrameRate=new me,this._nominalFrameRate=new me,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){aAt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){cAt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}Xl.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};Xl.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new Xl({scene:e})),e._frameRateMonitor};Object.defineProperties(Xl.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});Xl.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};Xl.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};Xl.prototype.isDestroyed=function(){return!1};Xl.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function aAt(e,t){if(e._pauseCount>0)return;let n=Ai();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/Xn.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/Xn.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/Xn.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function cAt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var E8=Xl;var LCe=Hr(_$(),1);function L$(){this._image=new Image}L$.prototype.isReady=function(){return!0};L$.prototype.shouldDiscardImage=function(e){return e===this._image};function oT(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new Qi({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-P.PI,-P.PI,P.PI,P.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new vt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new L$),this._errorEvent=new me}Object.defineProperties(oT.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});oT.fromMetadata=function(e,t){if(!e.imageryPresent)throw new se(`The server ${e.url} doesn't have imagery`);let n=new oT(t);return n._metadata=e,n};oT.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};oT.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=b0.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new rr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=lAt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){i8(r.key,u);let f=new Uint8Array(u),h,p=r.protoImagery;if((!l(p)||!p)&&(h=uAt(f)),!l(h)&&(!l(p)||p)){let g=fAt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:bC({uint8Array:f,format:h,flipY:!0})})};oT.prototype.pickFeatures=function(e,t,n,i,o){};function lAt(e,t,n,i,o,r){let s=b0.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function uAt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function fAt(e){let t=LCe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new se("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var NCe=oT;var dAt=new z(1,1,1,.4),hAt=new z(0,1,0,.05),mAt=new z(0,.5,0,.2);function rT(e){e=y(e,y.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new Qi({ellipsoid:e.ellipsoid}),this._cells=y(e.cells,8),this._color=y(e.color,dAt),this._glowColor=y(e.glowColor,hAt),this._glowWidth=y(e.glowWidth,6),this._backgroundColor=y(e.backgroundColor,mAt),this._errorEvent=new me,this._tileWidth=y(e.tileWidth,256),this._tileHeight=y(e.tileHeight,256),this._canvasSize=y(e.canvasSize,256),this._canvas=this._createGridCanvas()}Object.defineProperties(rT.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});rT.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};rT.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};rT.prototype.getTileCredits=function(e,t,n){};rT.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};rT.prototype.pickFeatures=function(e,t,n,i,o){};var FCe=rT;function Th(){}Th._maxDecodingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Th._decodeTaskProcessor=new bi("decodeI3S",Th._maxDecodingConcurrency);Th._promise=void 0;async function pAt(){if(await Th._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return Th._decodeTaskProcessor;throw new se("I3S decoder could not be initialized.")}Th.decode=async function(e,t,n,i,o){return l(Th._promise)||(Th._promise=pAt()),Th._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=Z.fromRotationX(-P.PI_OVER_TWO),p=new Z;Z.multiply(h,a,p);let g=fe.fromDegrees(c,u,f),m=ee.WGS84.cartographicToCartesian(g),x={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:ee.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:p,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(x)})};var S8=Th;function N$(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(N$.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});N$.prototype.load=async function(){return this._data=await ip.loadJson(this._resource),this._data};var v8=N$;function B_(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(B_.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function w8(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function _At(e){return e==="String"?1:w8(e)}async function gAt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}B_.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=gAt(this).catch(function(e){console.error(e)}),this._loadPromise)};B_.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};B_.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};B_.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};B_.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=w8(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=w8(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};B_.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=_At(i.valueType)}if(e.byteLength<t)throw new se(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};B_.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new se(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=w8(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new se(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new se(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new se(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var D8=B_;function QP(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(QP.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});QP.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var yAt=new d,xAt=new d,bAt=new d,TAt=new d,CAt=new d;function F$(e,t,n,i){let o=d.subtract(i,n,yAt),r=d.cross(o,d.subtract(e,n,xAt),TAt),s=d.cross(o,d.subtract(t,n,bAt),CAt);return d.dot(r,s)>=0}var AAt=new d,EAt=new d,SAt=new d,vAt=new d,wAt=new d,DAt=new d,IAt=new d,PAt=new d,OAt=new d,RAt=new d;QP.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,Z.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let p=0;p<h;p++){let g,m,x;l(f)?(g=f[p],m=f[p+1],x=f[p+2]):(g=p*3,m=p*3+1,x=p*3+2);let b=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],AAt),T=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],EAt),C=new d(u[x*3],u[x*3+1],u[x*3+2],SAt);if(!F$(i,b,T,C)||!F$(i,T,b,C)||!F$(i,C,b,T))continue;let A=d.subtract(T,b,vAt),E=d.subtract(C,b,wAt),v=d.cross(A,E,DAt);if(d.magnitude(v)===0)continue;let D=d.normalize(v,IAt),R=d.subtract(i,b,PAt),O=Math.abs(d.dot(R,D));if(O<o){o=O,r=p;let M=d.magnitudeSquared(d.subtract(i,b,R)),N=d.magnitudeSquared(d.subtract(i,T,OAt)),_=d.magnitudeSquared(d.subtract(i,C,RAt));M<N&&M<_?(a=g,c=b,s=M):N<_?(a=m,c=T,s=N):(a=x,c=C,s=_)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function BCe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(kS(e[i])):t.push(e[i]);return t}QP.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let A=this._parent._data.mesh.material.definition;if(A>=0&&A<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[A],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let E="0";if(l(this._layer._data.textureSetDefinitions))for(let v=0;v<this._layer._data.textureSetDefinitions.length;v++){let D=this._layer._data.textureSetDefinitions[v];for(let R=0;R<D.formats.length;R++){let O=D.formats[R];if(O.format==="jpg"){E=O.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${E}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=BCe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=BCe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let p=[],g=[],m=[];u&&(p=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let x=[],b=n.length;for(let C=0;C<b;C++){let A=n[C].primitives,E=A.length;for(let v=0;v<E;v++){let D=A[v];if(l(D.material)){for(;D.material>=x.length;){let O=He(c,!0);x.push(O)}let R=x[D.material];l(D.extra)&&D.extra.isTransparent?l(R.alphaMode)||(R.alphaMode="BLEND"):R.alphaMode==="BLEND"&&(R.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:x,textures:p,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var JP=QP;function xc(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(xc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});xc.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new Vd(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await ip.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function kCe(e,t){let n=new D8(e,t);return e._fields[t.name]=n,n.load()}xc.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(kCe(this,i))}return Promise.all(t)};xc.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return kCe(this,o)}return Promise.resolve()};xc.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};xc.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};xc.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new xc(e,y(i.href,i),!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};xc.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new JP(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new JP(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};xc.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new v8(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};xc.prototype._clearGeometryData=function(){this._geometryData=[]};xc.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=fe.fromDegrees(e.center[0],e.center[1],e.center[2]):n=fe.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let T=0;T<this._dataProvider._geoidDataList.length;T++){let C=this._dataProvider._geoidDataList[T],A=C.projection.project(n);if(A.x>C.nativeExtent.west&&A.x<C.nativeExtent.east&&A.y>C.nativeExtent.south&&A.y<C.nativeExtent.north){n.height+=FAt(A.x,A.y,C);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=ee.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=ee.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let T=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/T}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let T=this._data.lodThreshold;s=r/T}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let T=0;T<this._data.lodSelection.length;T++)this._data.lodSelection[T].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[T].maxError);s===1/0&&(s=1e5);let a=s*16,c=new Wa(0,0,0),u=Mt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=Z.fromQuaternion(u),h=Z.inverse(f,new Z),p=new F(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=F.inverse(p,new F),m=F.clone(p);l(this._parent._globalTransform)&&F.multiply(p,this._parent._inverseGlobalTransform,m),this._globalTransform=p,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let x=[];for(let T=0;T<this._children.length;T++)x.push(this._children[T]._create3DTileDefinition());return{children:x,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};xc.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};xc.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await S8.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function MAt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function LAt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function VCe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await MAt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!LAt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}xc.prototype._filterFeatures=function(){var n,i;let e=[];for(let o=0;o<this._children.length;o++){let r=this._children[o]._filterFeatures();e.push(r)}let t=(i=(n=this._tile)==null?void 0:n.content)==null?void 0:i._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let o=VCe(this,t);e.push(o)}return Promise.all(e)};Vd.prototype._hookedRequestContent=Vd.prototype.requestContent;Vd.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new Ee({url:t}),e._hookedRequestContent()}).then(t=>{let n=t==null?void 0:t._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{VCe(e._i3sNode,n)})),e._isLoading=!1,t})}};function NAt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function I8(e,t,n,i){let o=e+t*n;return i[o]}function FAt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=I8(s,a,n.width,n.buffer),h=I8(c,a,n.width,n.buffer),p=I8(s,u,n.width,n.buffer),g=I8(c,u,n.width,n.buffer),m=NAt(o,r,f,h,p,g);return m=m*n.scale+n.offset,m}Object.defineProperties(Vd.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var e1=xc;function P8(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(P8.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function B$(e,t){let n=[];for(let i=0;i<e.length;i++){let o=z.byteToFloat(e[i]);i<3?n.push(kS(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function zS(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=B$(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=B$(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=B$(a.color,a.transparency)))}break}}return n}function BAt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=zS(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let p=u[h];h===u.length-1?f[p]=s:(l(f[p])||(f[p]={}),f=f[p])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=zS(o.symbol,t)}return n}}function kAt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=y(o.classMaxValue,o.classMinValue),a=y(r.classMaxValue,r.classMinValue);return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(zS(r.symbol,t)))}return i.symbols.push(void 0),i}}P8.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=zS(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=zS(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=BAt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=zS(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=kAt(i,n))}};function UCe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?UCe(s,t,n,i):s}}function VAt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function UAt(e,t,n){let i=t[n],o=VAt(e.ranges,i);return e.symbols[o]}P8.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>UCe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>UAt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var O8=P8;function Kl(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new Ee({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(Kl.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});Kl.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new se(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new O8(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};Kl.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};Kl.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};Kl.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new e1(this,t,!0)}else this._rootNode=new e1(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};Kl.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};Kl._fetchJson=function(e){return e.fetchJson()};Kl.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=Kl._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};Kl.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};Kl.prototype._create3DTileset=async function(e){var r,s,a;let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=(a=(s=(r=this._symbology)==null?void 0:r.defaultSymbology)==null?void 0:s.edges)==null?void 0:a.color;l(o)&&!l(e==null?void 0:e.outlineColor)&&(e=l(e)?He(e):{},e.outlineColor=z.fromCartesian4(oe.fromArray(o))),this._tileset=await ws.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(c){c._i3sNode._clearGeometryData(),URL.revokeObjectURL(c._contentResource._url),c._contentResource=c._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(c){l(c._i3sNode)&&c._i3sNode._loadChildren()})};Kl.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};Kl.prototype.filterByAttributes=function(e){this._filters=l(e)?He(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var HS=Kl;function R8(e,t){this._dataProvider=e,this._resource=new Ee({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(R8.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});R8.prototype.load=async function(){return this._data=await ip.loadJson(this._resource),this._data};R8.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var M8=R8;function t1(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=y(n.visibility,!0),this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(t1.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});t1._fromData=async function(e,t,n,i){let o=new t1(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=t1._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new Ee({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await ip.loadJson(o._resource),c=new HS(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var L8=t1;var GCe=Hr(zCe(),1);function _s(e){e=y(e,y.EMPTY_OBJECT),this._name=e.name,this._show=y(e.show,!0),this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=y(e.showFeatures,!1),this._adjustMaterialAlphaMode=y(e.adjustMaterialAlphaMode,!1),this._applySymbology=y(e.applySymbology,!1),this._calculateNormals=y(e.calculateNormals,!1),this._cesium3dTilesetOptions=y(e.cesium3dTilesetOptions,y.EMPTY_OBJECT),this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(_s.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});_s.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};_s.prototype.isDestroyed=function(){return!1};_s.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};_s.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};_s.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};_s.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function zAt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function HCe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=zAt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=L8._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new M8(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new HS(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}_s.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=Ee.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await _s.loadJson(n),o=new _s(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=HCe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await HCe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};_s._fetchJson=function(e){return e.fetchJson()};_s.loadJson=async function(e){let t=await _s._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new se(t.error)}return t};_s.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new se(`Failed to load binary: ${e.url}`);return t};_s.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var HAt=new U;function GAt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=fe.fromRadians(t.west,t.north),a=fe.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let p=c.y;p<=u.y;p++){let g=U.fromElements(h,p,HAt),m=g.toString();if(!o.hasOwnProperty(m)){let x={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=x,i.push(x)}}let f=[];for(let h=0;h<i.length;++h){let p=i[h],g=p.terrainProvider.requestTileGeometry(p.x,p.y,p.level);f.push(g)}return Promise.all(f).then(function(h){let p=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},x=h[g],b="Geographic";n._projection instanceof Ni&&(b="WebMercator");let T={projectionType:b,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:x._height,width:x._width,scale:x._structure.heightScale,offset:x._structure.heightOffset};if(x._encoding===ah.LERC){let C=GCe.default.decode(x._buffer);T.buffer=C.pixels[0]}else T.buffer=x._buffer;p.push(T)}return p})}async function WAt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await GAt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}_s.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=WAt(this),this._geoidDataPromise)};_s.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};_s.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};_s.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};_s.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var ip=_s;var n1={};n1.createTilesetFromIModelId=async function(e,t){let{exports:n}=await Js.getExports(e);if(n.length>0&&n.every(a=>a.status===Js.ExportStatus.Invalid))throw new se(`All exports for this iModel are Invalid: ${e}`);let i=n.find(a=>a.status===Js.ExportStatus.Complete);if(!l(i))return;let o=new URL(i._links.mesh.href);o.pathname=`${o.pathname}/tileset.json`;let r=o.toString(),s=new Ee({url:r});return ws.fromUrl(s,t)};n1.createTilesetForRealityDataId=async function(e,t,n,i){if(!l(n)||!l(i)){let s=await Js.getRealityDataMetadata(e,t);i=s.rootDocument,n=s.type}if(![Js.RealityDataType.Cesium3DTiles,Js.RealityDataType.PNTS,Js.RealityDataType.RealityMesh3DTiles,Js.RealityDataType.Terrain3DTiles].includes(n))throw new se(`Reality data type is not a mesh type: ${n}`);let r=await Js.getRealityDataURL(e,t,i);return ws.fromUrl(r,{maximumScreenSpaceError:4})};n1.createDataSourceForRealityDataId=async function(e,t,n,i){if(!l(n)||!l(i)){let s=await Js.getRealityDataMetadata(e,t);i=s.rootDocument,n=s.type}if(![Js.RealityDataType.KML,Js.RealityDataType.GeoJSON].includes(n))throw new se(`Reality data type is not a data source type: ${n}`);let r=await Js.getRealityDataURL(e,t,i);return n===Js.RealityDataType.GeoJSON?Tb.load(r):LE.load(r)};n1.loadGeospatialFeatures=async function(e,t,n){let i=n!=null?n:1e4,o=`${Js.apiEndpoint}geospatial-features/itwins/${e}/ogc/collections/${t}/items`,r=new Ee({url:o,headers:{Authorization:`Bearer ${Js.defaultAccessToken}`,Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:i,client:"CesiumJS"}});return Tb.load(r)};var WCe=n1;function jCe(){}Object.defineProperties(jCe.prototype,{color:{get:de.throwInstantiationError},intensity:{get:de.throwInstantiationError}});var qCe=jCe;var jAt=/\/$/,YCe=new vt('&copy; <a href="https://www.mapbox.com/about/maps/">Mapbox</a> &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function GS(e){e=y(e,y.EMPTY_OBJECT);let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ee.createIfNeeded(y(e.url,"https://api.mapbox.com/styles/v1/"));this._styleId=t,this._accessToken=n;let o=y(e.tilesize,512);this._tilesize=o;let r=y(e.username,"mapbox");this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();jAt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new vt(c))):c=YCe,this._resource=i,this._imageryProvider=new dc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(GS.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});GS.prototype.getTileCredits=function(e,t,n){};GS.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};GS.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};GS._defaultCredit=YCe;var XCe=GS;function k$(e){}k$.prototype.isReady=function(){return!0};k$.prototype.shouldDiscardImage=function(e){return!1};var KCe=k$;var qAt=new vt("MapQuest, Open Street Map and contributors, CC-BY-SA");function F8(e){e=y(e,y.EMPTY_OBJECT);let t=Ee.createIfNeeded(y(e.url,"https://tile.openstreetmap.org/"));t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${y(e.fileExtension,"png")}`;let n=new ms({ellipsoid:e.ellipsoid}),i=256,o=256,r=y(e.minimumLevel,0),s=e.maximumLevel,a=y(e.rectangle,n.rectangle),c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=y(e.credit,qAt);typeof h=="string"&&(h=new vt(h)),dc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(F8.prototype=Object.create(dc.prototype),F8.prototype.constructor=F8);var w0=F8;var YAt=new U(1,1);function V$(e){e=y(e,y.EMPTY_OBJECT),this.mass=y(e.mass,1),this.position=d.clone(y(e.position,d.ZERO)),this.velocity=d.clone(y(e.velocity,d.ZERO)),this.life=y(e.life,Number.MAX_VALUE),this.image=e.image,this.startColor=z.clone(y(e.startColor,z.WHITE)),this.endColor=z.clone(y(e.endColor,z.WHITE)),this.startScale=y(e.startScale,1),this.endScale=y(e.endScale,1),this.imageSize=U.clone(y(e.imageSize,YAt)),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(V$.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var $Ce=new d;V$.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,$Ce),d.add(this.position,$Ce,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var i1=V$;function ZCe(e){e=y(e,y.EMPTY_OBJECT),this.time=y(e.time,0),this.minimum=y(e.minimum,0),this.maximum=y(e.maximum,50),this._complete=!1}Object.defineProperties(ZCe.prototype,{complete:{get:function(){return this._complete}}});var QCe=ZCe;function JCe(e){}JCe.prototype.emit=function(e){de.throwInstantiationError()};var eAe=JCe;var tAe=new U(1,1);function o1(e){e=y(e,y.EMPTY_OBJECT),this.show=y(e.show,!0),this.updateCallback=e.updateCallback,this.loop=y(e.loop,!0),this.image=y(e.image,void 0);let t=e.emitter;l(t)||(t=new g8(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=F.clone(y(e.modelMatrix,F.IDENTITY)),this._emitterModelMatrix=F.clone(y(e.emitterModelMatrix,F.IDENTITY)),this._matrixDirty=!0,this._combinedMatrix=new F,this._startColor=z.clone(y(e.color,y(e.startColor,z.WHITE))),this._endColor=z.clone(y(e.color,y(e.endColor,z.WHITE))),this._startScale=y(e.scale,y(e.startScale,1)),this._endScale=y(e.scale,y(e.endScale,1)),this._emissionRate=y(e.emissionRate,5),this._minimumSpeed=y(e.speed,y(e.minimumSpeed,1)),this._maximumSpeed=y(e.speed,y(e.maximumSpeed,1)),this._minimumParticleLife=y(e.particleLife,y(e.minimumParticleLife,5)),this._maximumParticleLife=y(e.particleLife,y(e.maximumParticleLife,5)),this._minimumMass=y(e.mass,y(e.minimumMass,1)),this._maximumMass=y(e.mass,y(e.maximumMass,1)),this._minimumImageSize=U.clone(y(e.imageSize,y(e.minimumImageSize,tAe))),this._maximumImageSize=U.clone(y(e.imageSize,y(e.maximumImageSize,tAe))),this._sizeInMeters=y(e.sizeInMeters,!1),this._lifetime=y(e.lifetime,Number.MAX_VALUE),this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new me,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(o1.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!F.equals(this._modelMatrix,e),F.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!F.equals(this._emitterModelMatrix,e),F.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){z.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){z.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function XAt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let p=0;p<h;++p)i+=o[p].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let p=new i1;p._billboard=r.add({image:s,show:!1}),u.push(p)}e._particleEstimate=a}function KAt(e){let t=e._particlePool.pop();return l(t)||(t=new i1),t}function $At(e,t){e._particlePool.push(t)}function ZAt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function QAt(e){l(e._billboard)&&(e._billboard.show=!1)}function nAe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=P.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=P.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=P.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=P.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new z(i,o,r,s),n.scale=P.lerp(t.startScale,t.endScale,t.normalizedAge)}function JAt(e,t){t.startColor=z.clone(e._startColor,t.startColor),t.endColor=z.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=P.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=P.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=P.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=P.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=P.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function eEt(e,t){if(e._isComplete)return 0;t=P.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=P.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var B8=new d;o1.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new Af),this._updateParticlePool&&(XAt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=$.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?nAe(this,s):(QAt(s),$At(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=eEt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=F.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=KAt(this),this._emitter.emit(s),d.add(s.position,s.velocity,B8),F.multiplyByPoint(u,B8,B8),s.position=F.multiplyByPoint(u,s.position,s.position),d.subtract(B8,s.position,s.velocity),d.normalize(s.velocity,s.velocity),JAt(this,s),nAe(this,s)}if(this._billboardCollection.update(e),this._previousTime=$.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=P.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&ZAt(this)};o1.prototype.isDestroyed=function(){return!1};o1.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var iAe=o1;function Hu(){de.throwInstantiationError()}Hu.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(Hu.prototype,{quadtree:{get:de.throwInstantiationError,set:de.throwInstantiationError},tilingScheme:{get:de.throwInstantiationError},errorEvent:{get:de.throwInstantiationError}});Hu.prototype.update=de.throwInstantiationError;Hu.prototype.beginUpdate=de.throwInstantiationError;Hu.prototype.endUpdate=de.throwInstantiationError;Hu.prototype.getLevelMaximumGeometricError=de.throwInstantiationError;Hu.prototype.loadTile=de.throwInstantiationError;Hu.prototype.computeTileVisibility=de.throwInstantiationError;Hu.prototype.showTileThisFrame=de.throwInstantiationError;Hu.prototype.computeDistanceToTile=de.throwInstantiationError;Hu.prototype.isDestroyed=de.throwInstantiationError;Hu.prototype.destroy=de.throwInstantiationError;var oAe=Hu;function U$(e){e=y(e,1),this._radius=y(e,1)}Object.defineProperties(U$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});U$.prototype.emit=function(e){let t=P.randomBetween(0,P.TWO_PI),n=P.randomBetween(0,P.PI),i=P.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var rAe=U$;function r1(){}r1.prototype.evaluate=function(e,t){de.throwInstantiationError()};r1.prototype.evaluateColor=function(e,t){de.throwInstantiationError()};r1.prototype.getShaderFunction=function(e,t,n,i){de.throwInstantiationError()};r1.prototype.getVariables=function(){de.throwInstantiationError()};var sAe=r1;function WS(e){this._ready=!1,this._provider=void 0,this._errorEvent=new me,this._readyEvent=new me,nEt(this,e)}Object.defineProperties(WS.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});WS.fromWorldTerrain=function(e){return new WS(RS(e))};WS.fromWorldBathymetry=function(e){return new WS(n8(e))};function tEt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function nEt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){tEt(e._errorEvent,i)}}var k8=WS;function jS(){}jS.prototype.boundingVolume=void 0;jS.prototype.boundingSphere=void 0;jS.prototype.distanceToCamera=function(e){de.throwInstantiationError()};jS.prototype.intersectPlane=function(e){de.throwInstantiationError()};jS.prototype.createDebugVolume=function(e){de.throwInstantiationError()};var aAe=jS;function s1(e){e=y(e,y.EMPTY_OBJECT),this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new Qi({ellipsoid:e.ellipsoid}),this._color=y(e.color,z.YELLOW),this._errorEvent=new me,this._tileWidth=y(e.tileWidth,256),this._tileHeight=y(e.tileHeight,256),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(s1.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});s1.prototype.getTileCredits=function(e,t,n){};s1.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};s1.prototype.pickFeatures=function(e,t,n,i,o){};var V8=s1;function z$(e){de.throwInstantiationError()}z$.prototype.isReady=de.throwInstantiationError;z$.prototype.shouldDiscardImage=de.throwInstantiationError;var cAe=z$;var iEt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},lAe=Object.freeze(iEt);function U8(e,t){this.show=!0,l(e)||(e=new je),this.rectangle=je.clone(e),l(t)||(t=Zi.fromType(Zi.ColorType,{color:new z(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}U8.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!je.equals(t.viewport,this.rectangle))&&(this._rs=Ve.fromCache({blending:fn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new Ue({sources:[this._material.shaderSource,ZH]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=ve.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};U8.prototype.isDestroyed=function(){return!1};U8.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var uAe=U8;function H$(){de.throwInstantiationError()}Object.defineProperties(H$.prototype,{globalTransform:{get:de.throwInstantiationError},shapeTransform:{get:de.throwInstantiationError},shape:{get:de.throwInstantiationError},minBounds:{get:de.throwInstantiationError},maxBounds:{get:de.throwInstantiationError},dimensions:{get:de.throwInstantiationError},paddingBefore:{get:de.throwInstantiationError},paddingAfter:{get:de.throwInstantiationError},names:{get:de.throwInstantiationError},types:{get:de.throwInstantiationError},componentTypes:{get:de.throwInstantiationError},metadataOrder:{get:de.throwInstantiationError},minimumValues:{get:de.throwInstantiationError},maximumValues:{get:de.throwInstantiationError},maximumTileCount:{get:de.throwInstantiationError},availableLevels:{get:de.throwInstantiationError},keyframeCount:{get:de.throwInstantiationError},timeIntervalCollection:{get:de.throwInstantiationError}});H$.prototype.requestData=function(e){de.throwInstantiationError()};var fAe=H$;function sT(){de.throwInstantiationError()}Object.defineProperties(sT.prototype,{orientedBoundingBox:{get:de.throwInstantiationError},boundingSphere:{get:de.throwInstantiationError},boundTransform:{get:de.throwInstantiationError},shapeTransform:{get:de.throwInstantiationError},shaderUniforms:{get:de.throwInstantiationError},shaderDefines:{get:de.throwInstantiationError},shaderMaximumIntersectionsLength:{get:de.throwInstantiationError}});sT.prototype.update=de.throwInstantiationError;sT.prototype.computeOrientedBoundingBoxForTile=de.throwInstantiationError;sT.prototype.computeOrientedBoundingBoxForSample=de.throwInstantiationError;sT.DefaultMinBounds=de.throwInstantiationError;sT.DefaultMaxBounds=de.throwInstantiationError;var dAe=sT;var hAe=`uniform sampler2D u_depthTexture;
in vec2 v_textureCoordinates;
void main()
{
float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates));
z_window = czm_reverseLogDepth(z_window);
float n_range = czm_depthRange.near;
float f_range = czm_depthRange.far;
float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range);
float scale = pow(z_ndc * 0.5 + 0.5, 8.0);
out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0);
}
`;function oEt(e){e=y(e,y.EMPTY_OBJECT),this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=y(e.pixelFormat,nt.RGBA),this.pixelDatatype=y(e.pixelDatatype,Ke.UNSIGNED_BYTE);let t=e.url;typeof t=="string"&&(t=Ee.createIfNeeded(t)),this.resource=t;let i=y(e.repeat,!0)?En.REPEAT:En.CLAMP_TO_EDGE;this.sampler=new Zt({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var mAe=oEt;var rEt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat2",MAT4:"mat4"},pAe=Object.freeze(rEt);var sEt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},_Ae=Object.freeze(sEt);function aEt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${T_(s)}
with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){var o;postMessage({id:(o=i.data)==null?void 0:o.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var gAe=aEt;globalThis.CESIUM_VERSION="1.127";var a1;typeof ko<"u"&&(a1=ko);(function(){/*!
* Knockout JavaScript library v3.5.1
* (c) The Knockout.js team - http://knockoutjs.com/
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
*/(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(_,S){return _===null||typeof _ in x?_===S:!1}function u(_,S){var w;return function(){w||(w=m.a.setTimeout(function(){w=e,_()},S))}}function f(_,S){var w;return function(){clearTimeout(w),w=m.a.setTimeout(_,S)}}function h(_,S){S&&S!=="change"?S==="beforeChange"?this.pc(_):this.gb(_,S):this.qc(_)}function p(_,S){S!==null&&S.s&&S.s()}function g(_,S){var w=this.qd,I=w[E];I.ra||(this.Qb&&this.mb[S]?(w.uc(S,_,this.mb[S]),this.mb[S]=null,--this.Qb):I.I[S]||w.uc(S,_,I.J?{da:_}:w.$c(_)),_.Ja&&_.gd())}var m=typeof s<"u"?s:{};m.b=function(_,S){for(var w=_.split("."),I=m,L=0;L<w.length-1;L++)I=I[w[L]];I[w[w.length-1]]=S},m.L=function(_,S,w){_[S]=w},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function _(j,K){for(var Q in j)L.call(j,Q)&&K(Q,j[Q])}function S(j,K){if(K)for(var Q in K)L.call(K,Q)&&(j[Q]=K[Q]);return j}function w(j,K){return j.__proto__=K,j}function I(j,K,Q,he){var ye=j[K].match(q)||[];m.a.D(Q.match(q),function(re){m.a.Na(ye,re,he)}),j[K]=ye.join(" ")}var L=Object.prototype.hasOwnProperty,B={__proto__:[]}instanceof Array,H=typeof Symbol=="function",V={},G={};V[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],V.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),_(V,function(j,K){if(K.length)for(var Q=0,he=K.length;Q<he;Q++)G[K[Q]]=j});var k={propertychange:!0},W=n&&function(){for(var j=3,K=n.createElement("div"),Q=K.getElementsByTagName("i");K.innerHTML="<!--[if gt IE "+ ++j+"]><i></i><![endif]-->",Q[0];);return 4<j?j:e}(),q=/\S+/g,J;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(j,K,Q){for(var he=0,ye=j.length;he<ye;he++)K.call(Q,j[he],he,j)},A:typeof Array.prototype.indexOf=="function"?function(j,K){return Array.prototype.indexOf.call(j,K)}:function(j,K){for(var Q=0,he=j.length;Q<he;Q++)if(j[Q]===K)return Q;return-1},Lb:function(j,K,Q){for(var he=0,ye=j.length;he<ye;he++)if(K.call(Q,j[he],he,j))return j[he];return e},Pa:function(j,K){var Q=m.a.A(j,K);0<Q?j.splice(Q,1):Q===0&&j.shift()},wc:function(j){var K=[];return j&&m.a.D(j,function(Q){0>m.a.A(K,Q)&&K.push(Q)}),K},Mb:function(j,K,Q){var he=[];if(j)for(var ye=0,re=j.length;ye<re;ye++)he.push(K.call(Q,j[ye],ye));return he},jb:function(j,K,Q){var he=[];if(j)for(var ye=0,re=j.length;ye<re;ye++)K.call(Q,j[ye],ye)&&he.push(j[ye]);return he},Nb:function(j,K){if(K instanceof Array)j.push.apply(j,K);else for(var Q=0,he=K.length;Q<he;Q++)j.push(K[Q]);return j},Na:function(j,K,Q){var he=m.a.A(m.a.bc(j),K);0>he?Q&&j.push(K):Q||j.splice(he,1)},Ba:B,extend:S,setPrototypeOf:w,Ab:B?w:S,P:_,Ga:function(j,K,Q){if(!j)return j;var he={},ye;for(ye in j)L.call(j,ye)&&(he[ye]=K.call(Q,j[ye],ye,j));return he},Tb:function(j){for(;j.firstChild;)m.removeNode(j.firstChild)},Yb:function(j){j=m.a.la(j);for(var K=(j[0]&&j[0].ownerDocument||n).createElement("div"),Q=0,he=j.length;Q<he;Q++)K.appendChild(m.oa(j[Q]));return K},Ca:function(j,K){for(var Q=0,he=j.length,ye=[];Q<he;Q++){var re=j[Q].cloneNode(!0);ye.push(K?m.oa(re):re)}return ye},va:function(j,K){if(m.a.Tb(j),K)for(var Q=0,he=K.length;Q<he;Q++)j.appendChild(K[Q])},Xc:function(j,K){var Q=j.nodeType?[j]:j;if(0<Q.length){for(var he=Q[0],ye=he.parentNode,re=0,_e=K.length;re<_e;re++)ye.insertBefore(K[re],he);for(re=0,_e=Q.length;re<_e;re++)m.removeNode(Q[re])}},Ua:function(j,K){if(j.length){for(K=K.nodeType===8&&K.parentNode||K;j.length&&j[0].parentNode!==K;)j.splice(0,1);for(;1<j.length&&j[j.length-1].parentNode!==K;)j.length--;if(1<j.length){var Q=j[0],he=j[j.length-1];for(j.length=0;Q!==he;)j.push(Q),Q=Q.nextSibling;j.push(he)}}return j},Zc:function(j,K){7>W?j.setAttribute("selected",K):j.selected=K},Db:function(j){return j===null||j===e?"":j.trim?j.trim():j.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(j,K){return j=j||"",K.length>j.length?!1:j.substring(0,K.length)===K},vd:function(j,K){if(j===K)return!0;if(j.nodeType===11)return!1;if(K.contains)return K.contains(j.nodeType!==1?j.parentNode:j);if(K.compareDocumentPosition)return(K.compareDocumentPosition(j)&16)==16;for(;j&&j!=K;)j=j.parentNode;return!!j},Sb:function(j){return m.a.vd(j,j.ownerDocument.documentElement)},kd:function(j){return!!m.a.Lb(j,m.a.Sb)},R:function(j){return j&&j.tagName&&j.tagName.toLowerCase()},Ac:function(j){return m.onError?function(){try{return j.apply(this,arguments)}catch(K){throw m.onError&&m.onError(K),K}}:j},setTimeout:function(j,K){return setTimeout(m.a.Ac(j),K)},Gc:function(j){setTimeout(function(){throw m.onError&&m.onError(j),j},0)},B:function(j,K,Q){var he=m.a.Ac(Q);if(Q=k[K],m.options.useOnlyNativeEvents||Q||!o)if(Q||typeof j.addEventListener!="function")if(typeof j.attachEvent<"u"){var ye=function(_e){he.call(j,_e)},re="on"+K;j.attachEvent(re,ye),m.a.K.za(j,function(){j.detachEvent(re,ye)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else j.addEventListener(K,he,!1);else J||(J=typeof o(j).on=="function"?"on":"bind"),o(j)[J](K,he)},Fb:function(j,K){if(!j||!j.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var Q;if(m.a.R(j)==="input"&&j.type&&K.toLowerCase()=="click"?(Q=j.type,Q=Q=="checkbox"||Q=="radio"):Q=!1,m.options.useOnlyNativeEvents||!o||Q)if(typeof n.createEvent=="function")if(typeof j.dispatchEvent=="function")Q=n.createEvent(G[K]||"HTMLEvents"),Q.initEvent(K,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,j),j.dispatchEvent(Q);else throw Error("The supplied element doesn't support dispatchEvent");else if(Q&&j.click)j.click();else if(typeof j.fireEvent<"u")j.fireEvent("on"+K);else throw Error("Browser doesn't support triggering events");else o(j).trigger(K)},f:function(j){return m.O(j)?j():j},bc:function(j){return m.O(j)?j.v():j},Eb:function(j,K,Q){var he;K&&(typeof j.classList=="object"?(he=j.classList[Q?"add":"remove"],m.a.D(K.match(q),function(ye){he.call(j.classList,ye)})):typeof j.className.baseVal=="string"?I(j.className,"baseVal",K,Q):I(j,"className",K,Q))},Bb:function(j,K){var Q=m.a.f(K);(Q===null||Q===e)&&(Q="");var he=m.h.firstChild(j);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(j,[j.ownerDocument.createTextNode(Q)]):he.data=Q,m.a.Ad(j)},Yc:function(j,K){if(j.name=K,7>=W)try{var Q=j.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});j.mergeAttributes(n.createElement("<input name='"+Q+"'/>"),!1)}catch{}},Ad:function(j){9<=W&&(j=j.nodeType==1?j:j.parentNode,j.style&&(j.style.zoom=j.style.zoom))},wd:function(j){if(W){var K=j.style.width;j.style.width=0,j.style.width=K}},Pd:function(j,K){j=m.a.f(j),K=m.a.f(K);for(var Q=[],he=j;he<=K;he++)Q.push(he);return Q},la:function(j){for(var K=[],Q=0,he=j.length;Q<he;Q++)K.push(j[Q]);return K},Da:function(j){return H?Symbol(j):j},Zd:W===6,$d:W===7,W,Lc:function(j,K){for(var Q=m.a.la(j.getElementsByTagName("input")).concat(m.a.la(j.getElementsByTagName("textarea"))),he=typeof K=="string"?function(_e){return _e.name===K}:function(_e){return K.test(_e.name)},ye=[],re=Q.length-1;0<=re;re--)he(Q[re])&&ye.push(Q[re]);return ye},Nd:function(j){return typeof j=="string"&&(j=m.a.Db(j))?r&&r.parse?r.parse(j):new Function("return "+j)():null},hc:function(j,K,Q){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(j),K,Q)},Od:function(j,K,Q){Q=Q||{};var he=Q.params||{},ye=Q.includeFields||this.Jc,re=j;if(typeof j=="object"&&m.a.R(j)==="form")for(var re=j.action,_e=ye.length-1;0<=_e;_e--)for(var be=m.a.Lc(j,ye[_e]),we=be.length-1;0<=we;we--)he[be[we].name]=be[we].value;K=m.a.f(K);var De=n.createElement("form");De.style.display="none",De.action=re,De.method="post";for(var Me in K)j=n.createElement("input"),j.type="hidden",j.name=Me,j.value=m.a.hc(m.a.f(K[Me])),De.appendChild(j);_(he,function(Re,rt){var Ye=n.createElement("input");Ye.type="hidden",Ye.name=Re,Ye.value=rt,De.appendChild(Ye)}),n.body.appendChild(De),Q.submitter?Q.submitter(De):De.submit(),setTimeout(function(){De.parentNode.removeChild(De)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(_){var S=this;if(arguments.length===1)return function(){return S.apply(_,arguments)};var w=Array.prototype.slice.call(arguments,1);return function(){var I=w.slice(0);return I.push.apply(I,arguments),S.apply(_,I)}}),m.a.g=new function(){var _=0,S="__ko__"+new Date().getTime(),w={},I,L;return m.a.W?(I=function(B,H){var V=B[S];if(!V||V==="null"||!w[V]){if(!H)return e;V=B[S]="ko"+_++,w[V]={}}return w[V]},L=function(B){var H=B[S];return H?(delete w[H],B[S]=null,!0):!1}):(I=function(B,H){var V=B[S];return!V&&H&&(V=B[S]={}),V},L=function(B){return B[S]?(delete B[S],!0):!1}),{get:function(B,H){var V=I(B,!1);return V&&V[H]},set:function(B,H,V){(B=I(B,V!==e))&&(B[H]=V)},Ub:function(B,H,V){return B=I(B,!0),B[H]||(B[H]=V)},clear:L,Z:function(){return _+++S}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function _(H,V){var G=m.a.g.get(H,I);return G===e&&V&&(G=[],m.a.g.set(H,I,G)),G}function S(H){var V=_(H,!1);if(V)for(var V=V.slice(0),G=0;G<V.length;G++)V[G](H);m.a.g.clear(H),m.a.K.cleanExternalData(H),B[H.nodeType]&&w(H.childNodes,!0)}function w(H,V){for(var G=[],k,W=0;W<H.length;W++)if((!V||H[W].nodeType===8)&&(S(G[G.length]=k=H[W]),H[W]!==k))for(;W--&&m.a.A(G,H[W])==-1;);}var I=m.a.g.Z(),L={1:!0,8:!0,9:!0},B={1:!0,9:!0};return{za:function(H,V){if(typeof V!="function")throw Error("Callback must be a function");_(H,!0).push(V)},yb:function(H,V){var G=_(H,!1);G&&(m.a.Pa(G,V),G.length==0&&m.a.g.set(H,I,e))},oa:function(H){return m.u.G(function(){L[H.nodeType]&&(S(H),B[H.nodeType]&&w(H.getElementsByTagName("*")))}),H},removeNode:function(H){m.oa(H),H.parentNode&&H.parentNode.removeChild(H)},cleanExternalData:function(H){o&&typeof o.cleanData=="function"&&o.cleanData([H])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var _=[0,"",""],S=[1,"<table>","</table>"],w=[3,"<table><tbody><tr>","</tr></tbody></table>"],I=[1,"<select multiple='multiple'>","</select>"],L={thead:S,tbody:S,tfoot:S,tr:[2,"<table><tbody>","</tbody></table>"],td:w,th:w,option:I,optgroup:I},B=8>=m.a.W;m.a.ua=function(H,V){var G;if(o){if(o.parseHTML)G=o.parseHTML(H,V)||[];else if((G=o.clean([H],V))&&G[0]){for(var k=G[0];k.parentNode&&k.parentNode.nodeType!==11;)k=k.parentNode;k.parentNode&&k.parentNode.removeChild(k)}}else{(G=V)||(G=n);var k=G.parentWindow||G.defaultView||t,W=m.a.Db(H).toLowerCase(),q=G.createElement("div"),J;for(J=(W=W.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&L[W[1]]||_,W=J[0],J="ignored<div>"+J[1]+H+J[2]+"</div>",typeof k.innerShiv=="function"?q.appendChild(k.innerShiv(J)):(B&&G.body.appendChild(q),q.innerHTML=J,B&&q.parentNode.removeChild(q));W--;)q=q.lastChild;G=m.a.la(q.lastChild.childNodes)}return G},m.a.Md=function(H,V){var G=m.a.ua(H,V);return G.length&&G[0].parentElement||m.a.Yb(G)},m.a.fc=function(H,V){if(m.a.Tb(H),V=m.a.f(V),V!==null&&V!==e)if(typeof V!="string"&&(V=V.toString()),o)o(H).html(V);else for(var G=m.a.ua(V,H.ownerDocument),k=0;k<G.length;k++)H.appendChild(G[k])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function _(w,I){if(w){if(w.nodeType==8){var L=m.aa.Uc(w.nodeValue);L!=null&&I.push({ud:w,Kd:L})}else if(w.nodeType==1)for(var L=0,B=w.childNodes,H=B.length;L<H;L++)_(B[L],I)}}var S={};return{Xb:function(w){if(typeof w!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var I=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return S[I]=w,"<!--[ko_memo:"+I+"]-->"},bd:function(w,I){var L=S[w];if(L===e)throw Error("Couldn't find any memo with ID "+w+". Perhaps it's already been unmemoized.");try{return L.apply(null,I||[]),!0}finally{delete S[w]}},cd:function(w,I){var L=[];_(w,L);for(var B=0,H=L.length;B<H;B++){var V=L[B].ud,G=[V];I&&m.a.Nb(G,I),m.aa.bd(L[B].Kd,G),V.nodeValue="",V.parentNode&&V.parentNode.removeChild(V)}},Uc:function(w){return(w=w.match(/^\[ko_memo\:(.*?)\]$/))?w[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function _(){if(L){for(var V=L,G=0,k;H<L;)if(k=I[H++]){if(H>V){if(5e3<=++G){H=L,m.a.Gc(Error("'Too much recursion' after processing "+G+" task groups."));break}V=L}try{k()}catch(W){m.a.Gc(W)}}}}function S(){_(),H=L=I.length=0}var w,I=[],L=0,B=1,H=0;return t.MutationObserver?w=function(V){var G=n.createElement("div");return new MutationObserver(V).observe(G,{attributes:!0}),function(){G.classList.toggle("foo")}}(S):w=n&&"onreadystatechange"in n.createElement("script")?function(V){var G=n.createElement("script");G.onreadystatechange=function(){G.onreadystatechange=null,n.documentElement.removeChild(G),G=null,V()},n.documentElement.appendChild(G)}:function(V){setTimeout(V,0)},{scheduler:w,zb:function(V){return L||m.na.scheduler(S),I[L++]=V,B++},cancel:function(V){V=V-(B-L),V>=H&&V<L&&(I[V]=null)},resetForTesting:function(){var V=L-H;return H=L=I.length=0,V},Sd:_}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(_,S){_.throttleEvaluation=S;var w=null;return m.$({read:_,write:function(I){clearTimeout(w),w=m.a.setTimeout(function(){_(I)},S)}})},rateLimit:function(_,S){var w,I,L;typeof S=="number"?w=S:(w=S.timeout,I=S.method),_.Hb=!1,L=typeof I=="function"?I:I=="notifyWhenChangesStop"?f:u,_.ub(function(B){return L(B,w,S)})},deferred:function(_,S){if(S!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");_.Hb||(_.Hb=!0,_.ub(function(w){var I,L=!1;return function(){if(!L){m.na.cancel(I),I=m.na.zb(w);try{L=!0,_.notifySubscribers(e,"dirty")}finally{L=!1}}}}))},notify:function(_,S){_.equalityComparer=S=="always"?null:c}};var x={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(_,S,w){this.da=_,this.lc=S,this.mc=w,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(_){this.Jb=_,m.a.K.za(_,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,b),b.qb(this)};var b={qb:function(_){_.U={change:[]},_.sc=1},subscribe:function(_,S,w){var I=this;w=w||"change";var L=new m.ic(I,S?_.bind(S):_,function(){m.a.Pa(I.U[w],L),I.hb&&I.hb(w)});return I.Qa&&I.Qa(w),I.U[w]||(I.U[w]=[]),I.U[w].push(L),L},notifySubscribers:function(_,S){if(S=S||"change",S==="change"&&this.Gb(),this.Wa(S)){var w=S==="change"&&this.ed||this.U[S].slice(0);try{m.u.xc();for(var I=0,L;L=w[I];++I)L.Ib||L.lc(_)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(_){return this.ob()!==_},Gb:function(){++this.sc},ub:function(_){var S=this,w=m.O(S),I,L,B,H,V;S.gb||(S.gb=S.notifySubscribers,S.notifySubscribers=h);var G=_(function(){S.Ja=!1,w&&H===S&&(H=S.nc?S.nc():S());var k=L||V&&S.sb(B,H);V=L=I=!1,k&&S.gb(B=H)});S.qc=function(k,W){W&&S.Ja||(V=!W),S.ed=S.U.change.slice(0),S.Ja=I=!0,H=k,G()},S.pc=function(k){I||(B=k,S.gb(k,"beforeChange"))},S.rc=function(){V=!0},S.gd=function(){S.sb(B,S.v(!0))&&(L=!0)}},Wa:function(_){return this.U[_]&&this.U[_].length},Bd:function(_){if(_)return this.U[_]&&this.U[_].length||0;var S=0;return m.a.P(this.U,function(w,I){w!=="dirty"&&(S+=I.length)}),S},sb:function(_,S){return!this.equalityComparer||!this.equalityComparer(_,S)},toString:function(){return"[object Object]"},extend:function(_){var S=this;return _&&m.a.P(_,function(w,I){var L=m.Ta[w];typeof L=="function"&&(S=L(S,I)||S)}),S}};m.L(b,"init",b.qb),m.L(b,"subscribe",b.subscribe),m.L(b,"extend",b.extend),m.L(b,"getSubscriptionsCount",b.Bd),m.a.Ba&&m.a.setPrototypeOf(b,Function.prototype),m.T.fn=b,m.Qc=function(_){return _!=null&&typeof _.subscribe=="function"&&typeof _.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function _(B){w.push(I),I=B}function S(){I=w.pop()}var w=[],I,L=0;return{xc:_,end:S,cc:function(B){if(I){if(!m.Qc(B))throw Error("Only subscribable things can act as dependencies");I.od.call(I.pd,B,B.fd||(B.fd=++L))}},G:function(B,H,V){try{return _(),B.apply(H,V||[])}finally{S()}},qa:function(){if(I)return I.o.qa()},Va:function(){if(I)return I.o.Va()},Ya:function(){if(I)return I.Ya},o:function(){if(I)return I.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var T=m.a.Da("_latestValue");m.ta=function(_){function S(){return 0<arguments.length?(S.sb(S[T],arguments[0])&&(S.ya(),S[T]=arguments[0],S.xa()),this):(m.u.cc(S),S[T])}return S[T]=_,m.a.Ba||m.a.extend(S,m.T.fn),m.T.fn.qb(S),m.a.Ab(S,C),m.options.deferUpdates&&m.Ta.deferred(S,!0),S};var C={equalityComparer:c,v:function(){return this[T]},xa:function(){this.notifySubscribers(this[T],"spectate"),this.notifySubscribers(this[T])},ya:function(){this.notifySubscribers(this[T],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(C,m.T.fn);var A=m.ta.Ma="__ko_proto__";C[A]=m.ta,m.O=function(_){if((_=typeof _=="function"&&_[A])&&_!==C[A]&&_!==m.o.fn[A])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!_},m.Za=function(_){return typeof _=="function"&&(_[A]===C[A]||_[A]===m.o.fn[A]&&_.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",C),m.L(C,"peek",C.v),m.L(C,"valueHasMutated",C.xa),m.L(C,"valueWillMutate",C.ya),m.Ha=function(_){if(_=_||[],typeof _!="object"||!("length"in _))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return _=m.ta(_),m.a.Ab(_,m.Ha.fn),_.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(_){for(var S=this.v(),w=[],I=typeof _!="function"||m.O(_)?function(H){return H===_}:_,L=0;L<S.length;L++){var B=S[L];if(I(B)){if(w.length===0&&this.ya(),S[L]!==B)throw Error("Array modified during remove; cannot remove item");w.push(B),S.splice(L,1),L--}}return w.length&&this.xa(),w},removeAll:function(_){if(_===e){var S=this.v(),w=S.slice(0);return this.ya(),S.splice(0,S.length),this.xa(),w}return _?this.remove(function(I){return 0<=m.a.A(_,I)}):[]},destroy:function(_){var S=this.v(),w=typeof _!="function"||m.O(_)?function(B){return B===_}:_;this.ya();for(var I=S.length-1;0<=I;I--){var L=S[I];w(L)&&(L._destroy=!0)}this.xa()},destroyAll:function(_){return _===e?this.destroy(function(){return!0}):_?this.destroy(function(S){return 0<=m.a.A(_,S)}):[]},indexOf:function(_){var S=this();return m.a.A(S,_)},replace:function(_,S){var w=this.indexOf(_);0<=w&&(this.ya(),this.v()[w]=S,this.xa())},sorted:function(_){var S=this().slice(0);return _?S.sort(_):S.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(_){m.Ha.fn[_]=function(){var S=this.v();this.ya(),this.zc(S,_,arguments);var w=S[_].apply(S,arguments);return this.xa(),w===S?this:w}}),m.a.D(["slice"],function(_){m.Ha.fn[_]=function(){var S=this();return S[_].apply(S,arguments)}}),m.Pc=function(_){return m.O(_)&&typeof _.remove=="function"&&typeof _.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(_,S){function w(){function q(){if(V){var J=[].concat(_.v()||[]),j;_.Wa("arrayChange")&&((!L||1<V)&&(L=m.a.Pb(G,J,_.Ob)),j=L),G=J,L=null,V=0,j&&j.length&&_.notifySubscribers(j,"arrayChange")}}I?q():(I=!0,H=_.subscribe(function(){++V},null,"spectate"),G=[].concat(_.v()||[]),L=null,B=_.subscribe(q))}if(_.Ob={},S&&typeof S=="object"&&m.a.extend(_.Ob,S),_.Ob.sparse=!0,!_.zc){var I=!1,L=null,B,H,V=0,G,k=_.Qa,W=_.hb;_.Qa=function(q){k&&k.call(_,q),q==="arrayChange"&&w()},_.hb=function(q){W&&W.call(_,q),q!=="arrayChange"||_.Wa("arrayChange")||(B&&B.s(),H&&H.s(),H=B=null,I=!1,G=e)},_.zc=function(q,J,j){function K(De,Me,Re){return Q[Q.length]={status:De,value:Me,index:Re}}if(I&&!V){var Q=[],he=q.length,ye=j.length,re=0;switch(J){case"push":re=he;case"unshift":for(J=0;J<ye;J++)K("added",j[J],re+J);break;case"pop":re=he-1;case"shift":he&&K("deleted",q[re],re);break;case"splice":J=Math.min(Math.max(0,0>j[0]?he+j[0]:j[0]),he);for(var he=ye===1?he:Math.min(J+(j[1]||0),he),ye=J+ye-2,re=Math.max(he,ye),_e=[],be=[],we=2;J<re;++J,++we)J<he&&be.push(K("deleted",q[J],J)),J<ye&&_e.push(K("added",j[we],J));m.a.Kc(be,_e);break;default:return}L=Q}}}};var E=m.a.Da("_state");m.o=m.$=function(_,S,w){function I(){if(0<arguments.length){if(typeof L=="function")L.apply(B.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return B.ra||m.u.cc(I),(B.ka||B.J&&I.Xa())&&I.ha(),B.X}if(typeof _=="object"?w=_:(w=w||{},_&&(w.read=_)),typeof w.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var L=w.write,B={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:w.read,nb:S||w.owner,l:w.disposeWhenNodeIsRemoved||w.l||null,Sa:w.disposeWhen||w.Sa,Rb:null,I:{},V:0,Ic:null};return I[E]=B,I.Nc=typeof L=="function",m.a.Ba||m.a.extend(I,m.T.fn),m.T.fn.qb(I),m.a.Ab(I,v),w.pure?(B.wb=!0,B.J=!0,m.a.extend(I,D)):w.deferEvaluation&&m.a.extend(I,R),m.options.deferUpdates&&m.Ta.deferred(I,!0),B.l&&(B.jc=!0,B.l.nodeType||(B.l=null)),B.J||w.deferEvaluation||I.ha(),B.l&&I.ja()&&m.a.K.za(B.l,B.Rb=function(){I.s()}),I};var v={equalityComparer:c,qa:function(){return this[E].V},Va:function(){var _=[];return m.a.P(this[E].I,function(S,w){_[w.Ka]=w.da}),_},Vb:function(_){if(!this[E].V)return!1;var S=this.Va();return m.a.A(S,_)!==-1?!0:!!m.a.Lb(S,function(w){return w.Vb&&w.Vb(_)})},uc:function(_,S,w){if(this[E].wb&&S===this)throw Error("A 'pure' computed must not be called recursively");this[E].I[_]=w,w.Ka=this[E].V++,w.La=S.ob()},Xa:function(){var _,S,w=this[E].I;for(_ in w)if(Object.prototype.hasOwnProperty.call(w,_)&&(S=w[_],this.Ia&&S.da.Ja||S.da.Dd(S.La)))return!0},Jd:function(){this.Ia&&!this[E].rb&&this.Ia(!1)},ja:function(){var _=this[E];return _.ka||0<_.V},Rd:function(){this.Ja?this[E].ka&&(this[E].sa=!0):this.Hc()},$c:function(_){if(_.Hb){var S=_.subscribe(this.Jd,this,"dirty"),w=_.subscribe(this.Rd,this);return{da:_,s:function(){S.s(),w.s()}}}return _.subscribe(this.Hc,this)},Hc:function(){var _=this,S=_.throttleEvaluation;S&&0<=S?(clearTimeout(this[E].Ic),this[E].Ic=m.a.setTimeout(function(){_.ha(!0)},S)):_.Ia?_.Ia(!0):_.ha(!0)},ha:function(_){var S=this[E],w=S.Sa,I=!1;if(!S.rb&&!S.ra){if(S.l&&!m.a.Sb(S.l)||w&&w()){if(!S.jc){this.s();return}}else S.jc=!1;S.rb=!0;try{I=this.zd(_)}finally{S.rb=!1}return I}},zd:function(_){var S=this[E],I=!1,w=S.wb?e:!S.V,I={qd:this,mb:S.I,Qb:S.V};m.u.xc({pd:I,od:g,o:this,Ya:w}),S.I={},S.V=0;var L=this.yd(S,I);return S.V?I=this.sb(S.X,L):(this.s(),I=!0),I&&(S.J?this.Gb():this.notifySubscribers(S.X,"beforeChange"),S.X=L,this.notifySubscribers(S.X,"spectate"),!S.J&&_&&this.notifySubscribers(S.X),this.rc&&this.rc()),w&&this.notifySubscribers(S.X,"awake"),I},yd:function(_,S){try{var w=_.Wc;return _.nb?w.call(_.nb):w()}finally{m.u.end(),S.Qb&&!_.J&&m.a.P(S.mb,p),_.sa=_.ka=!1}},v:function(_){var S=this[E];return(S.ka&&(_||!S.V)||S.J&&this.Xa())&&this.ha(),S.X},ub:function(_){m.T.fn.ub.call(this,_),this.nc=function(){return this[E].J||(this[E].sa?this.ha():this[E].ka=!1),this[E].X},this.Ia=function(S){this.pc(this[E].X),this[E].ka=!0,S&&(this[E].sa=!0),this.qc(this,!S)}},s:function(){var _=this[E];!_.J&&_.I&&m.a.P(_.I,function(S,w){w.s&&w.s()}),_.l&&_.Rb&&m.a.K.yb(_.l,_.Rb),_.I=e,_.V=0,_.ra=!0,_.sa=!1,_.ka=!1,_.J=!1,_.l=e,_.Sa=e,_.Wc=e,this.Nc||(_.nb=e)}},D={Qa:function(_){var S=this,w=S[E];if(!w.ra&&w.J&&_=="change"){if(w.J=!1,w.sa||S.Xa())w.I=null,w.V=0,S.ha()&&S.Gb();else{var I=[];m.a.P(w.I,function(L,B){I[B.Ka]=L}),m.a.D(I,function(L,B){var H=w.I[L],V=S.$c(H.da);V.Ka=B,V.La=H.La,w.I[L]=V}),S.Xa()&&S.ha()&&S.Gb()}w.ra||S.notifySubscribers(w.X,"awake")}},hb:function(_){var S=this[E];S.ra||_!="change"||this.Wa("change")||(m.a.P(S.I,function(w,I){I.s&&(S.I[w]={da:I.da,Ka:I.Ka,La:I.La},I.s())}),S.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var _=this[E];return _.J&&(_.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},R={Qa:function(_){_!="change"&&_!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(v,m.T.fn);var O=m.ta.Ma;v[O]=m.o,m.Oc=function(_){return typeof _=="function"&&_[O]===v[O]},m.Fd=function(_){return m.Oc(_)&&_[E]&&_[E].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",v),m.L(v,"peek",v.v),m.L(v,"dispose",v.s),m.L(v,"isActive",v.ja),m.L(v,"getDependenciesCount",v.qa),m.L(v,"getDependencies",v.Va),m.xb=function(_,S){return typeof _=="function"?m.o(_,S,{pure:!0}):(_=m.a.extend({},_),_.pure=!0,m.o(_,S))},m.b("pureComputed",m.xb),function(){function _(I,L,B){if(B=B||new w,I=L(I),typeof I!="object"||I===null||I===e||I instanceof RegExp||I instanceof Date||I instanceof String||I instanceof Number||I instanceof Boolean)return I;var H=I instanceof Array?[]:{};return B.save(I,H),S(I,function(V){var G=L(I[V]);switch(typeof G){case"boolean":case"number":case"string":case"function":H[V]=G;break;case"object":case"undefined":var k=B.get(G);H[V]=k!==e?k:_(G,L,B)}}),H}function S(I,L){if(I instanceof Array){for(var B=0;B<I.length;B++)L(B);typeof I.toJSON=="function"&&L("toJSON")}else for(B in I)L(B)}function w(){this.keys=[],this.values=[]}m.ad=function(I){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return _(I,function(L){for(var B=0;m.O(L)&&10>B;B++)L=L();return L})},m.toJSON=function(I,L,B){return I=m.ad(I),m.a.hc(I,L,B)},w.prototype={constructor:w,save:function(I,L){var B=m.a.A(this.keys,I);0<=B?this.values[B]=L:(this.keys.push(I),this.values.push(L))},get:function(I){return I=m.a.A(this.keys,I),0<=I?this.values[I]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(_,S,w){function I(L){var B=m.xb(_,w).extend({ma:"always"}),H=B.subscribe(function(V){V&&(H.s(),L(V))});return B.notifySubscribers(B.v()),H}return typeof Promise!="function"||S?I(S.bind(w)):new Promise(I)},m.b("when",m.Wd),function(){m.w={M:function(_){switch(m.a.R(_)){case"option":return _.__ko__hasDomDataOptionValue__===!0?m.a.g.get(_,m.c.options.$b):7>=m.a.W?_.getAttributeNode("value")&&_.getAttributeNode("value").specified?_.value:_.text:_.value;case"select":return 0<=_.selectedIndex?m.w.M(_.options[_.selectedIndex]):e;default:return _.value}},cb:function(_,S,w){switch(m.a.R(_)){case"option":typeof S=="string"?(m.a.g.set(_,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in _&&delete _.__ko__hasDomDataOptionValue__,_.value=S):(m.a.g.set(_,m.c.options.$b,S),_.__ko__hasDomDataOptionValue__=!0,_.value=typeof S=="number"?S:"");break;case"select":(S===""||S===null)&&(S=e);for(var I=-1,L=0,B=_.options.length,H;L<B;++L)if(H=m.w.M(_.options[L]),H==S||H===""&&S===e){I=L;break}(w||0<=I||S===e&&1<_.size)&&(_.selectedIndex=I,m.a.W===6&&m.a.setTimeout(function(){_.selectedIndex=I},0));break;default:(S===null||S===e)&&(S=""),_.value=S}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function _(V){V=m.a.Db(V),V.charCodeAt(0)===123&&(V=V.slice(1,-1)),V+=`
,`;var G=[],k=V.match(I),W,q=[],J=0;if(1<k.length){for(var j=0,K;K=k[j];++j){var Q=K.charCodeAt(0);if(Q===44){if(0>=J){G.push(W&&q.length?{key:W,value:q.join("")}:{unknown:W||q.join("")}),W=J=0,q=[];continue}}else if(Q===58){if(!J&&!W&&q.length===1){W=q.pop();continue}}else{if(Q===47&&1<K.length&&(K.charCodeAt(1)===47||K.charCodeAt(1)===42))continue;Q===47&&j&&1<K.length?(Q=k[j-1].match(L))&&!B[Q[0]]&&(V=V.substr(V.indexOf(K)+1),k=V.match(I),j=-1,K="/"):Q===40||Q===123||Q===91?++J:Q===41||Q===125||Q===93?--J:W||q.length||Q!==34&&Q!==39||(K=K.slice(1,-1))}q.push(K)}if(0<J)throw Error("Unbalanced parentheses, braces, or brackets")}return G}var S=["true","false","null","undefined"],w=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,I=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*
|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),L=/[\])"'A-Za-z0-9_$]+$/,B={in:1,return:1,typeof:1},H={};return{Ra:[],wa:H,ac:_,vb:function(V,G){function k(Q,he){var ye;if(!j){var re=m.getBindingHandler(Q);if(re&&re.preprocess&&!(he=re.preprocess(he,Q,k)))return;(re=H[Q])&&(ye=he,0<=m.a.A(S,ye)?ye=!1:(re=ye.match(w),ye=re===null?!1:re[1]?"Object("+re[1]+")"+re[2]:ye),re=ye),re&&q.push("'"+(typeof H[Q]=="string"?H[Q]:Q)+"':function(_z){"+ye+"=_z}")}J&&(he="function(){return "+he+" }"),W.push("'"+Q+"':"+he)}G=G||{};var W=[],q=[],J=G.valueAccessors,j=G.bindingParams,K=typeof V=="string"?_(V):V;return m.a.D(K,function(Q){k(Q.key||Q.unknown,Q.value)}),q.length&&k("_ko_property_writers","{"+q.join(",")+" }"),W.join(",")},Id:function(V,G){for(var k=0;k<V.length;k++)if(V[k].key==G)return!0;return!1},eb:function(V,G,k,W,q){V&&m.O(V)?!m.Za(V)||q&&V.v()===W||V(W):(V=G.get("_ko_property_writers"))&&V[k]&&V[k](W)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function _(k){return k.nodeType==8&&B.test(L?k.text:k.nodeValue)}function S(k){return k.nodeType==8&&H.test(L?k.text:k.nodeValue)}function w(k,W){for(var q=k,J=1,j=[];q=q.nextSibling;){if(S(q)&&(m.a.g.set(q,G,!0),J--,J===0))return j;j.push(q),_(q)&&J++}if(!W)throw Error("Cannot find closing comment tag to match: "+k.nodeValue);return null}function I(k,W){var q=w(k,W);return q?0<q.length?q[q.length-1].nextSibling:k.nextSibling:null}var L=n&&n.createComment("test").text==="<!--test-->",B=L?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,H=L?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,V={ul:!0,ol:!0},G="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(k){return _(k)?w(k):k.childNodes},Ea:function(k){if(_(k)){k=m.h.childNodes(k);for(var W=0,q=k.length;W<q;W++)m.removeNode(k[W])}else m.a.Tb(k)},va:function(k,W){if(_(k)){m.h.Ea(k);for(var q=k.nextSibling,J=0,j=W.length;J<j;J++)q.parentNode.insertBefore(W[J],q)}else m.a.va(k,W)},Vc:function(k,W){var q;_(k)?(q=k.nextSibling,k=k.parentNode):q=k.firstChild,q?W!==q&&k.insertBefore(W,q):k.appendChild(W)},Wb:function(k,W,q){q?(q=q.nextSibling,_(k)&&(k=k.parentNode),q?W!==q&&k.insertBefore(W,q):k.appendChild(W)):m.h.Vc(k,W)},firstChild:function(k){if(_(k))return!k.nextSibling||S(k.nextSibling)?null:k.nextSibling;if(k.firstChild&&S(k.firstChild))throw Error("Found invalid end comment, as the first child of "+k);return k.firstChild},nextSibling:function(k){if(_(k)&&(k=I(k)),k.nextSibling&&S(k.nextSibling)){var W=k.nextSibling;if(S(W)&&!m.a.g.get(W,G))throw Error("Found end comment without a matching opening comment, as child of "+k);return null}return k.nextSibling},Cd:_,Vd:function(k){return(k=(L?k.text:k.nodeValue).match(B))?k[1]:null},Sc:function(k){if(V[m.a.R(k)]){var W=k.firstChild;if(W)do if(W.nodeType===1){var q;q=W.firstChild;var J=null;if(q)do if(J)J.push(q);else if(_(q)){var j=I(q,!0);j?q=j:J=[q]}else S(q)&&(J=[q]);while(q=q.nextSibling);if(q=J)for(J=W.nextSibling,j=0;j<q.length;j++)J?k.insertBefore(q[j],J):k.appendChild(q[j])}while(W=W.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(_){switch(_.nodeType){case 1:return _.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(_);case 8:return m.h.Cd(_);default:return!1}},getBindings:function(_,S){var w=this.getBindingsString(_,S),w=w?this.parseBindingsString(w,S,_):null;return m.j.tc(w,_,S,!1)},getBindingAccessors:function(_,S){var w=this.getBindingsString(_,S),w=w?this.parseBindingsString(w,S,_,{valueAccessors:!0}):null;return m.j.tc(w,_,S,!0)},getBindingsString:function(_){switch(_.nodeType){case 1:return _.getAttribute("data-bind");case 8:return m.h.Vd(_);default:return null}},parseBindingsString:function(_,S,w,I){try{var L=this.nd,B=_+(I&&I.valueAccessors||""),H;if(!(H=L[B])){var V,G="with($context){with($data||{}){return{"+m.m.vb(_,I)+"}}}";V=new Function("$context","$element",G),H=L[B]=V}return H(S,w)}catch(k){throw k.message=`Unable to parse bindings.
Bindings value: `+_+`
Message: `+k.message,k}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function _(re){var _e=(re=m.a.g.get(re,ye))&&re.N;_e&&(re.N=null,_e.Tc())}function S(re,_e,be){this.node=re,this.yc=_e,this.kb=[],this.H=!1,_e.N||m.a.K.za(re,_),be&&be.N&&(be.N.kb.push(re),this.Kb=be)}function w(re){return function(){return re}}function I(re){return re()}function L(re){return m.a.Ga(m.u.G(re),function(_e,be){return function(){return re()[be]}})}function B(re,_e,be){return typeof re=="function"?L(re.bind(null,_e,be)):m.a.Ga(re,w)}function H(re,_e){return L(this.getBindings.bind(this,re,_e))}function V(re,_e){var be=m.h.firstChild(_e);if(be){var we,De=m.ga.instance,Me=De.preprocessNode;if(Me){for(;we=be;)be=m.h.nextSibling(we),Me.call(De,we);be=m.h.firstChild(_e)}for(;we=be;)be=m.h.nextSibling(we),G(re,we)}m.i.ma(_e,m.i.H)}function G(re,_e){var be=re,we=_e.nodeType===1;we&&m.h.Sc(_e),(we||m.ga.instance.nodeHasBindings(_e))&&(be=W(_e,null,re).bindingContextForDescendants),be&&!Q[m.a.R(_e)]&&V(be,_e)}function k(re){var _e=[],be={},we=[];return m.a.P(re,function De(Me){if(!be[Me]){var Re=m.getBindingHandler(Me);Re&&(Re.after&&(we.push(Me),m.a.D(Re.after,function(rt){if(re[rt]){if(m.a.A(we,rt)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+we.join(", "));De(rt)}}),we.length--),_e.push({key:Me,Mc:Re})),be[Me]=!0}}),_e}function W(re,_e,be){var we=m.a.g.Ub(re,ye,{}),De=we.hd;if(!_e){if(De)throw Error("You cannot apply bindings multiple times to the same element.");we.hd=!0}De||(we.context=be),we.Zb||(we.Zb={});var Me;if(_e&&typeof _e!="function")Me=_e;else{var Re=m.ga.instance,rt=Re.getBindingAccessors||H,Ye=m.$(function(){return(Me=_e?_e(be,re):rt.call(Re,re,be))&&(be[J]&&be[J](),be[K]&&be[K]()),Me},null,{l:re});Me&&Ye.ja()||(Ye=null)}var dt=be,Xe;if(Me){var _t=function(){return m.a.Ga(Ye?Ye():Me,I)},ft=Ye?function(ht){return function(){return I(Ye()[ht])}}:function(ht){return Me[ht]};_t.get=function(ht){return Me[ht]&&I(ft(ht))},_t.has=function(ht){return ht in Me},m.i.H in Me&&m.i.subscribe(re,m.i.H,function(){var ht=(0,Me[m.i.H])();if(ht){var vn=m.h.childNodes(re);vn.length&&ht(vn,m.Ec(vn[0]))}}),m.i.pa in Me&&(dt=m.i.Cb(re,be),m.i.subscribe(re,m.i.pa,function(){var ht=(0,Me[m.i.pa])();ht&&m.h.firstChild(re)&&ht(re)})),we=k(Me),m.a.D(we,function(ht){var vn=ht.Mc.init,tn=ht.Mc.update,Te=ht.key;if(re.nodeType===8&&!m.h.ea[Te])throw Error("The binding '"+Te+"' cannot be used with virtual elements");try{typeof vn=="function"&&m.u.G(function(){var Ae=vn(re,ft(Te),_t,dt.$data,dt);if(Ae&&Ae.controlsDescendantBindings){if(Xe!==e)throw Error("Multiple bindings ("+Xe+" and "+Te+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");Xe=Te}}),typeof tn=="function"&&m.$(function(){tn(re,ft(Te),_t,dt.$data,dt)},null,{l:re})}catch(Ae){throw Ae.message='Unable to process binding "'+Te+": "+Me[Te]+`"
Message: `+Ae.message,Ae}})}return we=Xe===e,{shouldBindDescendants:we,bindingContextForDescendants:we&&dt}}function q(re,_e){return re&&re instanceof m.fa?re:new m.fa(re,e,e,_e)}var J=m.a.Da("_subscribable"),j=m.a.Da("_ancestorBindingInfo"),K=m.a.Da("_dataDependency");m.c={};var Q={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(re){return m.c[re]};var he={};m.fa=function(re,_e,be,we,De){function Me(){var ft=dt?Ye():Ye,ht=m.a.f(ft);return _e?(m.a.extend(Re,_e),j in _e&&(Re[j]=_e[j])):(Re.$parents=[],Re.$root=ht,Re.ko=m),Re[J]=Xe,rt?ht=Re.$data:(Re.$rawData=ft,Re.$data=ht),be&&(Re[be]=ht),we&&we(Re,_e,ht),_e&&_e[J]&&!m.S.o().Vb(_e[J])&&_e[J](),_t&&(Re[K]=_t),Re.$data}var Re=this,rt=re===he,Ye=rt?e:re,dt=typeof Ye=="function"&&!m.O(Ye),Xe,_t=De&&De.dataDependency;De&&De.exportDependencies?Me():(Xe=m.xb(Me),Xe.v(),Xe.ja()?Xe.equalityComparer=null:Re[J]=e)},m.fa.prototype.createChildContext=function(re,_e,be,we){if(!we&&_e&&typeof _e=="object"&&(we=_e,_e=we.as,be=we.extend),_e&&we&&we.noChildContext){var De=typeof re=="function"&&!m.O(re);return new m.fa(he,this,null,function(Me){be&&be(Me),Me[_e]=De?re():re},we)}return new m.fa(re,this,_e,function(Me,Re){Me.$parentContext=Re,Me.$parent=Re.$data,Me.$parents=(Re.$parents||[]).slice(0),Me.$parents.unshift(Me.$parent),be&&be(Me)},we)},m.fa.prototype.extend=function(re,_e){return new m.fa(he,this,null,function(be){m.a.extend(be,typeof re=="function"?re(be):re)},_e)};var ye=m.a.g.Z();S.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},S.prototype.sd=function(re){m.a.Pa(this.kb,re),!this.kb.length&&this.H&&this.Cc()},S.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,_),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(re,_e,be,we,De){var Me=m.a.g.Ub(re,ye,{});return Me.Fa||(Me.Fa=new m.T),De&&De.notifyImmediately&&Me.Zb[_e]&&m.u.G(be,we,[re]),Me.Fa.subscribe(be,we,_e)},ma:function(re,_e){var be=m.a.g.get(re,ye);if(be&&(be.Zb[_e]=!0,be.Fa&&be.Fa.notifySubscribers(re,_e),_e==m.i.H)){if(be.N)be.N.Cc();else if(be.N===e&&be.Fa&&be.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(re,_e){var be=m.a.g.Ub(re,ye,{});return be.N||(be.N=new S(re,be,_e[j])),_e[j]==be?_e:_e.extend(function(we){we[j]=be})}},m.Td=function(re){return(re=m.a.g.get(re,ye))&&re.context},m.ib=function(re,_e,be){return re.nodeType===1&&m.h.Sc(re),W(re,_e,q(be))},m.ld=function(re,_e,be){return be=q(be),m.ib(re,B(_e,be,re),be)},m.Oa=function(re,_e){_e.nodeType!==1&&_e.nodeType!==8||V(q(re),_e)},m.vc=function(re,_e,be){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(_e=n.body,!_e)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!_e||_e.nodeType!==1&&_e.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");G(q(re,be),_e)},m.Dc=function(re){return!re||re.nodeType!==1&&re.nodeType!==8?e:m.Td(re)},m.Ec=function(re){return(re=m.Dc(re))?re.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(_){function S(H,V){var G=Object.prototype.hasOwnProperty.call(L,H)?L[H]:_,k;G?G.subscribe(V):(G=L[H]=new m.T,G.subscribe(V),w(H,function(W,q){var J=!(!q||!q.synchronous);B[H]={definition:W,Gd:J},delete L[H],k||J?G.notifySubscribers(W):m.na.zb(function(){G.notifySubscribers(W)})}),k=!0)}function w(H,V){I("getConfig",[H],function(G){G?I("loadComponent",[H,G],function(k){V(k,G)}):V(null,null)})}function I(H,V,G,k){k||(k=m.j.loaders.slice(0));var W=k.shift();if(W){var q=W[H];if(q){var J=!1;if(q.apply(W,V.concat(function(j){J?G(null):j!==null?G(j):I(H,V,G,k)}))!==_&&(J=!0,!W.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else I(H,V,G,k)}else G(null)}var L={},B={};m.j={get:function(H,V){var G=Object.prototype.hasOwnProperty.call(B,H)?B[H]:_;G?G.Gd?m.u.G(function(){V(G.definition)}):m.na.zb(function(){V(G.definition)}):S(H,V)},Bc:function(H){delete B[H]},oc:I},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function _(G,k,W,q){function J(){--K===0&&q(j)}var j={},K=2,Q=W.template;W=W.viewModel,Q?L(k,Q,function(he){m.j.oc("loadTemplate",[G,he],function(ye){j.template=ye,J()})}):J(),W?L(k,W,function(he){m.j.oc("loadViewModel",[G,he],function(ye){j[V]=ye,J()})}):J()}function S(G,k,W){if(typeof k=="function")W(function(J){return new k(J)});else if(typeof k[V]=="function")W(k[V]);else if("instance"in k){var q=k.instance;W(function(){return q})}else"viewModel"in k?S(G,k.viewModel,W):G("Unknown viewModel value: "+k)}function w(G){switch(m.a.R(G)){case"script":return m.a.ua(G.text);case"textarea":return m.a.ua(G.value);case"template":if(I(G.content))return m.a.Ca(G.content.childNodes)}return m.a.Ca(G.childNodes)}function I(G){return t.DocumentFragment?G instanceof DocumentFragment:G&&G.nodeType===11}function L(G,k,W){typeof k.require=="string"?a||t.require?(a||t.require)([k.require],function(q){q&&typeof q=="object"&&q.Xd&&q.default&&(q=q.default),W(q)}):G("Uses require, but no AMD loader is present"):W(k)}function B(G){return function(k){throw Error("Component '"+G+"': "+k)}}var H={};m.j.register=function(G,k){if(!k)throw Error("Invalid configuration for "+G);if(m.j.tb(G))throw Error("Component "+G+" is already registered");H[G]=k},m.j.tb=function(G){return Object.prototype.hasOwnProperty.call(H,G)},m.j.unregister=function(G){delete H[G],m.j.Bc(G)},m.j.Fc={getConfig:function(G,k){k(m.j.tb(G)?H[G]:null)},loadComponent:function(G,k,W){var q=B(G);L(q,k,function(J){_(G,q,J,W)})},loadTemplate:function(G,k,W){if(G=B(G),typeof k=="string")W(m.a.ua(k));else if(k instanceof Array)W(k);else if(I(k))W(m.a.la(k.childNodes));else if(k.element)if(k=k.element,t.HTMLElement?k instanceof HTMLElement:k&&k.tagName&&k.nodeType===1)W(w(k));else if(typeof k=="string"){var q=n.getElementById(k);q?W(w(q)):G("Cannot find element with ID "+k)}else G("Unknown element type: "+k);else G("Unknown template value: "+k)},loadViewModel:function(G,k,W){S(B(G),k,W)}};var V="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=H}(),function(){function _(w,I){var L=w.getAttribute("params");if(L){var L=S.parseBindingsString(L,I,w,{valueAccessors:!0,bindingParams:!0}),L=m.a.Ga(L,function(V){return m.o(V,null,{l:w})}),B=m.a.Ga(L,function(V){var G=V.v();return V.ja()?m.o({read:function(){return m.a.f(V())},write:m.Za(G)&&function(k){V()(k)},l:w}):G});return Object.prototype.hasOwnProperty.call(B,"$raw")||(B.$raw=L),B}return{$raw:{}}}m.j.getComponentNameForNode=function(w){var I=m.a.R(w);if(m.j.tb(I)&&(I.indexOf("-")!=-1||""+w=="[object HTMLUnknownElement]"||8>=m.a.W&&w.tagName===I))return I},m.j.tc=function(w,I,L,B){if(I.nodeType===1){var H=m.j.getComponentNameForNode(I);if(H){if(w=w||{},w.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var V={name:H,params:_(I,L)};w.component=B?function(){return V}:V}}return w};var S=new m.ga;9>m.a.W&&(m.j.register=function(w){return function(I){return w.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(w){return function(){var I=w(),L=m.j.dd,B;for(B in L);return I}}(n.createDocumentFragment))}(),function(){function _(I,L,B){if(L=L.template,!L)throw Error("Component '"+I+"' has no template");I=m.a.Ca(L),m.h.va(B,I)}function S(I,L,B){var H=I.createViewModel;return H?H.call(I,L,B):L}var w=0;m.c.component={init:function(I,L,B,H,V){function G(){var j=k&&k.dispose;typeof j=="function"&&j.call(k),q&&q.s(),W=k=q=null}var k,W,q,J=m.a.la(m.h.childNodes(I));return m.h.Ea(I),m.a.K.za(I,G),m.o(function(){var j=m.a.f(L()),K,Q;if(typeof j=="string"?K=j:(K=m.a.f(j.name),Q=m.a.f(j.params)),!K)throw Error("No component name specified");var he=m.i.Cb(I,V),ye=W=++w;m.j.get(K,function(re){if(W===ye){if(G(),!re)throw Error("Unknown component '"+K+"'");_(K,re,I);var _e=S(re,Q,{element:I,templateNodes:J});re=he.createChildContext(_e,{extend:function(be){be.$component=_e,be.$componentTemplateNodes=J}}),_e&&_e.koDescendantsComplete&&(q=m.i.subscribe(I,m.i.pa,_e.koDescendantsComplete,_e)),k=_e,m.Oa(re,I)}})},null,{l:I}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var M={class:"className",for:"htmlFor"};m.c.attr={update:function(_,S){var w=m.a.f(S())||{};m.a.P(w,function(I,L){L=m.a.f(L);var B=I.indexOf(":"),B="lookupNamespaceURI"in _&&0<B&&_.lookupNamespaceURI(I.substr(0,B)),H=L===!1||L===null||L===e;H?B?_.removeAttributeNS(B,I):_.removeAttribute(I):L=L.toString(),8>=m.a.W&&I in M?(I=M[I],H?_.removeAttribute(I):_[I]=L):H||(B?_.setAttributeNS(B,I,L):_.setAttribute(I,L)),I==="name"&&m.a.Yc(_,H?"":L)})}},function(){m.c.checked={after:["value","attr"],init:function(_,S,w){function I(){var j=_.checked,K=B();if(!m.S.Ya()&&(j||!V&&!m.S.qa())){var Q=m.u.G(S);if(k){var he=W?Q.v():Q,ye=J;J=K,ye!==K?j&&(m.a.Na(he,K,!0),m.a.Na(he,ye,!1)):m.a.Na(he,K,j),W&&m.Za(Q)&&Q(he)}else H&&(K===e?K=j:j||(K=e)),m.m.eb(Q,w,"checked",K,!0)}}function L(){var j=m.a.f(S()),K=B();k?(_.checked=0<=m.a.A(j,K),J=K):_.checked=H&&K===e?!!j:B()===j}var B=m.xb(function(){if(w.has("checkedValue"))return m.a.f(w.get("checkedValue"));if(q)return w.has("value")?m.a.f(w.get("value")):_.value}),H=_.type=="checkbox",V=_.type=="radio";if(H||V){var G=S(),k=H&&m.a.f(G)instanceof Array,W=!(k&&G.push&&G.splice),q=V||k,J=k?B():e;V&&!_.name&&m.c.uniqueName.init(_,function(){return!0}),m.o(I,null,{l:_}),m.a.B(_,"click",I),m.o(L,null,{l:_}),G=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(_,S){_.value=m.a.f(S())}}}(),m.c.class={update:function(_,S){var w=m.a.Db(m.a.f(S()));m.a.Eb(_,_.__ko__cssValue,!1),_.__ko__cssValue=w,m.a.Eb(_,w,!0)}},m.c.css={update:function(_,S){var w=m.a.f(S());w!==null&&typeof w=="object"?m.a.P(w,function(I,L){L=m.a.f(L),m.a.Eb(_,I,L)}):m.c.class.update(_,S)}},m.c.enable={update:function(_,S){var w=m.a.f(S());w&&_.disabled?_.removeAttribute("disabled"):w||_.disabled||(_.disabled=!0)}},m.c.disable={update:function(_,S){m.c.enable.update(_,function(){return!m.a.f(S())})}},m.c.event={init:function(_,S,w,I,L){var B=S()||{};m.a.P(B,function(H){typeof H=="string"&&m.a.B(_,H,function(V){var G,k=S()[H];if(k){try{var W=m.a.la(arguments);I=L.$data,W.unshift(I),G=k.apply(I,W)}finally{G!==!0&&(V.preventDefault?V.preventDefault():V.returnValue=!1)}w.get(H+"Bubble")===!1&&(V.cancelBubble=!0,V.stopPropagation&&V.stopPropagation())}})})}},m.c.foreach={Rc:function(_){return function(){var S=_(),w=m.a.bc(S);return!w||typeof w.length=="number"?{foreach:S,templateEngine:m.ba.Ma}:(m.a.f(S),{foreach:w.data,as:w.as,noChildContext:w.noChildContext,includeDestroyed:w.includeDestroyed,afterAdd:w.afterAdd,beforeRemove:w.beforeRemove,afterRender:w.afterRender,beforeMove:w.beforeMove,afterMove:w.afterMove,templateEngine:m.ba.Ma})}},init:function(_,S){return m.c.template.init(_,m.c.foreach.Rc(S))},update:function(_,S,w,I,L){return m.c.template.update(_,m.c.foreach.Rc(S),w,I,L)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(_,S,w){function I(H){_.__ko_hasfocusUpdating=!0;var V=_.ownerDocument;if("activeElement"in V){var G;try{G=V.activeElement}catch{G=V.body}H=G===_}V=S(),m.m.eb(V,w,"hasfocus",H,!0),_.__ko_hasfocusLastValue=H,_.__ko_hasfocusUpdating=!1}var L=I.bind(null,!0),B=I.bind(null,!1);m.a.B(_,"focus",L),m.a.B(_,"focusin",L),m.a.B(_,"blur",B),m.a.B(_,"focusout",B),_.__ko_hasfocusLastValue=!1},update:function(_,S){var w=!!m.a.f(S());_.__ko_hasfocusUpdating||_.__ko_hasfocusLastValue===w||(w?_.focus():_.blur(),!w&&_.__ko_hasfocusLastValue&&_.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[_,w?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(_,S){m.a.fc(_,S())}},function(){function _(S,w,I){m.c[S]={init:function(L,B,H,V,G){var k,W,q={},J,j,K;if(w){V=H.get("as");var Q=H.get("noChildContext");K=!(V&&Q),q={as:V,noChildContext:Q,exportDependencies:K}}return j=(J=H.get("completeOn")=="render")||H.has(m.i.pa),m.o(function(){var he=m.a.f(B()),ye=!I!=!he,re=!W,_e;(K||ye!==k)&&(j&&(G=m.i.Cb(L,G)),ye&&((!w||K)&&(q.dataDependency=m.S.o()),_e=w?G.createChildContext(typeof he=="function"?he:B,q):m.S.qa()?G.extend(null,q):G),re&&m.S.qa()&&(W=m.a.Ca(m.h.childNodes(L),!0)),ye?(re||m.h.va(L,m.a.Ca(W)),m.Oa(_e,L)):(m.h.Ea(L),J||m.i.ma(L,m.i.H)),k=ye)},null,{l:L}),{controlsDescendantBindings:!0}}},m.m.Ra[S]=!1,m.h.ea[S]=!0}_("if"),_("ifnot",!1,!0),_("with",!0)}(),m.c.let={init:function(_,S,w,I,L){return S=L.extend(S),m.Oa(S,_),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var N={};m.c.options={init:function(_){if(m.a.R(_)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<_.length;)_.remove(0);return{controlsDescendantBindings:!0}},update:function(_,S,w){function I(){return m.a.jb(_.options,function(Q){return Q.selected})}function L(Q,he,ye){var re=typeof he;return re=="function"?he(Q):re=="string"?Q[he]:ye}function B(Q,he){if(j&&k)m.i.ma(_,m.i.H);else if(J.length){var ye=0<=m.a.A(J,m.w.M(he[0]));m.a.Zc(he[0],ye),j&&!ye&&m.u.G(m.a.Fb,null,[_,"change"])}}var H=_.multiple,V=_.length!=0&&H?_.scrollTop:null,G=m.a.f(S()),k=w.get("valueAllowUnset")&&w.has("value"),W=w.get("optionsIncludeDestroyed");S={};var q,J=[];k||(H?J=m.a.Mb(I(),m.w.M):0<=_.selectedIndex&&J.push(m.w.M(_.options[_.selectedIndex]))),G&&(typeof G.length>"u"&&(G=[G]),q=m.a.jb(G,function(Q){return W||Q===e||Q===null||!m.a.f(Q._destroy)}),w.has("optionsCaption")&&(G=m.a.f(w.get("optionsCaption")),G!==null&&G!==e&&q.unshift(N)));var j=!1;if(S.beforeRemove=function(Q){_.removeChild(Q)},G=B,w.has("optionsAfterRender")&&typeof w.get("optionsAfterRender")=="function"&&(G=function(Q,he){B(0,he),m.u.G(w.get("optionsAfterRender"),null,[he[0],Q!==N?Q:e])}),m.a.ec(_,q,function(Q,he,ye){return ye.length&&(J=!k&&ye[0].selected?[m.w.M(ye[0])]:[],j=!0),he=_.ownerDocument.createElement("option"),Q===N?(m.a.Bb(he,w.get("optionsCaption")),m.w.cb(he,e)):(ye=L(Q,w.get("optionsValue"),Q),m.w.cb(he,m.a.f(ye)),Q=L(Q,w.get("optionsText"),ye),m.a.Bb(he,Q)),[he]},S,G),!k){var K;H?K=J.length&&I().length<J.length:K=J.length&&0<=_.selectedIndex?m.w.M(_.options[_.selectedIndex])!==J[0]:J.length||0<=_.selectedIndex,K&&m.u.G(m.a.Fb,null,[_,"change"])}(k||m.S.Ya())&&m.i.ma(_,m.i.H),m.a.wd(_),V&&20<Math.abs(V-_.scrollTop)&&(_.scrollTop=V)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(_,S,w){function I(){var H=S(),V=[];m.a.D(_.getElementsByTagName("option"),function(G){G.selected&&V.push(m.w.M(G))}),m.m.eb(H,w,"selectedOptions",V)}function L(){var H=m.a.f(S()),V=_.scrollTop;H&&typeof H.length=="number"&&m.a.D(_.getElementsByTagName("option"),function(G){var k=0<=m.a.A(H,m.w.M(G));G.selected!=k&&m.a.Zc(G,k)}),_.scrollTop=V}if(m.a.R(_)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var B;m.i.subscribe(_,m.i.H,function(){B?I():(m.a.B(_,"change",I),B=m.o(L,null,{l:_}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(_,S){var w=m.a.f(S()||{});m.a.P(w,function(I,L){if(L=m.a.f(L),(L===null||L===e||L===!1)&&(L=""),o)o(_).css(I,L);else if(/^--/.test(I))_.style.setProperty(I,L);else{I=I.replace(/-(\w)/g,function(H,V){return V.toUpperCase()});var B=_.style[I];_.style[I]=L,L===B||_.style[I]!=B||isNaN(L)||(_.style[I]=L+"px")}})}},m.c.submit={init:function(_,S,w,I,L){if(typeof S()!="function")throw Error("The value for a submit binding must be a function");m.a.B(_,"submit",function(B){var H,V=S();try{H=V.call(L.$data,_)}finally{H!==!0&&(B.preventDefault?B.preventDefault():B.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(_,S){m.a.Bb(_,S())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var _=function(q){if(q)return parseFloat(q[1])},S=t.navigator.userAgent,w,I,L,B,H;(w=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(H=_(S.match(/Edge\/([^ ]+)$/)))||_(S.match(/Chrome\/([^ ]+)/))||(I=_(S.match(/Version\/([^ ]+) Safari/)))||(L=_(S.match(/Firefox\/([^ ]+)/)))||(B=m.a.W||_(S.match(/MSIE ([^ ]+)/)))||(B=_(S.match(/rv:([^ )]+)/)))}if(8<=B&&10>B)var V=m.a.g.Z(),G=m.a.g.Z(),k=function(q){var J=this.activeElement;(J=J&&m.a.g.get(J,G))&&J(q)},W=function(q,J){var j=q.ownerDocument;m.a.g.get(j,V)||(m.a.g.set(j,V,!0),m.a.B(j,"selectionchange",k)),m.a.g.set(q,G,J)};m.c.textInput={init:function(q,J,j){function K(Me,Re){m.a.B(q,Me,Re)}function Q(){var Me=m.a.f(J());(Me===null||Me===e)&&(Me=""),be!==e&&Me===be?m.a.setTimeout(Q,4):q.value!==Me&&(De=!0,q.value=Me,De=!1,re=q.value)}function he(){_e||(be=q.value,_e=m.a.setTimeout(ye,4))}function ye(){clearTimeout(_e),be=_e=e;var Me=q.value;re!==Me&&(re=Me,m.m.eb(J(),j,"textInput",Me))}var re=q.value,_e,be,we=m.a.W==9?he:ye,De=!1;B&&K("keypress",ye),11>B&&K("propertychange",function(Me){De||Me.propertyName!=="value"||we(Me)}),B==8&&(K("keyup",ye),K("keydown",ye)),W&&(W(q,we),K("dragend",he)),(!B||9<=B)&&K("input",we),5>I&&m.a.R(q)==="textarea"?(K("keydown",he),K("paste",he),K("cut",he)):11>w?K("keydown",he):4>L?(K("DOMAutoComplete",ye),K("dragdrop",ye),K("drop",ye)):H&&q.type==="number"&&K("keydown",he),K("change",ye),K("blur",ye),m.o(Q,null,{l:q})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(q,J,j){j("textInput",q)}}}(),m.c.uniqueName={init:function(_,S){if(S()){var w="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(_,w)}}},m.c.uniqueName.rd=0,m.c.using={init:function(_,S,w,I,L){var B;return w.has("as")&&(B={as:w.get("as"),noChildContext:w.get("noChildContext")}),S=L.createChildContext(S,B),m.Oa(S,_),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(_,S,w){var I=m.a.R(_),L=I=="input";if(!L||_.type!="checkbox"&&_.type!="radio"){var B=[],H=w.get("valueUpdate"),V=!1,G=null;H&&(typeof H=="string"?B=[H]:B=m.a.wc(H),m.a.Pa(B,"change"));var k=function(){G=null,V=!1;var J=S(),j=m.w.M(_);m.m.eb(J,w,"value",j)};!m.a.W||!L||_.type!="text"||_.autocomplete=="off"||_.form&&_.form.autocomplete=="off"||m.a.A(B,"propertychange")!=-1||(m.a.B(_,"propertychange",function(){V=!0}),m.a.B(_,"focus",function(){V=!1}),m.a.B(_,"blur",function(){V&&k()})),m.a.D(B,function(J){var j=k;m.a.Ud(J,"after")&&(j=function(){G=m.w.M(_),m.a.setTimeout(k,0)},J=J.substring(5)),m.a.B(_,J,j)});var W;if(W=L&&_.type=="file"?function(){var J=m.a.f(S());J===null||J===e||J===""?_.value="":m.u.G(k)}:function(){var J=m.a.f(S()),j=m.w.M(_);G!==null&&J===G?m.a.setTimeout(W,0):(J!==j||j===e)&&(I==="select"?(j=w.get("valueAllowUnset"),m.w.cb(_,J,j),j||J===m.w.M(_)||m.u.G(k)):m.w.cb(_,J))},I==="select"){var q;m.i.subscribe(_,m.i.H,function(){q?w.get("valueAllowUnset")?W():k():(m.a.B(_,"change",k),q=m.o(W,null,{l:_}))},null,{notifyImmediately:!0})}else m.a.B(_,"change",k),m.o(W,null,{l:_})}else m.ib(_,{checkedValue:S})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(_,S){var w=m.a.f(S()),I=_.style.display!="none";w&&!I?_.style.display="":!w&&I&&(_.style.display="none")}},m.c.hidden={update:function(_,S){m.c.visible.update(_,function(){return!m.a.f(S())})}},function(_){m.c[_]={init:function(S,w,I,L,B){return m.c.event.init.call(this,S,function(){var H={};return H[_]=w(),H},I,L,B)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(_,S){if(typeof _=="string"){S=S||n;var w=S.getElementById(_);if(!w)throw Error("Cannot find template with ID "+_);return new m.C.F(w)}if(_.nodeType==1||_.nodeType==8)return new m.C.ia(_);throw Error("Unknown template type: "+_)},m.ca.prototype.renderTemplate=function(_,S,w,I){return _=this.makeTemplateSource(_,I),this.renderTemplateSource(_,S,w,I)},m.ca.prototype.isTemplateRewritten=function(_,S){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(_,S).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(_,S,w){_=this.makeTemplateSource(_,w),S=S(_.text()),_.text(S),_.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function _(I,L,B,H){I=m.m.ac(I);for(var V=m.m.Ra,G=0;G<I.length;G++){var k=I[G].key;if(Object.prototype.hasOwnProperty.call(V,k)){var W=V[k];if(typeof W=="function"){if(k=W(I[G].value))throw Error(k)}else if(!W)throw Error("This template engine does not support the '"+k+"' binding within its templates")}}return B="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(I,{valueAccessors:!0})+" } })()},'"+B.toLowerCase()+"')",H.createJavaScriptEvaluatorBlock(B)+L}var S=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,w=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(I,L,B){L.isTemplateRewritten(I,B)||L.rewriteTemplate(I,function(H){return m.kc.Ld(H,L)},B)},Ld:function(I,L){return I.replace(S,function(B,H,V,G,k){return _(k,H,V,L)}).replace(w,function(B,H){return _(H,"<!-- ko -->","#comment",L)})},md:function(I,L){return m.aa.Xb(function(B,H){var V=B.nextSibling;V&&V.nodeName.toLowerCase()===L&&m.ib(V,I,H)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(w){if(this.F=w){var I=m.a.R(w);this.ab=I==="script"?1:I==="textarea"?2:I=="template"&&w.content&&w.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var w=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[w];var I=arguments[0];w==="innerHTML"?m.a.fc(this.F,I):this.F[w]=I};var _=m.a.g.Z()+"_";m.C.F.prototype.data=function(w){if(arguments.length===1)return m.a.g.get(this.F,_+w);m.a.g.set(this.F,_+w,arguments[1])};var S=m.a.g.Z();m.C.F.prototype.nodes=function(){var w=this.F;if(arguments.length==0){var I=m.a.g.get(w,S)||{},L=I.lb||(this.ab===3?w.content:this.ab===4?w:e);if(!L||I.jd){var B=this.text();B&&B!==I.bb&&(L=m.a.Md(B,w.ownerDocument),m.a.g.set(w,S,{lb:L,bb:B,jd:!0}))}return L}I=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(w,S,{lb:I})},m.C.ia=function(w){this.F=w},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var w=m.a.g.get(this.F,S)||{};return w.bb===e&&w.lb&&(w.bb=w.lb.innerHTML),w.bb}m.a.g.set(this.F,S,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function _(G,k,W){var q;for(k=m.h.nextSibling(k);G&&(q=G)!==k;)G=m.h.nextSibling(q),W(q,G)}function S(G,k){if(G.length){var W=G[0],q=G[G.length-1],J=W.parentNode,j=m.ga.instance,K=j.preprocessNode;if(K){if(_(W,q,function(Q,he){var ye=Q.previousSibling,re=K.call(j,Q);re&&(Q===W&&(W=re[0]||he),Q===q&&(q=re[re.length-1]||ye))}),G.length=0,!W)return;W===q?G.push(W):(G.push(W,q),m.a.Ua(G,J))}_(W,q,function(Q){Q.nodeType!==1&&Q.nodeType!==8||m.vc(k,Q)}),_(W,q,function(Q){Q.nodeType!==1&&Q.nodeType!==8||m.aa.cd(Q,[k])}),m.a.Ua(G,J)}}function w(G){return G.nodeType?G:0<G.length?G[0]:null}function I(G,k,W,q,J){J=J||{};var j=(G&&w(G)||W||{}).ownerDocument,K=J.templateEngine||B;if(m.kc.xd(W,K,j),W=K.renderTemplate(W,q,J,j),typeof W.length!="number"||0<W.length&&typeof W[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(j=!1,k){case"replaceChildren":m.h.va(G,W),j=!0;break;case"replaceNode":m.a.Xc(G,W),j=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+k)}return j&&(S(W,q),J.afterRender&&m.u.G(J.afterRender,null,[W,q[J.as||"$data"]]),k=="replaceChildren"&&m.i.ma(G,m.i.H)),W}function L(G,k,W){return m.O(G)?G():typeof G=="function"?G(k,W):G}var B;m.gc=function(G){if(G!=e&&!(G instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");B=G},m.dc=function(G,k,W,q,J){if(W=W||{},(W.templateEngine||B)==e)throw Error("Set a template engine before calling renderTemplate");if(J=J||"replaceChildren",q){var j=w(q);return m.$(function(){var Q=k&&k instanceof m.fa?k:new m.fa(k,null,null,null,{exportDependencies:!0}),K=L(G,Q.$data,Q),Q=I(q,J,K,Q,W);J=="replaceNode"&&(q=Q,j=w(q))},null,{Sa:function(){return!j||!m.a.Sb(j)},l:j&&J=="replaceNode"?j.parentNode:j})}return m.aa.Xb(function(K){m.dc(G,k,W,K,"replaceNode")})},m.Qd=function(G,k,W,q,J){function j(be,we){m.u.G(m.a.ec,null,[q,be,Q,W,K,we]),m.i.ma(q,m.i.H)}function K(be,we){S(we,he),W.afterRender&&W.afterRender(we,be),he=null}function Q(be,we){he=J.createChildContext(be,{as:ye,noChildContext:W.noChildContext,extend:function(Me){Me.$index=we,ye&&(Me[ye+"Index"]=we)}});var De=L(G,be,he);return I(q,"ignoreTargetNode",De,he,W)}var he,ye=W.as,re=W.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!W.includeDestroyed;if(re||W.beforeRemove||!m.Pc(k))return m.$(function(){var be=m.a.f(k)||[];typeof be.length>"u"&&(be=[be]),re&&(be=m.a.jb(be,function(we){return we===e||we===null||!m.a.f(we._destroy)})),j(be)},null,{l:q});j(k.v());var _e=k.subscribe(function(be){j(k(),be)},null,"arrayChange");return _e.l(q),_e};var H=m.a.g.Z(),V=m.a.g.Z();m.c.template={init:function(G,k){var W=m.a.f(k());if(typeof W=="string"||"name"in W)m.h.Ea(G);else if("nodes"in W){if(W=W.nodes||[],m.O(W))throw Error('The "nodes" option must be a plain, non-observable array.');var q=W[0]&&W[0].parentNode;q&&m.a.g.get(q,V)||(q=m.a.Yb(W),m.a.g.set(q,V,!0)),new m.C.ia(G).nodes(q)}else if(W=m.h.childNodes(G),0<W.length)q=m.a.Yb(W),new m.C.ia(G).nodes(q);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(G,k,W,q,J){var j=k();k=m.a.f(j),W=!0,q=null,typeof k=="string"?k={}:(j="name"in k?k.name:G,"if"in k&&(W=m.a.f(k.if)),W&&"ifnot"in k&&(W=!m.a.f(k.ifnot)),W&&!j&&(W=!1)),"foreach"in k?q=m.Qd(j,W&&k.foreach||[],k,G,J):W?(W=J,"data"in k&&(W=J.createChildContext(k.data,{as:k.as,noChildContext:k.noChildContext,exportDependencies:!0})),q=m.dc(j,W,k,G)):m.h.Ea(G),J=q,(k=m.a.g.get(G,H))&&typeof k.s=="function"&&k.s(),m.a.g.set(G,H,!J||J.ja&&!J.ja()?e:J)}},m.m.Ra.template=function(G){return G=m.m.ac(G),G.length==1&&G[0].unknown||m.m.Id(G,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(_,S,w){if(_.length&&S.length){var I,L,B,H,V;for(I=L=0;(!w||I<w)&&(H=_[L]);++L){for(B=0;V=S[B];++B)if(H.value===V.value){H.moved=V.index,V.moved=H.index,S.splice(B,1),I=B=0;break}I+=B}}},m.a.Pb=function(){function _(S,w,I,L,B){var H=Math.min,V=Math.max,G=[],k,W=S.length,q,J=w.length,j=J-W||1,K=W+J+1,Q,he,ye;for(k=0;k<=W;k++)for(he=Q,G.push(Q=[]),ye=H(J,k+j),q=V(0,k-1);q<=ye;q++)Q[q]=q?k?S[k-1]===w[q-1]?he[q-1]:H(he[q]||K,Q[q-1]||K)+1:q+1:k+1;for(H=[],V=[],j=[],k=W,q=J;k||q;)J=G[k][q]-1,q&&J===G[k][q-1]?V.push(H[H.length]={status:I,value:w[--q],index:q}):k&&J===G[k-1][q]?j.push(H[H.length]={status:L,value:S[--k],index:k}):(--q,--k,B.sparse||H.push({status:"retained",value:w[q]}));return m.a.Kc(j,V,!B.dontLimitMoves&&10*W),H.reverse()}return function(S,w,I){return I=typeof I=="boolean"?{dontLimitMoves:I}:I||{},S=S||[],w=w||[],S.length<w.length?_(S,w,"added","deleted",I):_(w,S,"deleted","added",I)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function _(I,L,B,H,V){var G=[],k=m.$(function(){var W=L(B,V,m.a.Ua(G,I))||[];0<G.length&&(m.a.Xc(G,W),H&&m.u.G(H,null,[B,W,V])),G.length=0,m.a.Nb(G,W)},null,{l:I,Sa:function(){return!m.a.kd(G)}});return{Y:G,$:k.ja()?k:e}}var S=m.a.g.Z(),w=m.a.g.Z();m.a.ec=function(I,L,B,H,V,G){function k(ht){De={Aa:ht,pb:m.ta(he++)},K.push(De),j||we.push(De)}function W(ht){De=J[ht],he!==De.pb.v()&&be.push(De),De.pb(he++),m.a.Ua(De.Y,I),K.push(De)}function q(ht,vn){if(ht)for(var tn=0,Te=vn.length;tn<Te;tn++)m.a.D(vn[tn].Y,function(Ae){ht(Ae,tn,vn[tn].Aa)})}L=L||[],typeof L.length>"u"&&(L=[L]),H=H||{};var J=m.a.g.get(I,S),j=!J,K=[],Q=0,he=0,ye=[],re=[],_e=[],be=[],we=[],De,Me=0;if(j)m.a.D(L,k);else{if(!G||J&&J._countWaitingForRemove){var Re=m.a.Mb(J,function(ht){return ht.Aa});G=m.a.Pb(Re,L,{dontLimitMoves:H.dontLimitMoves,sparse:!0})}for(var Re=0,rt,Ye,dt;rt=G[Re];Re++)switch(Ye=rt.moved,dt=rt.index,rt.status){case"deleted":for(;Q<dt;)W(Q++);Ye===e&&(De=J[Q],De.$&&(De.$.s(),De.$=e),m.a.Ua(De.Y,I).length&&(H.beforeRemove&&(K.push(De),Me++,De.Aa===w?De=null:_e.push(De)),De&&ye.push.apply(ye,De.Y))),Q++;break;case"added":for(;he<dt;)W(Q++);Ye!==e?(re.push(K.length),W(Ye)):k(rt.value)}for(;he<L.length;)W(Q++);K._countWaitingForRemove=Me}m.a.g.set(I,S,K),q(H.beforeMove,be),m.a.D(ye,H.beforeRemove?m.oa:m.removeNode);var Xe,_t,ft;try{ft=I.ownerDocument.activeElement}catch{}if(re.length)for(;(Re=re.shift())!=e;){for(De=K[Re],Xe=e;Re;)if((_t=K[--Re].Y)&&_t.length){Xe=_t[_t.length-1];break}for(L=0;Q=De.Y[L];Xe=Q,L++)m.h.Wb(I,Q,Xe)}for(Re=0;De=K[Re];Re++){for(De.Y||m.a.extend(De,_(I,B,De.Aa,V,De.pb)),L=0;Q=De.Y[L];Xe=Q,L++)m.h.Wb(I,Q,Xe);!De.Ed&&V&&(V(De.Aa,De.Y,De.pb),De.Ed=!0,Xe=De.Y[De.Y.length-1])}for(ft&&I.ownerDocument.activeElement!=ft&&ft.focus(),q(H.beforeRemove,_e),Re=0;Re<_e.length;++Re)_e[Re].Aa=w;q(H.afterMove,be),q(H.afterAdd,we)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(_,S,w,I){return(S=!(9>m.a.W)&&_.nodes?_.nodes():null)?m.a.la(S.cloneNode(!0).childNodes):(_=_.text(),m.a.ua(_,I))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var S=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(w,I,L,B){if(B=B||n,L=L||{},2>S)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var H=w.data("precompiled");return H||(H=w.text()||"",H=o.template(null,"{{ko_with $item.koBindingContext}}"+H+"{{/ko_with}}"),w.data("precompiled",H)),w=[I.$data],I=o.extend({koBindingContext:I},L.templateOptions),I=o.tmpl(H,w,I),I.appendTo(B.createElement("div")),o.fragments={},I},this.createJavaScriptEvaluatorBlock=function(w){return"{{ko_code ((function() { return "+w+" })()) }}"},this.addTemplate=function(w,I){n.write("<script type='text/html' id='"+w+"'>"+I+"<\/script>")},0<S&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var _=new m.$a;0<_.Hd&&m.gc(_),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var cEt=ko;typeof window<"u"?(ko=window.ko,typeof a1<"u"?window.ko=a1:delete window.ko):(ko=global.ko,typeof a1<"u"?global.ko=a1:delete global.ko);var qS=cEt;/**
* @license
* Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5
* Copyright (c) Steve Sanderson
* MIT license
*/var G$="__knockoutObservables",W$="__knockoutSubscribable";function yAe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=xAe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===G$||o===W$)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&uEt(n,a)}}),e}function xAe(e,t){var n=e[G$];return!n&&t&&(n={},Object.defineProperty(e,G$,{value:n})),n}function lEt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),yAe.call(i,e,[t]),e}function uEt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=fEt(e,t,i))})}function fEt(e,t,n){var i=dEt(e,n);return i.subscribe(t)}function dEt(e,t){var n=t[W$];if(!n){n=new e.subscribable,Object.defineProperty(t,W$,{value:n});var i={};hEt(t,n,i),mEt(e,t,n,i)}return n}function hEt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function mEt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function bAe(e,t){if(!e)return null;var n=xAe(e,!1);return n&&n[t]||null}function pEt(e,t){var n=bAe(e,t);n&&n.valueHasMutated()}function _Et(e){e.track=yAe,e.getObservable=bAe,e.valueHasMutated=pEt,e.defineProperty=lEt}var z8={attachToKo:_Et};var TAe="http://www.w3.org/2000/svg",CAe="cesium-svgPath-svg",gEt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(TAe,"svg:svg");i.setAttribute("class",CAe);let o=document.createElementNS(TAe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${CAe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},H8=gEt;z8.attachToKo(qS);H8.register(qS);var xe=qS;function c1(e){l(e)||(e=new ym),this._clock=e,this._eventHelper=new xr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=xe.observable($.now()),this.systemTime.equalityComparer=$.equals,this.startTime=xe.observable(e.startTime),this.startTime.equalityComparer=$.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=xe.observable(e.stopTime),this.stopTime.equalityComparer=$.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=xe.observable(e.currentTime),this.currentTime.equalityComparer=$.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=xe.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=xe.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=xe.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=xe.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=xe.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),xe.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(c1.prototype,{clock:{get:function(){return this._clock}}});c1.prototype.synchronize=function(){let e=this._clock;this.systemTime=$.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};c1.prototype.isDestroyed=function(){return!1};c1.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var G8=c1;function yEt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,de.throwInstantiationError()}var AAe=yEt;function xEt(e,t){t=y(t,!0);let n=new me,i=new me;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,xe.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Sn=xEt;var l1={};l1.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};l1.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};l1.createRangeInput=function(e,t,n,i,o,r){r=y(r,t);let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=y(o,"any"),a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};l1.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var bc=l1;function bEt(e,t,n,i,o){return n.call(i,e[t]),xe.getObservable(e,t).subscribe(n,i,o)}var Va=bEt;function EAe(e,t){this._command=e,t=y(t,y.EMPTY_OBJECT),this.toggled=y(t.toggled,!1),this.tooltip=y(t.tooltip,""),xe.track(this,["toggled","tooltip"])}Object.defineProperties(EAe.prototype,{command:{get:function(){return this._command}}});var aT=EAe;function TEt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof ws&&(e.tileset=n.primitive),e.pickActive=!1}}function vAe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof ws&&(e.tileset=i.primitive)},bn.MOUSE_MOVE):(e._eventHandler.removeInputAction(bn.MOUSE_MOVE),e.picking=e.picking)}var CEt={maximumFractionDigits:3};function u1(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,CEt):Math.round(t).toLocaleString()}function f1(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[zo.PICK]:e._statisticsPerPass[zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${u1(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${u1(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${u1(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function wAe(){let e=wi.statistics;return`
<ul class="cesium-cesiumInspector-statistics">
<li><strong>Geometry Memory (MB): </strong>${u1(e.geometryByteLength)}</li>
<li><strong>Texture Memory (MB): </strong>${u1(e.texturesByteLength)}</li>
</ul>
`}var AEt=[{text:"Highlight",value:ou.HIGHLIGHT},{text:"Replace",value:ou.REPLACE},{text:"Mix",value:ou.MIX}],SAe=new z(1,1,0,.4),EEt=new z,W8=new z;function Ea(e,t){let n=this,i=e.canvas;this._eventHandler=new Jf(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new a0({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,xe.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=xe.observable({}),this.properties=[],xe.defineProperty(this,"properties",function(){let k=[],W=n._properties();for(let q in W)W.hasOwnProperty(q)&&k.push(q);return k});let o=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(k){o(k),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=k)}}),this.dynamicScreenSpaceError=!1;let r=xe.observable();xe.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(k){r(k),l(n._tileset)&&(n._tileset.colorBlendMode=k,n._scene.requestRender())}}),this.colorBlendMode=ou.HIGHLIGHT;let s=xe.observable(),a=xe.observable();xe.defineProperty(this,"picking",{get:function(){return a()},set:function(k){a(k),k?n._eventHandler.setInputAction(function(W){let q=e.pick(W.endPosition);if(q instanceof sa?(n.feature=q,n.tile=q.content.tile):l(q)&&l(q.content)?(n.feature=void 0,n.tile=q.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(q)&&l(q.content)){let J;e.pickPositionSupported&&(J=e.pickPosition(W.endPosition),l(J)&&(n._tileset.debugPickPosition=J)),n._tileset.debugPickedTile=q.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},bn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(bn.MOUSE_MOVE))}}),this.picking=!0;let c=xe.observable();xe.defineProperty(this,"colorize",{get:function(){return c()},set:function(k){c(k),l(n._tileset)&&(n._tileset.debugColorizeTiles=k,n._scene.requestRender())}}),this.colorize=!1;let u=xe.observable();xe.defineProperty(this,"wireframe",{get:function(){return u()},set:function(k){u(k),l(n._tileset)&&(n._tileset.debugWireframe=k,n._scene.requestRender())}}),this.wireframe=!1;let f=xe.observable();xe.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(k){f(k),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=k,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=xe.observable();xe.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(k){h(k),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=k,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let p=xe.observable();xe.defineProperty(this,"showRequestVolumes",{get:function(){return p()},set:function(k){p(k),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=k,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=xe.observable();xe.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(k){g(k),l(n._tileset)&&(n._tileset.debugFreezeFrame=k,n._scene.debugShowFrustumPlanes=k,n._scene.requestRender())}}),this.freezeFrame=!1,xe.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(k){s(k),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=k,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=xe.observable();xe.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(k){m(k),l(n._tileset)&&(n._tileset.debugShowGeometricError=k,n._scene.requestRender())}}),this.showGeometricError=!1;let x=xe.observable();xe.defineProperty(this,"showRenderingStatistics",{get:function(){return x()},set:function(k){x(k),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=k,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let b=xe.observable();xe.defineProperty(this,"showMemoryUsage",{get:function(){return b()},set:function(k){b(k),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=k,n._scene.requestRender())}}),this.showMemoryUsage=!1;let T=xe.observable();xe.defineProperty(this,"showUrl",{get:function(){return T()},set:function(k){T(k),l(n._tileset)&&(n._tileset.debugShowUrl=k,n._scene.requestRender())}}),this.showUrl=!1;let C=xe.observable();xe.defineProperty(this,"maximumScreenSpaceError",{get:function(){return C()},set:function(k){k=Number(k),isNaN(k)||(C(k),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=k))}}),this.maximumScreenSpaceError=16;let A=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return A()},set:function(k){k=Number(k),isNaN(k)||(A(k),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=k))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,xe.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(A(),1/6)},set:function(k){let W=Math.pow(k,6);A(W),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=W)}});let E=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return E()},set:function(k){k=Number(k),isNaN(k)||(E(k),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=k))}}),this.dynamicScreenSpaceErrorFactor=24;let v=TEt(this),D=xe.observable();xe.defineProperty(this,"pickActive",{get:function(){return D()},set:function(k){D(k),k?n._eventHandler.setInputAction(v,bn.LEFT_CLICK):n._eventHandler.removeInputAction(bn.LEFT_CLICK)}});let R=xe.observable();xe.defineProperty(this,"pointCloudShading",{get:function(){return R()},set:function(k){R(k),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=k)}}),this.pointCloudShading=!1;let O=xe.observable();xe.defineProperty(this,"geometricErrorScale",{get:function(){return O()},set:function(k){k=Number(k),isNaN(k)||(O(k),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=k))}}),this.geometricErrorScale=1;let M=xe.observable();xe.defineProperty(this,"maximumAttenuation",{get:function(){return M()},set:function(k){k=Number(k),isNaN(k)||(M(k),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=k===0?void 0:k))}}),this.maximumAttenuation=0;let N=xe.observable();xe.defineProperty(this,"baseResolution",{get:function(){return N()},set:function(k){k=Number(k),isNaN(k)||(N(k),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=k===0?void 0:k))}}),this.baseResolution=0;let _=xe.observable();xe.defineProperty(this,"eyeDomeLighting",{get:function(){return _()},set:function(k){_(k),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=k)}}),this.eyeDomeLighting=!1;let S=xe.observable();xe.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return S()},set:function(k){k=Number(k),isNaN(k)||(S(k),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=k))}}),this.eyeDomeLightingStrength=1;let w=xe.observable();xe.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return w()},set:function(k){k=Number(k),isNaN(k)||(w(k),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=k))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let I=xe.observable();xe.defineProperty(this,"skipLevelOfDetail",{get:function(){return I()},set:function(k){I(k),l(n._tileset)&&(n._tileset.skipLevelOfDetail=k)}}),this.skipLevelOfDetail=!0;let L=xe.observable();xe.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return L()},set:function(k){k=Number(k),isNaN(k)||(L(k),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=k))}}),this.skipScreenSpaceErrorFactor=16;let B=xe.observable();xe.defineProperty(this,"baseScreenSpaceError",{get:function(){return B()},set:function(k){k=Number(k),isNaN(k)||(B(k),l(n._tileset)&&(n._tileset.baseScreenSpaceError=k))}}),this.baseScreenSpaceError=1024;let H=xe.observable();xe.defineProperty(this,"skipLevels",{get:function(){return H()},set:function(k){k=Number(k),isNaN(k)||(H(k),l(n._tileset)&&(n._tileset.skipLevels=k))}}),this.skipLevels=1;let V=xe.observable();xe.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return V()},set:function(k){V(k),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=k)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let G=xe.observable();xe.defineProperty(this,"loadSiblings",{get:function(){return G()},set:function(k){G(k),l(n._tileset)&&(n._tileset.loadSiblings=k)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||vAe(this,!0)}Object.defineProperties(Ea.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return AEt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=f1(e,!1),this._pickStatisticsText=f1(e,!0),this._resourceCacheStatisticsText=wAe(),vAe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,EEt):z.WHITE:t.color=W8,this._scene.requestRender()),l(e)&&(z.clone(e.color,W8),e.color=SAe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!j$(t.content)&&(t.color=W8,this._scene.requestRender()),l(e)&&!j$(e.content)&&(z.clone(e.color,W8),e.color=SAe,this._scene.requestRender()),this._tile=e}}});function j$(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!j$(t[i]))return!1;return!0}return!1}Ea.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};Ea.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Ea.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};Ea.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Ea.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};Ea.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};Ea.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};Ea.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};Ea.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};Ea.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};Ea.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new US(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};Ea.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(`
`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(`
`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};Ea.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=f1(e,!1),this._pickStatisticsText=f1(e,!0),this._resourceCacheStatisticsText=wAe())};Ea.prototype.isDestroyed=function(){return!1};Ea.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};Ea.getStatistics=f1;var j8=Ea;function q8(e,t){e=Rn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new j8(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=bc.createSection,c=bc.createCheckbox,u=bc.createRangeInput,f=bc.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),p=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),x=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),b=a(s,"Style","styleVisible","toggleStyle"),T=a(s,"Optimization","optimizationVisible","toggleOptimization"),C=document.createElement("div");C.className="field-group";let A=document.createElement("label");A.className="field-label",A.appendChild(document.createTextNode("Properties: "));let E=document.createElement("div");E.setAttribute("data-bind","text: properties"),C.appendChild(A),C.appendChild(E),h.appendChild(C),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),p.appendChild(c("Colorize","colorize"));let v=p.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),D=document.createElement("p");D.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),D.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),D.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",v.appendChild(D),p.appendChild(c("Bounding Volumes","showBoundingVolumes")),p.appendChild(c("Content Volumes","showContentBoundingVolumes")),p.appendChild(c("Request Volumes","showRequestVolumes")),p.appendChild(c("Point Cloud Shading","pointCloudShading"));let R=document.createElement("div");R.setAttribute("data-bind","visible: pointCloudShading"),R.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),R.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),R.appendChild(u("Base Resolution","baseResolution",0,1,.01)),R.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),p.appendChild(R);let O=document.createElement("div");O.setAttribute("data-bind","visible: eyeDomeLighting"),O.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),O.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),R.appendChild(O),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let M=document.createElement("div");M.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(M);let N=document.createElement("div");N.setAttribute("data-bind","visible: dynamicScreenSpaceError"),N.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),N.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(N),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let _=document.createElement("div");_.className="cesium-3dTilesInspector-statistics",_.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(_),m.appendChild(c("Pick Statistics","showPickStatistics"));let S=document.createElement("div");S.className="cesium-3dTilesInspector-statistics",S.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(S),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let w=document.createElement("div");w.className="cesium-3dTilesInspector-statistics",w.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(w);let I=document.createElement("div");b.appendChild(I),I.appendChild(document.createTextNode("Color Blend Mode: "));let L=document.createElement("select");L.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),I.appendChild(L);let B=document.createElement("textarea");B.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),I.className="cesium-cesiumInspector-styleEditor",I.appendChild(B);let H=f("Compile (Ctrl+Enter)","compileStyle");I.appendChild(H);let V=document.createElement("div");V.className="cesium-cesiumInspector-error",V.setAttribute("data-bind","text: editorError"),I.appendChild(V),x.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),x.appendChild(c("Geometric Error","showGeometricError")),x.appendChild(c("Rendering Statistics","showRenderingStatistics")),x.appendChild(c("Memory Usage (MB)","showMemoryUsage")),x.appendChild(c("Url","showUrl")),T.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let G=document.createElement("div");G.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),T.appendChild(G);let k=document.createElement("div");k.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),T.appendChild(k);let W=document.createElement("div");W.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),T.appendChild(W),T.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),T.appendChild(c("Load siblings of visible tiles","loadSiblings")),xe.applyBindings(o,n)}Object.defineProperties(q8.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});q8.prototype.isDestroyed=function(){return!1};q8.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var Y8=q8;var cT="http://www.w3.org/2000/svg",PAe="http://www.w3.org/1999/xlink",X8,d1=z.fromCssColorString("rgba(247,250,255,0.384)"),K8=z.fromCssColorString("rgba(143,191,255,0.216)"),q$=z.fromCssColorString("rgba(153,197,255,0.098)"),$8=z.fromCssColorString("rgba(255,255,255,0.086)"),SEt=z.fromCssColorString("rgba(255,255,255,0.267)"),vEt=z.fromCssColorString("rgba(255,255,255,0)"),DAe=z.fromCssColorString("rgba(66,67,68,0.3)"),IAe=z.fromCssColorString("rgba(0,0,0,0.5)");function D0(e){return z.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var h1={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function Ch(e){let t=document.createElementNS(cT,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(Ch(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(PAe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function Y$(e,t,n){let i=document.createElementNS(cT,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(cT,"tspan");return o.textContent=n,i.appendChild(o),i}function wEt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var Z8=new z;function ts(e,t){let n=t.alpha,i=1-n;return Z8.red=e.red*i+t.red*n,Z8.green=e.green*i+t.green*n,Z8.blue=e.blue*i+t.blue*n,Z8.toCssColorString()}function X$(e,t,n){let i=h1[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ch(o)}function DEt(e,t,n){let i=h1[n],o=h1.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ch(r)}function IEt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&X8!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,p=u-r-a.top,g=Math.atan2(p,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(X8=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===X8&&(X8=void 0),n.shuttleRingDragging=!1}function k_(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[Va(t,"toggled",this.setToggled,this),Va(t,"tooltip",this.setTooltip,this),Va(t.command,"canExecute",this.setEnabled,this)]}k_.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};k_.prototype.isDestroyed=function(){return!1};k_.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};k_.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};k_.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function YS(e,t){e=Rn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(cT,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",PAe);let s=document.createElementNS(cT,"g");this._topG=s,this._realtimeSVG=new k_(DEt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new k_(X$(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new k_(X$(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new k_(X$(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(cT,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=Ch({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=h1.animation_pathSwooshFX,f=h1.animation_pathPointer,h=Ch({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=Ch({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let p=Ch({tagName:"g",transform:"translate(100,100)"});this._knobOuter=Ch({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=Ch({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=Y$(0,-24,""),this._knobTime=Y$(0,-7,""),this._knobStatus=Y$(0,-41,"");let x=Ch({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),b=document.createElementNS(cT,"g");b.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(b),s.appendChild(p),s.appendChild(a),b.appendChild(c),b.appendChild(h),b.appendChild(this._shuttleRingPointer),p.appendChild(this._knobOuter),p.appendChild(m),p.appendChild(this._knobDate),p.appendChild(this._knobTime),p.appendChild(this._knobStatus),p.appendChild(x),r.appendChild(s),e.appendChild(r);let T=this;function C(R){IEt(T,R)}this._mouseCallback=C,c.addEventListener("mousedown",C,!0),c.addEventListener("touchstart",C,!0),h.addEventListener("mousedown",C,!0),h.addEventListener("touchstart",C,!0),n.addEventListener("mousemove",C,!0),n.addEventListener("touchmove",C,!0),n.addEventListener("mouseup",C,!0),n.addEventListener("touchend",C,!0),n.addEventListener("touchcancel",C,!0),this._shuttleRingPointer.addEventListener("mousedown",C,!0),this._shuttleRingPointer.addEventListener("touchstart",C,!0),this._knobOuter.addEventListener("mousedown",C,!0),this._knobOuter.addEventListener("touchstart",C,!0);let A=this._knobTime.childNodes[0],E=this._knobDate.childNodes[0],v=this._knobStatus.childNodes[0],D;this._subscriptions=[Va(t.pauseViewModel,"toggled",function(R){D!==R&&(D=R,D?T._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):T._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),Va(t,"shuttleRingAngle",function(R){wEt(T._shuttleRingPointer,T._knobOuter,R)}),Va(t,"dateLabel",function(R){E.textContent!==R&&(E.textContent=R)}),Va(t,"timeLabel",function(R){A.textContent!==R&&(A.textContent=R)}),Va(t,"multiplierLabel",function(R){v.textContent!==R&&(v.textContent=R)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(YS.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});YS.prototype.isDestroyed=function(){return!1};YS.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};YS.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};YS.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=D0(this._themeNormal),n=D0(this._themeHover),i=D0(this._themeSelect),o=D0(this._themeDisabled),r=D0(this._themeKnob),s=D0(this._themePointer),a=D0(this._themeSwoosh),c=D0(this._themeSwooshHover),u=Ch({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":ts(t,d1)},{tagName:"stop",offset:"12%","stop-color":ts(t,K8)},{tagName:"stop",offset:"46%","stop-color":ts(t,q$)},{tagName:"stop",offset:"81%","stop-color":ts(t,$8)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":ts(n,d1)},{tagName:"stop",offset:"12%","stop-color":ts(n,K8)},{tagName:"stop",offset:"46%","stop-color":ts(n,q$)},{tagName:"stop",offset:"81%","stop-color":ts(n,$8)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":ts(i,d1)},{tagName:"stop",offset:"12%","stop-color":ts(i,K8)},{tagName:"stop",offset:"46%","stop-color":ts(i,q$)},{tagName:"stop",offset:"81%","stop-color":ts(i,$8)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":ts(o,SEt)},{tagName:"stop",offset:"75%","stop-color":ts(o,vEt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":ts(s,IAe)},{tagName:"stop",offset:"100%","stop-color":ts(s,IAe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":ts(r,d1)},{tagName:"stop",offset:"60%","stop-color":ts(r,DAe)},{tagName:"stop",offset:"85%","stop-color":ts(r,K8)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":ts(r,DAe)},{tagName:"stop",offset:"60%","stop-color":ts(r,d1)},{tagName:"stop",offset:"85%","stop-color":ts(r,$8)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var Q8=YS;var PEt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],I0=15,XS=105;function OAe(e,t){return e-t}function K$(e,t){let n=No(t,e,OAe);return n<0?~n:n}function OEt(e,t){if(Math.abs(e)<=I0)return e/I0;let n=I0,i=XS,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function REt(e,t,n){if(n.clockStep===yo.SYSTEM_CLOCK)return I0;if(Math.abs(e)<=1)return e*I0;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=I0,r=XS,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function rd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=rd.defaultDateFormatter,this._timeFormatter=rd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,xe.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(rd.defaultTicks),this.timeLabel=void 0,xe.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,xe.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,xe.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===yo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,xe.defineProperty(this,"shuttleRingAngle",{get:function(){return REt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,XS),-XS);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=yo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===XS){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=OEt(s,a);if(t.snapToTicks)u=a[K$(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,p=Math.pow(10,h);u=Math.round(u/p)*p|0}else f>I0?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,xe.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===Zr.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===Zr.LOOP_STOP)h=$.greaterThan(u,f)||u.equals(f)&&c>0;else{let p=s.stopTime;h=$.greaterThan(u,f)&&$.lessThan(u,p)||u.equals(f)&&c>0||u.equals(p)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,xe.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===Zr.UNBOUNDED)return!0;let c=s.systemTime;return $.greaterThanOrEquals(c,s.startTime)&&$.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,xe.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Sn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new aT(n,{toggled:xe.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Sn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new aT(i,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Sn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new aT(o,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==yo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Sn(function(){t._clockViewModel.clockStep=yo.SYSTEM_CLOCK},xe.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new aT(r,{toggled:xe.computed(function(){return e.clockStep===yo.SYSTEM_CLOCK}),tooltip:xe.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Sn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=K$(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Sn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=K$(c,a)+1;u<a.length&&(s.multiplier=a[u])})}rd.defaultDateFormatter=function(e,t){let n=$.toGregorianDate(e);return`${PEt[n.month-1]} ${n.day} ${n.year}`};rd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];rd.defaultTimeFormatter=function(e,t){let n=$.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};rd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};rd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(OAe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);Array.prototype.push.apply(s,r),this._allShuttleRingTicks=s};Object.defineProperties(rd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});rd._maxShuttleRingAngle=XS;rd._realtimeShuttleRingAngle=I0;var J8=rd;function MEt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>&nbsp;&nbsp;&nbsp;&nbsp;${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function $$(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var LEt=new pn,NEt=new d;function m1(e,t){let n=this,i=e.canvas,o=new Jf(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",xe.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Sn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Sn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Sn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Sn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=xe.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=xe.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=xe.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new a0({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Sn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=xe.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Sn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new T8({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=xe.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Sn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=xe.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=xe.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=xe.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Sn(function(){let u=n.depthFrustum+1;return n.depthFrustum=$$(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Sn(function(){let u=n.depthFrustum-1;return n.depthFrustum=$$(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=xe.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Sn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new V8({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=xe.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=xe.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Sn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Sn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=xe.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Sn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=xe.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,bn.LEFT_CLICK):o.removeInputAction(bn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,p=n._scene.camera.getPickRay(u.position,LEt),g=r.pick(p,n._scene,NEt);if(l(g)){let m=h.cartesianToCartographic(g),x=r._surface.tileProvider._tilesToRenderByTextureCount;for(let b=0;!f&&b<x.length;++b){let T=x[b];if(l(T))for(let C=0;!f&&C<T.length;++C){let A=T[C];ae.contains(A.rectangle,m)&&(f=A)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Sn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=xe.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,bn.LEFT_CLICK):o.removeInputAction(bn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(m1.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Sn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Sn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Sn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Sn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Sn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});m1.prototype._update=function(){this.frustums&&(this.frustumStatisticText=MEt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=$$(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};m1.prototype.isDestroyed=function(){return!1};m1.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var eG=m1;function tG(e,t){e=Rn(e);let n=document.createElement("div"),i=new eG(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=bc.createSection,c=bc.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let p=document.createElement("div");p.className="cesium-cesiumInspector-shaderCache",p.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(p);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Frustum:"'),g.appendChild(m);let x=document.createElement("span");x.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(x);let b=document.createElement("input");b.type="button",b.value="-",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(b);let T=document.createElement("input");T.type="button",T.value="+",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(T);let C=a(s,"Primitives","primitivesVisible","togglePrimitives"),A=document.createElement("div");A.className="cesium-cesiumInspector-pickSection",C.appendChild(A);let E=document.createElement("input");E.type="button",E.value="Pick a primitive",E.className="cesium-cesiumInspector-pickButton",E.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let v=document.createElement("div");v.className="cesium-cesiumInspector-center",v.appendChild(E),A.appendChild(v),A.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),A.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),A.appendChild(this._primitiveOnly);let D=a(s,"Terrain","terrainVisible","toggleTerrain"),R=document.createElement("div");R.className="cesium-cesiumInspector-pickSection",D.appendChild(R);let O=document.createElement("input");O.type="button",O.value="Pick a tile",O.className="cesium-cesiumInspector-pickButton",O.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),v=document.createElement("div"),v.appendChild(O),v.className="cesium-cesiumInspector-center",R.appendChild(v);let M=document.createElement("div");R.appendChild(M);let N=document.createElement("input");N.type="button",N.value="Parent",N.className="cesium-cesiumInspector-pickButton",N.setAttribute("data-bind","click: selectParent");let _=document.createElement("input");_.type="button",_.value="NW",_.className="cesium-cesiumInspector-pickButton",_.setAttribute("data-bind","click: selectNW");let S=document.createElement("input");S.type="button",S.value="NE",S.className="cesium-cesiumInspector-pickButton",S.setAttribute("data-bind","click: selectNE");let w=document.createElement("input");w.type="button",w.value="SW",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSW");let I=document.createElement("input");I.type="button",I.value="SE",I.className="cesium-cesiumInspector-pickButton",I.setAttribute("data-bind","click: selectSE");let L=document.createElement("div");L.className="cesium-cesiumInspector-tileText",M.className="cesium-cesiumInspector-frustumStatistics",M.appendChild(L),M.setAttribute("data-bind","visible: hasPickedTile"),L.setAttribute("data-bind","html: tileText");let B=document.createElement("div");B.className="cesium-cesiumInspector-relativeText",B.textContent="Select relative:",M.appendChild(B);let H=document.createElement("table"),V=document.createElement("tr"),G=document.createElement("tr"),k=document.createElement("td");k.appendChild(N);let W=document.createElement("td");W.appendChild(_);let q=document.createElement("td");q.appendChild(S),V.appendChild(k),V.appendChild(W),V.appendChild(q);let J=document.createElement("td"),j=document.createElement("td");j.appendChild(w);let K=document.createElement("td");K.appendChild(I),G.appendChild(J),G.appendChild(j),G.appendChild(K),H.appendChild(V),H.appendChild(G),M.appendChild(H),R.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),R.appendChild(c("Show only selected","filterTile","hasPickedTile")),D.appendChild(c("Wireframe","wireframe")),D.appendChild(c("Suspend LOD update","suspendUpdates")),D.appendChild(c("Show tile coordinates","tileCoordinates")),xe.applyBindings(i,this._element)}Object.defineProperties(tG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});tG.prototype.isDestroyed=function(){return!1};tG.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var nG=tG;function RAe(e){e=y(e,y.EMPTY_OBJECT);let t=e.globe,n=y(e.imageryProviderViewModels,[]),i=y(e.terrainProviderViewModels,[]);this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,xe.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=xe.getObservable(this,"imageryProviderViewModels"),r=xe.pureComputed(function(){let h=o(),p={},g;for(g=0;g<h.length;g++){let b=h[g],T=b.category;l(p[T])?p[T].push(b):p[T]=[b]}let m=Object.keys(p),x=[];for(g=0;g<m.length;g++){let b=m[g];x.push({name:b,providers:p[b]})}return x});this._imageryProviders=r;let s=xe.getObservable(this,"terrainProviderViewModels"),a=xe.pureComputed(function(){let h=s(),p={},g;for(g=0;g<h.length;g++){let b=h[g],T=b.category;l(p[T])?p[T].push(b):p[T]=[b]}let m=Object.keys(p),x=[];for(g=0;g<m.length;g++){let b=m[g];x.push({name:b,providers:p[b]})}return x});this._terrainProviders=a,this.buttonTooltip=void 0,xe.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,p=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(p)?p.name:void 0;return l(g)&&l(m)?`${g}
${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,xe.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=xe.observable();this.updateSelectedImageryViewModel=h=>{c(h),this.dropDownVisible=!1},this._currentImageryLayers=[],xe.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let p=e.map,g,m=this._currentImageryLayers,x=m.length,b=this._globe.imageryLayers,T=!1;if(!p)for(g=0;g<x;g++){let C=b.length;for(let A=0;A<C;A++){let E=b.get(A);if(E===m[g]){b.remove(E),T=!0;break}}}if(l(h))if(p&&h.marsOptions)p.basemap=h.marsOptions.layerId;else if(p&&h.options&&h.isTile)p.basemap=h.options.id;else{let C=h.creationCommand();if(Array.isArray(C)){let A=C.length;for(this._currentImageryLayers=[],g=A-1;g>=0;g--){let E=hc.fromProviderAsync(C[g]);b.add(E,0),this._currentImageryLayers.push(E)}}else{this._currentImageryLayers=[];let A=hc.fromProviderAsync(C);if(A.name=h.name,T)b.add(A,0);else{let E=b.get(0);l(E)&&b.remove(E),b.add(A,0)}this._currentImageryLayers.push(A)}}else p&&(p.basemap=void 0);c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=xe.observable();this.updateSelectedTerrainViewModel=h=>{u(h),this.dropDownVisible=!1},xe.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let p;if(l(h)&&(p=h.creationCommand()),l(p)&&!l(p.then)){if(e.map&&h.marsOptions){e.map.terrainProvider=p;return}this._globe.terrainProvider=p}else if(l(p)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),b=new k8(p).readyEvent.addEventListener(T=>{if(!g){if(e.map&&h.marsOptions){e.map.terrainProvider=T;return}this._globe.terrainProvider=T,b()}})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Sn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=y(e.selectedImageryProviderViewModel),this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(RAe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var iG=RAe;function oG(e,t){e=Rn(e);let n=new iG(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let p=document.createElement("img");p.className="cesium-baseLayerPicker-itemIcon",p.setAttribute("data-bind","attr: { src: iconUrl }"),p.setAttribute("draggable","false"),h.appendChild(p);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let x=document.createElement("div");x.className="cesium-baseLayerPicker-section",x.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(x);let b=document.createElement("div");b.className="cesium-baseLayerPicker-category",x.appendChild(b);let T=document.createElement("div");T.className="cesium-baseLayerPicker-categoryTitle",T.setAttribute("data-bind","text: name"),b.appendChild(T);let C=document.createElement("div");C.className="cesium-baseLayerPicker-choices",C.setAttribute("data-bind","foreach: providers"),b.appendChild(C);let A=document.createElement("div");A.className="cesium-baseLayerPicker-item",A.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),C.appendChild(A);let E=document.createElement("img");E.className="cesium-baseLayerPicker-itemIcon",E.setAttribute("data-bind","attr: { src: iconUrl }"),E.setAttribute("draggable","false"),A.appendChild(E);let v=document.createElement("div");v.className="cesium-baseLayerPicker-itemLabel",v.setAttribute("data-bind","text: name"),A.appendChild(v),xe.applyBindings(n,i),xe.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(D){i.contains(D.target)||r.contains(D.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(oG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});oG.prototype.isDestroyed=function(){return!1};oG.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._element),xe.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var rG=oG;function MAe(e){let t=e.creationFunction;l(t.canExecute)||(t=Sn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=y(e.category,""),this.marsOptions=e.marsOptions,xe.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(MAe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var gs=MAe;function FEt(){let e=[],t=devicePixelRatio>=2;return e.push(new gs({name:"Bing Maps Aerial",iconUrl:nn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return t0({style:e0.AERIAL})}})),e.push(new gs({name:"Bing Maps Aerial with Labels",iconUrl:nn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return t0({style:e0.AERIAL_WITH_LABELS})}})),e.push(new gs({name:"Bing Maps Roads",iconUrl:nn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return t0({style:e0.ROAD})}})),e.push(new gs({name:"ArcGIS World Imagery",iconUrl:nn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at
https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return Qy.fromBasemapType(Hm.SATELLITE,{enablePickFeatures:!1})}})),e.push(new gs({name:"ArcGIS World Hillshade",iconUrl:nn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at
https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return Qy.fromBasemapType(Hm.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new gs({name:"Esri World Ocean",iconUrl:nn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at
https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return Qy.fromBasemapType(Hm.OCEANS,{enablePickFeatures:!1})}})),e.push(new gs({name:"Open\xADStreet\xADMap",iconUrl:nn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world.
http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new w0({url:"https://tile.openstreetmap.org/"})}})),e.push(new gs({name:"Stadia x Stamen Watercolor",iconUrl:nn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map.
https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new w0({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`&copy; <a href="https://stamen.com/" target="_blank">Stamen Design</a>
&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
&copy; <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new gs({name:"Stadia x Stamen Toner",iconUrl:nn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays.
https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new w0({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`&copy; <a href="https://stamen.com/" target="_blank">Stamen Design</a>
&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
&copy; <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new gs({name:"Stadia Alidade Smooth",iconUrl:nn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine.
https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new w0({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
&copy; <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new gs({name:"Stadia Alidade Smooth Dark",iconUrl:nn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine.
https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new w0({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
&copy; <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new gs({name:"Sentinel-2",iconUrl:nn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return Jy.fromAssetId(3954)}})),e.push(new gs({name:"Blue Marble",iconUrl:nn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return Jy.fromAssetId(3845)}})),e.push(new gs({name:"Earth at night",iconUrl:nn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return Jy.fromAssetId(3812)}})),e.push(new gs({name:"Natural Earth\xA0II",iconUrl:nn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast.
http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return vb.fromUrl(nn("Assets/Textures/NaturalEarthII"))}})),e}var sG=FEt;function BEt(){let e=[];return e.push(new gs({name:"WGS84 Ellipsoid",iconUrl:nn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new zE({ellipsoid:ee.WGS84})}})),e.push(new gs({name:"Cesium World Terrain",iconUrl:nn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return RS({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var aG=BEt;function cG(e,t){l(t)||(t=document.body),t=Rn(t);let n=this,i=xe.observable(Ir.fullscreen),o=xe.observable(Ir.enabled),r=t.ownerDocument;this.isFullscreen=void 0,xe.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,xe.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Ir.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Sn(function(){Ir.fullscreen?Ir.exitFullscreen():Ir.requestFullscreen(n._fullscreenElement)},xe.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=y(Rn(e),r.body),this._callback=function(){i(Ir.fullscreen)},r.addEventListener(Ir.changeEventName,this._callback)}Object.defineProperties(cG.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});cG.prototype.isDestroyed=function(){return!1};cG.prototype.destroy=function(){document.removeEventListener(Ir.changeEventName,this._callback),ue(this)};var lG=cG;var kEt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",VEt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function uG(e,t){e=Rn(e);let n=new lG(t,e);n._exitFullScreenPath=VEt,n._enterFullScreenPath=kEt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),xe.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(uG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});uG.prototype.isDestroyed=function(){return!1};uG.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var fG=uG;var LAe=1e3;function sd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new NS({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new me,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=FAe,this._handleArrowUp=NAe;let t=this;this._suggestionsVisible=xe.pureComputed(function(){let o=xe.getObservable(t,"_suggestions")().length>0,r=xe.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Sn(function(i){if(i=y(i,Jb.SEARCH),t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)jEt(t);else return GEt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?NAe(t):r?FAe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;VAe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=y(e.autocomplete,!0),this.destinationFound=y(e.destinationFound,sd.flyToDestination),this._focusTextbox=!1,xe.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=xe.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){sd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,xe.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,xe.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,xe.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(sd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});sd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function NAe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],sd._adjustSuggestionsScroll(e,n)}function FAe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],sd._adjustSuggestionsScroll(e,i)}function UEt(e,t){let n=l(t)?t.availability:void 0;return l(n)?kE(t,[e]).then(function(i){return e=i[0],e.height+=LAe,e}):(e.height+=LAe,Promise.resolve(e))}function zEt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?P.equalsEpsilon(t.south,t.north,P.EPSILON7)&&P.equalsEpsilon(t.east,t.west,P.EPSILON7)?t=ae.center(t):a=VE(t,n):t=i.cartesianToCartographic(t),l(a)||(a=UEt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:F.IDENTITY})})}async function HEt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function GEt(e,t,n){let i=e._searchText;if(kAe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await HEt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,Q$(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=BAe(e,GP.getCreditsFromResult(s[0]));l(a)||Z$(e,t[o].credit);return}e._searchText=`${i} (not found)`}function Z$(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function BAe(e,t){return l(t)&&t.forEach(n=>Z$(e,n)),t}function Q$(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function WEt(e,t){let n=Rn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function jEt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function kAe(e){return/^\s*$/.test(e)}function VAe(e){xe.getObservable(e,"_suggestions").removeAll()}async function qEt(e){if(!e.autoComplete)return;let t=e._searchText;if(VAe(e),Q$(e),!kAe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,Jb.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=GP.getCreditsFromResult(r);o=o&&!l(s),BAe(e,s)}),o&&Z$(e,n.credit)}if(e._suggestions.length>=5)return}}sd.flyToDestination=zEt;sd._updateSearchSuggestions=qEt;sd._adjustSuggestionsScroll=WEt;sd.prototype.isDestroyed=function(){return!1};sd.prototype.destroy=function(){return Q$(this),ue(this)};var dG=sd;var YEt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",XEt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function hG(e){let t=Rn(e.container),n=new dG(e);n._startSearchPath=YEt,n._stopSearchPath=XEt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),xe.applyBindings(n,i),xe.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},Ht.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(hG.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});hG.prototype.isDestroyed=function(){return!1};hG.prototype.destroy=function(){let e=this._container;return Ht.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),xe.cleanNode(this._form),xe.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var mG=hG;function UAe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Sn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",xe.track(this,["tooltip"])}Object.defineProperties(UAe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var pG=UAe;function _G(e,t,n){e=Rn(e);let i=new pG(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(_G.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});_G.prototype.isDestroyed=function(){return!1};_G.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var gG=_G;function KEt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function HAe(e,t){xe.track(e);for(let n=0;n<e.sublayers.length;n++)HAe(e.sublayers[n],t)}function yG(e){return e.modelName==="FullModel"}function GAe(e){return e.modelName==="Overview"}function WAe(e){return GAe(e)||yG(e)}function zAe(e,t){if(WAe(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:xe.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function $Et(e,t){if(WAe(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");yG(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function ZEt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function QEt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:xe.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:xe.observable(!0),index:-1}],currentLayer:xe.observable(),expandClickHandler:KEt,setOptionDisable:function(i,o){xe.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){$Et(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){HAe(n[i],this.viewModel);let o=zAe(n[i],this.viewModel);l(o)&&(GAe(o)||!l(this.viewModel.defaultLayer)&&yG(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=zAe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=yG(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return ZEt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var xG=QEt;function JEt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=`
<h3>Building explorer</h3>
<select
data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer"
></select>
<div id="bsl-wrapper">
<h3>Select Level</h3>
<select data-bind="options: levels, value: currentLevel"></select>
<h3>Disciplines & Categories</h3>
<ul class="layersList" data-bind="foreach: sublayers">
<ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
<li>
<div class="li-wrapper">
<span
class="expandItem"
data-bind="click: $root.expandClickHandler"
>+</span
>
<input
type="checkbox"
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
/>
<label data-bind="attr: { for: name}">
<span data-bind="text: name"></span>
</label>
</div>
<ul class="nested" data-bind="attr: { id: name + '-expander'}">
<li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
<div class="li-wrapper">
<input
type="checkbox"
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
/>
<label data-bind="attr: { for: name}">
<span data-bind="text: name"></span>
</label>
</div>
</li>
</ul>
</li>
</ul>
</ul>
</div>`,n.appendChild(i);let o=new xG(t);xe.track(o),xe.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var jAe=JEt;var eSt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",tSt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function J$(){this._cameraClicked=new me,this._closeClicked=new me,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",xe.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,xe.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?tSt:eSt}}),xe.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}J$.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(J$.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var bG=J$;function TG(e){e=Rn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="&times;",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new bG;xe.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=nn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=Va(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let p=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let x=window.getComputedStyle(g);if(x!==null){let b=x["background-color"],T=z.fromCssColorString(b);l(T)&&T.alpha!==0&&(p=x["background-color"])}}t.style["background-color"]=p;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(TG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});TG.prototype.isDestroyed=function(){return!1};TG.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var CG=TG;function qAe(){this.showInstructions=!1;let e=this;this._command=Sn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Sn(function(){e._touch=!1}),this._showTouch=Sn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",xe.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(qAe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var AG=qAe;function EG(e){let t=Rn(e.container),n=new AG,i=y(e.instructionsInitiallyVisible,!1);n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=nn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=nn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let p=document.createElement("div");p.className="cesium-touch-navigation-help cesium-navigation-help-instructions",p.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),p.innerHTML=` <table> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${nn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(p),xe.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(EG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});EG.prototype.isDestroyed=function(){return!1};EG.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var SG=EG;function eZ(e){this._scene=e.scene,this.lowFrameRateMessage=y(e.lowFrameRateMessage,"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers."),this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,xe.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Sn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=E8.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(eZ.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});eZ.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var vG=eZ;function wG(e){let t=Rn(e.container),n=new vG(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="&times;",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),xe.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(wG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});wG.prototype.isDestroyed=function(){return!1};wG.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var DG=wG;function IG(e){this._scene=e,this._orthographic=e.camera.frustum instanceof an,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,xe.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;xe.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Sn(function(){t.sceneMode===ne.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new xr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ne.SCENE2D||t._scene.camera.frustum instanceof an}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Sn(function(){t.sceneMode!==ne.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Sn(function(){t.sceneMode!==ne.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ne}Object.defineProperties(IG.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});IG.prototype.isDestroyed=function(){return!1};IG.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var PG=IG;var nSt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",iSt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function OG(e,t){e=Rn(e);let n=new PG(t);n._perspectivePath=nSt,n._orthographicPath=iSt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),xe.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(OG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});OG.prototype.isDestroyed=function(){return!1};OG.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var RG=OG;function MG(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new xr,this._eventHelper.add(e.morphStart,i),this._duration=y(t,2),this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",xe.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,xe.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ne.SCENE2D?n.tooltip2D:o===ne.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Sn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Sn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Sn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Sn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ne}Object.defineProperties(MG.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});MG.prototype.isDestroyed=function(){return!1};MG.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var LG=MG;var oSt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",rSt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",sSt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function NG(e,t,n){e=Rn(e);let i=new LG(t,n);i._globePath=oSt,i._flatMapPath=rSt,i._columbusViewPath=sSt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),xe.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(NG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});NG.prototype.isDestroyed=function(){return!1};NG.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var FG=NG;var aSt=new U,BG="-1000px";function p1(e,t,n){this._scene=e,this._screenPositionX=BG,this._screenPositionY=BG,this._tweens=e.tweens,this._container=y(n,document.body),this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,xe.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,xe.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),xe.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return Wi.worldToWindowCoordinates(e,i,o)}}p1.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,aSt);if(!l(e))this._screenPositionX=BG,this._screenPositionY=BG;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};p1.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:Jr.EXPONENTIAL_OUT})};p1.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:Jr.EXPONENTIAL_OUT})};Object.defineProperties(p1.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var kG=p1;function VG(e,t){e=Rn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new kG(t,this._element,this._container);this._viewModel=c,xe.applyBindings(this._viewModel,this._element)}Object.defineProperties(VG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});VG.prototype.isDestroyed=function(){return!1};VG.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),ue(this)};var UG=VG;function lT(e,t,n){this._color=e,this._height=t,this._base=y(n,0)}lT.prototype.getHeight=function(){return this._height};lT.prototype.getBase=function(){return this._base};lT.prototype.getStartTime=function(){return this._start};lT.prototype.getStopTime=function(){return this._stop};lT.prototype.setRange=function(e,t){this._start=e,this._stop=t};lT.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=$.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=$.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var zG=lT;function YAe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new z(.5,.5,.5,1),this.backgroundColor=i||new z(0,0,0,0)}YAe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=$.addSeconds(t.startJulian,t.duration,new $);if($.lessThan(n,o)&&$.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if($.lessThanOrEquals(n,r)&&$.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=$.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new $);!l(a)&&$.greaterThanOrEquals(u,n)?a=s:!l(c)&&$.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var HG=YAe;var tZ=1e12,ad={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},sl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},P0=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],cSt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function al(e,t){e=Rn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=ad.none,this._touchMode=sl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=lSt(this),this._onMouseUp=uSt(this),this._onMouseMove=fSt(this),this._onMouseWheel=dSt(this),this._onTouchStart=hSt(this),this._onTouchMove=pSt(this),this._onTouchEnd=mSt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}al.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};al.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};al.prototype.isDestroyed=function(){return!1};al.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};al.prototype.addHighlightRange=function(e,t,n){let i=new zG(e,t,n);return this._highlightRanges.push(i),this.resize(),i};al.prototype.addTrack=function(e,t,n,i){let o=new HG(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};al.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=$.secondsDifference(t,e),this._clock&&this._clock.clockRange!==Zr.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=$.secondsDifference(o,i),s=$.secondsDifference(i,this._startJulian),a=$.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=$.addSeconds(this._endJulian,s,new $),this._startJulian=i,this._timeBarSecondsSpan=$.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=$.addSeconds(this._startJulian,a,new $),this._endJulian=o,this._timeBarSecondsSpan=$.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};al.prototype.zoomFrom=function(e){let t=$.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo($.addSeconds(this._startJulian,t-t*e,new $),$.addSeconds(this._endJulian,n*e-n,new $))};function nZ(e){return e<10?`0${e.toString()}`:e.toString()}al.prototype.makeLabel=function(e){let t=$.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${cSt[t.month-1]} ${t.day} ${t.year} ${nZ(t.hour)}:${nZ(t.minute)}:${nZ(t.second)}${i}`};al.prototype.smallestTicInPixels=7;al.prototype._makeTics=function(){let e=this._timeBarEle,t=$.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=$.addSeconds(this._startJulian,a,new $)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=$.addSeconds(this._startJulian,c,new $));let p=this._timeBarEle.clientWidth;p<10&&(p=10);let g=this._startJulian,m=Math.min(h/p*1e-5,.4),x,b=$.toGregorianDate(g);h>31536e4?x=$.fromDate(new Date(Date.UTC(Math.floor(b.year/100)*100,0))):h>31536e3?x=$.fromDate(new Date(Date.UTC(Math.floor(b.year/10)*10,0))):h>86400?x=$.fromDate(new Date(Date.UTC(b.year,0))):x=$.fromDate(new Date(Date.UTC(b.year,b.month,b.day)));let T=$.secondsDifference(this._startJulian,$.addSeconds(x,m,new $)),C=T+h;this._epochJulian=x;function A(k){return Math.floor(T/k)*k}function E(k,W){return Math.ceil(k/W+.5)*W}function v(k){return(k-T)/h}function D(k,W){return k-W*Math.round(k/W)}this._rulerEle.innerHTML=this.makeLabel($.addSeconds(this._endJulian,-a,new $));let R=this._rulerEle.offsetWidth+20;R<30&&(R=180);let O=f;f-=u;let M={startTime:T,startJulian:g,epochJulian:x,duration:h,timeBarWidth:p,getAlpha:v};this._highlightRanges.forEach(function(k){s+=k.render(M)});let N=0,_=0,S=0,w=R/p;w>1&&(w=1),w*=this._timeBarSecondsSpan;let I=-1,L=-1,B=P0.length,H;for(H=0;H<B;++H){let k=P0[H];if(++I,N=k,k>w&&k>f)break;L<0&&p*(k/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(L=I)}if(I>0){for(;I>0;)if(--I,Math.abs(D(N,P0[I]))<1e-5){P0[I]>=f&&(_=P0[I]);break}if(L>=0)for(;L<I;){if(Math.abs(D(_,P0[L]))<1e-5&&P0[L]>=f){S=P0[L];break}++L}}f=O,f>u&&S<1e-5&&Math.abs(f-N)>u&&(S=f,f<=N+u&&(_=0));let V=-999999,G;if(p*(S/this._timeBarSecondsSpan)>=3)for(o=A(S);o<=C;o=E(o,S))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(p*v(o)).toString()}px;"></span>`;if(p*(_/this._timeBarSecondsSpan)>=3)for(o=A(_);o<=C;o=E(o,_))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(p*v(o)).toString()}px;"></span>`;if(p*(N/this._timeBarSecondsSpan)>=2){this._mainTicSpan=N,C+=N,o=A(N);let k=$.computeTaiMinusUtc(x);for(;o<=C;){let W=$.addSeconds(g,o-T,new $);if(N>2.1){let K=$.computeTaiMinusUtc(W);Math.abs(K-k)>.1&&(o+=K-k,W=$.addSeconds(g,o-T,new $))}let q=Math.round(p*v(o)),J=this.makeLabel(W);this._rulerEle.innerHTML=J,G=this._rulerEle.offsetWidth,G<10&&(G=R);let j=q-(G/2-1);j>V?(V=j+G+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${q.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${j.toString()}px;">${J}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${q.toString()}px;"></span>`,o=E(o,N)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),M.y=0,this._trackList.forEach(function(k){k.render(r._context,M),M.y+=k.height})};al.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=$.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo($.addSeconds(this._startJulian,this._timelineDrag,new $),$.addSeconds(this._endJulian,this._timelineDrag,new $)))};al.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=$.addSeconds(this._startJulian,t,new $),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function lSt(e){return function(t){e._mouseMode!==ad.touchOnly&&(t.button===0?(e._mouseMode=ad.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=ad.zoom:e._mouseMode=ad.slide)),t.preventDefault()}}function uSt(e){return function(t){e._mouseMode=ad.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function fSt(e){return function(t){let n;if(e._mouseMode===ad.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===ad.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo($.addSeconds(e._startJulian,i,new $),$.addSeconds(e._endJulian,i,new $))}}else e._mouseMode===ad.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function dSt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;tZ=Math.max(Math.min(Math.abs(n),tZ),1),n/=tZ,e.zoomFrom(Math.pow(1.05,-n))}}function hSt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=ad.touchOnly,n===1?(i=$.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=sl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=sl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=sl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=sl.ignore}}function mSt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===sl.singleTap?(e._touchMode=sl.scrub,e._onTouchMove(t)):e._touchMode===sl.scrub&&e._onTouchMove(t),e._mouseMode=ad.touchOnly,n!==1?e._touchMode=n>0?sl.ignore:sl.none:e._touchMode===sl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function pSt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===sl.singleTap&&(e._touchMode=sl.slideZoom),e._mouseMode=ad.touchOnly,e._touchMode===sl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===sl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=$.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new $)):(n=e._touchState.centerX-r,a=$.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new $)),e.zoomTo(a,$.addSeconds(a,e._timeBarSecondsSpan*c,new $)),e._touchState.centerX=r,e._touchState.spanX=s))}}al.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var GG=al;var QAe=Hr(ZAe(),1);function ySt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function JAe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function xSt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(JAe(),e._locked=!1),e._noSleep.disable(),Ir.exitFullscreen(),n(!1)):(Ir.fullscreen||Ir.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=ySt("landscape")),t.useWebVR=!0,n(!0)))}function WG(e,t){let n=this,i=xe.observable(Ir.enabled),o=xe.observable(!1);this.isVRMode=void 0,xe.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,xe.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Ir.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=xe.observable(!1);this._isOrthographic=void 0,xe.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new xr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof an)}),this._locked=!1,this._noSleep=new QAe.default,this._command=Sn(function(){xSt(n,e,o,r)},xe.getObservable(this,"isVREnabled")),this._vrElement=y(Rn(t),document.body),this._callback=function(){!Ir.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(JAe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Ir.changeEventName,this._callback)}Object.defineProperties(WG.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});WG.prototype.isDestroyed=function(){return!1};WG.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Ir.changeEventName,this._callback),ue(this)};var jG=WG;var bSt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",TSt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function qG(e,t,n){e=Rn(e);let i=new jG(t,n);i._exitVRPath=TSt,i._enterVRPath=bSt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(qG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});qG.prototype.isDestroyed=function(){return!1};qG.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var YG=qG;var eEe=new ce;function iEe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function CSt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function ASt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function tEe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=y(n.id,n.primitive.id);if(i instanceof ar)return i;if(n instanceof sa)return new ar({name:ASt(n),description:CSt(n),feature:n})}if(l(e.scene.globe))return vSt(e,t.position)}var ESt=new $;function sZ(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;$.equals(i,o)&&(o=$.addSeconds(i,P.EPSILON2,ESt)),e.updateFromClock(),e.zoomTo(i,o)}}}var SSt=new d;function vSt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new ar({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=nEe();return}let a=s[0],c=new ar({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,SSt);c.position=new _l(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=nEe())}),r}function nEe(){return new ar({id:"None",description:"No features found."})}function wSt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,p=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=p),l(i)&&(i.container.style.visibility=p),l(o)&&(o.container.style.visibility=p),l(r)&&(r.container.style.visibility=p),l(s)&&(s.container.style.visibility=p),l(a)&&(a.container.style.visibility=p),l(c)&&(c.container.style.visibility=p),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=p),l(f)&&(f.container.style.visibility=p),l(h)&&(h.container.style.visibility=p),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function Ki(e,t){e=Rn(e),t=y(t,y.EMPTY_OBJECT);let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=y(t.scene3DOnly,!1),c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new ym,u=new G8(c),f=!0);let h=new qH(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),p=h.scene,g=new xr;g.add(c.onTick,Ki.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let W=document.createElement("div");W.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(W),m=new UG(W,p)}let x;if(!l(t.infoBox)||t.infoBox!==!1){let W=document.createElement("div");W.className="cesium-viewer-infoBoxContainer",o.appendChild(W),x=new CG(W);let q=x.viewModel;g.add(q.cameraClicked,Ki.prototype._onInfoBoxCameraClicked,this),g.add(q.closeClicked,Ki.prototype._onInfoBoxClockClicked,this)}let b=document.createElement("div");b.className="cesium-viewer-toolbar",o.appendChild(b);let T;if(!l(t.geocoder)||t.geocoder!==!1){let W=document.createElement("div");W.className="cesium-viewer-geocoderContainer",b.appendChild(W);let q;typeof t.geocoder=="string"?q=[new NS({scene:p,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(q=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),T=new mG({container:W,geocoderServices:q,scene:p}),g.add(T.viewModel.search.beforeExecute,Ki.prototype._clearObjects,this)}let C;(!l(t.homeButton)||t.homeButton!==!1)&&(C=new gG(b,p),l(T)&&g.add(C.viewModel.command.afterExecute,function(){let W=T.viewModel;W.searchText="",W.isSearchInProgress&&W.search()}),g.add(C.viewModel.command.beforeExecute,Ki.prototype._clearTrackedObject,this));let A;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(A=new FG(b,p));let E;t.projectionPicker&&(E=new RG(b,p));let v,D;if(n){let W=y(t.imageryProviderViewModels,sG()),q=y(t.terrainProviderViewModels,aG());v=new rG(b,{globe:p.globe,imageryProviderViewModels:W,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:q,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),D=b.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(v.viewModel.selectedImagery=void 0),p.imageryLayers.removeAll(),p.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(v.viewModel.selectedTerrain=void 0),p.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(p.globe.depthTestAgainstTerrain=!0),p.setTerrain(t.terrain));let R;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let W=!0;try{if(l(window.localStorage)){let q=window.localStorage.getItem("cesium-hasSeenNavHelp");l(q)&&q?W=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}R=new SG({container:b,instructionsInitiallyVisible:y(t.navigationInstructionsInitiallyVisible,W)})}let O;if(!l(t.animation)||t.animation!==!1){let W=document.createElement("div");W.className="cesium-viewer-animationContainer",o.appendChild(W),O=new Q8(W,new J8(u))}let M;if(!l(t.timeline)||t.timeline!==!1){let W=document.createElement("div");W.className="cesium-viewer-timelineContainer",o.appendChild(W),M=new GG(W,c),M.addEventListener("settime",iEe,!1),M.zoomTo(c.startTime,c.stopTime)}let N,_,S;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(S=document.createElement("div"),S.className="cesium-viewer-fullscreenContainer",o.appendChild(S),N=new fG(S,t.fullscreenElement),_=Va(N.viewModel,"isFullscreenEnabled",function(W){S.style.display=W?"block":"none",l(M)&&(M.container.style.right=`${S.clientWidth}px`,M.resize())}));let w,I,L;if(t.vrButton){let W=document.createElement("div");W.className="cesium-viewer-vrContainer",o.appendChild(W),w=new YG(W,p,t.fullScreenElement),I=Va(w.viewModel,"isVREnabled",function(q){W.style.display=q?"block":"none",l(N)&&(W.style.right=`${S.clientWidth}px`),l(M)&&(M.container.style.right=`${W.clientWidth}px`,M.resize())}),L=Va(w.viewModel,"isVRMode",function(q){wSt(i,q)})}this._baseLayerPickerDropDown=D,this._fullscreenSubscription=_,this._vrSubscription=I,this._vrModeSubscription=L,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=x,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=b,this._homeButton=C,this._sceneModePicker=A,this._projectionPicker=E,this._baseLayerPicker=v,this._navigationHelpButton=R,this._animation=O,this._timeline=M,this._fullscreenButton=N,this._vrButton=w,this._geocoder=T,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(x)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new me;let B=this._cesiumWidget.dataSources,H=this._cesiumWidget.dataSourceDisplay;g.add(B.dataSourceAdded,Ki.prototype._onDataSourceAdded,this),g.add(B.dataSourceRemoved,Ki.prototype._onDataSourceRemoved,this),g.add(p.postUpdate,Ki.prototype.resize,this);let V=B.length;for(let W=0;W<V;W++)this._dataSourceAdded(B,B.get(W));this._dataSourceAdded(void 0,H.defaultDataSource),g.add(B.dataSourceAdded,Ki.prototype._dataSourceAdded,this),g.add(B.dataSourceRemoved,Ki.prototype._dataSourceRemoved,this);function G(W){let q=tEe(i,W);l(q)?Y.getValueOrUndefined(q.position,i.clock.currentTime)?i.trackedEntity=q:i.zoomTo(q):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function k(W){i.selectedEntity=tEe(i,W)}h.screenSpaceEventHandler.setInputAction(k,bn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(G,bn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(Ki.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,sZ(this._timeline,e))}}});Ki.prototype.extend=function(e,t){e(this,t)};Ki.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,p=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,x=this._vrButton,b=c.container,T=b.style;p=b.clientHeight+3,T.left=`${f}px`;let C=0;l(m)&&(C+=m.container.clientWidth),l(x)&&(C+=x.container.clientWidth),T.right=`${C}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${p}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};Ki.prototype.forceResize=function(){this._lastWidth=0,this.resize()};Ki.prototype.render=function(){this._cesiumWidget.render()};Ki.prototype.isDestroyed=function(){return!1};Ki.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(bn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(bn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",iEe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};Ki.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Ki.prototype._onEntityCollectionChanged,this)};Ki.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Ki.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};Ki.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};Ki.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,eEe)!==ct.FAILED?n=eEe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=y(o.name,o.id),a.description=Y.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};Ki.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};Ki.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};Ki.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Ki.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};Ki.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};Ki.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&sZ(this.timeline,e)};Ki.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&sZ(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Ki.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Ki.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};Ki.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};Ki.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var oEe=Ki;function DSt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new Y8(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var rEe=DSt;function ISt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new nG(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var sEe=ISt;function PSt(e,t){t=y(t,y.EMPTY_OBJECT);let n=!0,i=y(t.flyToOnDrop,!0),o=new me,r=y(t.clearOnDrop,!0),s=y(t.dropTarget,e.container),a=y(t.clampToGround,!0),c=t.proxy;s=Rn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){aEe(s,u),s=f,aZ(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?aZ(s,u):aEe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){uT(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,p=h.length;for(let g=0;g<p;g++){let m=h[g],x=new FileReader;x.onload=OSt(e,m,c,a),x.onerror=RSt(e,m),x.readAsText(m)}}aZ(s,u),e.destroy=m8(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function uT(e){e.stopPropagation(),e.preventDefault()}function aEe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",uT,!1),n.removeEventListener("dragover",uT,!1),n.removeEventListener("dragexit",uT,!1))}function aZ(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",uT,!1),e.addEventListener("dragover",uT,!1),e.addEventListener("dragexit",uT,!1)}function OSt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=U3.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=Tb.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=LE.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=jV.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function RSt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var cEe=PSt;function MSt(e,t){t=y(t,y.EMPTY_OBJECT);let n=new DG({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var lEe=MSt;function uEe(e){let t=e.split(`
`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c}
`}return i}function cd(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=xe.observable();return xe.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=uEe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===zi.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===zi.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===zi.CYLINDER}}),n({name:"boundsBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){t.boundsBoxMaxX=t._voxelPrimitive.maxBounds.x}}),n({name:"boundsBoxMinX",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){t.boundsBoxMinX=t._voxelPrimitive.minBounds.x}}),n({name:"boundsBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){t.boundsBoxMaxY=t._voxelPrimitive.maxBounds.y}}),n({name:"boundsBoxMinY",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){t.boundsBoxMinY=t._voxelPrimitive.minBounds.y}}),n({name:"boundsBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){t.boundsBoxMaxZ=t._voxelPrimitive.maxBounds.z}}),n({name:"boundsBoxMinZ",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){t.boundsBoxMinZ=t._voxelPrimitive.minBounds.z}}),n({name:"boundsEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){t.boundsEllipsoidMaxLongitude=t._voxelPrimitive.maxBounds.x}}),n({name:"boundsEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){t.boundsEllipsoidMinLongitude=t._voxelPrimitive.minBounds.x}}),n({name:"boundsEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){t.boundsEllipsoidMaxLatitude=t._voxelPrimitive.maxBounds.y}}),n({name:"boundsEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){t.boundsEllipsoidMinLatitude=t._voxelPrimitive.minBounds.y}}),n({name:"boundsEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){t.boundsEllipsoidMaxHeight=t._voxelPrimitive.maxBounds.z}}),n({name:"boundsEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){t.boundsEllipsoidMinHeight=t._voxelPrimitive.minBounds.z}}),n({name:"boundsCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){t.boundsCylinderMaxRadius=t._voxelPrimitive.maxBounds.x}}),n({name:"boundsCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){t.boundsCylinderMinRadius=t._voxelPrimitive.minBounds.x}}),n({name:"boundsCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){t.boundsCylinderMaxHeight=t._voxelPrimitive.maxBounds.y}}),n({name:"boundsCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){t.boundsCylinderMinHeight=t._voxelPrimitive.minBounds.y}}),n({name:"boundsCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){t.boundsCylinderMaxAngle=t._voxelPrimitive.maxBounds.z}}),n({name:"boundsCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){t.boundsCylinderMinAngle=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.translationX=F.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.translationY=F.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.translationZ=F.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.scaleX=F.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.scaleY=F.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)},getPrimitiveFunction:function(){t.scaleZ=F.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&op(t)}})}var LSt=new d,NSt=new d,FSt=new Wa,BSt=new Z;function op(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,LSt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,NSt),i=FSt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=Z.fromHeadingPitchRoll(i,BSt),r=Z.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=F.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(cd.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),l(e)){this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=uEe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,op(t)}}}});cd.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};cd.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};cd.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};cd.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};cd.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};cd.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};cd.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new gS({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};cd.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(`
`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(`
`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};cd.prototype.isDestroyed=function(){return!1};cd.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};var XG=cd;function KG(e,t){e=Rn(e);let n=document.createElement("div"),i=new XG(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let s=bc.createSection,a=bc.createCheckbox,c=bc.createRangeInput,u=bc.createButton,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),p=s(r,"Bounds","boundsVisible","toggleBounds"),g=s(r,"Clipping","clippingVisible","toggleClipping"),m=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let x=10,b=10,T=P.PI;h.appendChild(c("Translation X","translationX",-x,+x)),h.appendChild(c("Translation Y","translationY",-x,+x)),h.appendChild(c("Translation Z","translationZ",-x,+x)),h.appendChild(c("Scale X","scaleX",0,+b)),h.appendChild(c("Scale Y","scaleY",0,+b)),h.appendChild(c("Scale Z","scaleZ",0,+b)),h.appendChild(c("Heading","angleX",-T,+T)),h.appendChild(c("Pitch","angleY",-T,+T)),h.appendChild(c("Roll","angleZ",-T,+T));let C=zi.getMinBounds(zi.BOX),A=zi.getMaxBounds(zi.BOX),E=d.fromElements(zi.getMinBounds(zi.ELLIPSOID).x,zi.getMinBounds(zi.ELLIPSOID).y,-ee.WGS84.maximumRadius,new d),v=d.fromElements(zi.getMaxBounds(zi.ELLIPSOID).x,zi.getMaxBounds(zi.ELLIPSOID).y,1e7,new d),D=zi.getMinBounds(zi.CYLINDER),R=zi.getMaxBounds(zi.CYLINDER);KS("Max X","Min X","Max Y","Min Y","Max Z","Min Z","boundsBoxMaxX","boundsBoxMinX","boundsBoxMaxY","boundsBoxMinY","boundsBoxMaxZ","boundsBoxMinZ",C,A,"shapeIsBox",p),KS("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","boundsEllipsoidMaxLongitude","boundsEllipsoidMinLongitude","boundsEllipsoidMaxLatitude","boundsEllipsoidMinLatitude","boundsEllipsoidMaxHeight","boundsEllipsoidMinHeight",E,v,"shapeIsEllipsoid",p),KS("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","boundsCylinderMaxRadius","boundsCylinderMinRadius","boundsCylinderMaxHeight","boundsCylinderMinHeight","boundsCylinderMaxAngle","boundsCylinderMinAngle",D,R,"shapeIsCylinder",p),KS("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ",C,A,"shapeIsBox",g),KS("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight",E,v,"shapeIsEllipsoid",g),KS("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxHeight","clippingCylinderMinHeight","clippingCylinderMaxAngle","clippingCylinderMinAngle",D,R,"shapeIsCylinder",g);let O=document.createElement("div");m.appendChild(O);let M=document.createElement("textarea");M.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),O.className="cesium-cesiumInspector-styleEditor",O.appendChild(M);let N=u("Compile (Ctrl+Enter)","compileShader");O.appendChild(N);let _=document.createElement("label");_.style.display="block",_.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),O.appendChild(_),xe.applyBindings(i,n)}Object.defineProperties(KG.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});KG.prototype.isDestroyed=function(){return!1};KG.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function KS(e,t,n,i,o,r,s,a,c,u,f,h,p,g,m,x){let b=bc.createRangeInput,T=p,C=g,A=x.appendChild(document.createElement("div"));A.setAttribute("data-bind",`if: ${m}`),A.appendChild(b(e,s,T.x,C.x)),A.appendChild(b(t,a,T.x,C.x)),A.appendChild(b(n,c,T.y,C.y)),A.appendChild(b(i,u,T.y,C.y)),A.appendChild(b(o,f,T.z,C.z)),A.appendChild(b(r,h,T.z,C.z))}var $G=KG;function kSt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new $G(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var fEe=kSt;globalThis.CESIUM_VERSION="1.127";var $uo="1.127";export{Np as AlphaMode,d2 as AlphaPipelineStage,fF as AnchorPointDirect,dF as AnchorPointIndirect,Q8 as Animation,J8 as AnimationViewModel,ro as Appearance,di as ApproximateTerrainHeights,mTe as ArcGISTiledElevationTerrainProvider,Hm as ArcGisBaseMapType,Qy as ArcGisMapServerImageryProvider,Yf as ArcGisMapService,en as ArcType,Uc as ArticulationStageType,wt as AssociativeArray,LC as Atmosphere,jF as AtmospherePipelineStage,Bn as AttributeCompression,on as AttributeType,M4 as AutoExposure,J_ as AutomaticUniforms,Vo as Axis,K0 as AxisAlignedBoundingBox,SF as B3dmLoader,EF as B3dmParser,rG as BaseLayerPicker,iG as BaseLayerPickerViewModel,qT as BatchTable,_C as BatchTableHierarchy,Tl as BatchTexture,h2 as BatchTexturePipelineStage,ho as Billboard,Af as BillboardCollection,Ac as BillboardGraphics,ls as BillboardLoadState,$g as BillboardTexture,iO as BillboardVisualizer,_Te as BingMapsGeocoderService,SU as BingMapsImageryProvider,HI as BingMapsStyle,Xa as BlendEquation,Do as BlendFunction,Po as BlendOption,fn as BlendingState,je as BoundingRectangle,ce as BoundingSphere,ct as BoundingSphereState,wC as BoundingVolumeSemantics,fCe as BoxEmitter,Ya as BoxGeometry,eN as BoxGeometryUpdater,eC as BoxGraphics,Oh as BoxOutlineGeometry,Tz as BrdfLutGenerator,Tt as Buffer,xC as BufferLoader,ke as BufferUsage,g2 as CPUStylingPipelineStage,tN as CallbackPositionProperty,Gh as CallbackProperty,lo as Camera,k4 as CameraEventAggregator,Ui as CameraEventType,Cz as CameraFlightPath,U as Cartesian2,d as Cartesian3,oe as Cartesian4,fe as Cartographic,gTe as CartographicGeocoderService,xTe as CatmullRomSpline,pC as Cesium3DContentGroup,Vd as Cesium3DTile,dg as Cesium3DTileBatchTable,ou as Cesium3DTileColorBlendMode,dCe as Cesium3DTileContent,fA as Cesium3DTileContentFactory,Qo as Cesium3DTileContentState,Ws as Cesium3DTileContentType,sa as Cesium3DTileFeature,rm as Cesium3DTileFeatureTable,Bd as Cesium3DTileOptimizationHint,e3 as Cesium3DTileOptimizations,zo as Cesium3DTilePass,hh as Cesium3DTilePassState,Zg as Cesium3DTilePointFeature,Ko as Cesium3DTileRefine,US as Cesium3DTileStyle,r3 as Cesium3DTileStyleEngine,Y8 as Cesium3DTilesInspector,j8 as Cesium3DTilesInspectorViewModel,mCe as Cesium3DTilesVoxelProvider,ws as Cesium3DTileset,a3 as Cesium3DTilesetBaseTraversal,n3 as Cesium3DTilesetCache,aC as Cesium3DTilesetGraphics,o3 as Cesium3DTilesetHeatmap,EA as Cesium3DTilesetMetadata,s3 as Cesium3DTilesetMostDetailedTraversal,l3 as Cesium3DTilesetSkipTraversal,pm as Cesium3DTilesetStatistics,da as Cesium3DTilesetTraversal,f3 as Cesium3DTilesetVisualizer,nG as CesiumInspector,eG as CesiumInspectorViewModel,PS as CesiumTerrainProvider,qH as CesiumWidget,bo as Check,wD as CheckerboardMaterialProperty,g8 as CircleEmitter,DTe as CircleGeometry,ITe as CircleOutlineGeometry,uB as ClassificationModelDrawCommand,m2 as ClassificationPipelineStage,vv as ClassificationPrimitive,zn as ClassificationType,ai as ClearCommand,IC as ClippingPlane,Es as ClippingPlaneCollection,Iw as ClippingPolygon,tm as ClippingPolygonCollection,ym as Clock,Zr as ClockRange,yo as ClockStep,G8 as ClockViewModel,TCe as CloudCollection,KP as CloudType,z as Color,Vc as ColorBlendMode,Wt as ColorGeometryInstanceAttribute,zt as ColorMaterialProperty,AAe as Command,X as ComponentDatatype,aN as Composite3DTileContent,sle as CompositeEntityCollection,OD as CompositeMaterialProperty,Oa as CompositePositionProperty,jc as CompositeProperty,fO as CompressedTextureBuffer,Al as ComputeCommand,sU as ComputeEngine,p8 as ConditionsExpression,CCe as ConeEmitter,_l as ConstantPositionProperty,$n as ConstantProperty,MF as ConstantSpline,HB as ContentMetadata,fU as Context,kt as ContextLimits,rk as CoplanarPolygonGeometry,ny as CoplanarPolygonGeometryLibrary,kd as CoplanarPolygonOutlineGeometry,ki as CornerType,hF as CorrelationGroup,MA as CorridorGeometry,ji as CorridorGeometryLibrary,T3 as CorridorGeometryUpdater,nC as CorridorGraphics,b3 as CorridorOutlineGeometry,vt as Credit,Rz as CreditDisplay,Or as CubeMap,vO as CubeMapFace,kT as CubicRealPolynomial,xi as CullFace,As as CullingVolume,od as CumulusCloud,v3 as CustomDataSource,PTe as CustomHeightmapTerrainProvider,gS as CustomShader,Wg as CustomShaderMode,E2 as CustomShaderPipelineStage,Ox as CustomShaderTranslucencyMode,w3 as CylinderGeometry,NA as CylinderGeometryLibrary,I3 as CylinderGeometryUpdater,iC as CylinderGraphics,D3 as CylinderOutlineGeometry,U3 as CzmlDataSource,$r as DataSource,xm as DataSourceClock,H3 as DataSourceCollection,Pk as DataSourceDisplay,OCe as DebugAppearance,E_ as DebugCameraPrimitive,Q4 as DebugInspector,T8 as DebugModelMatrixPrimitive,RTe as DefaultProxy,Dc as DepthFunction,Vz as DepthPlane,S2 as DequantizationPipelineStage,S_ as DerivedCommand,de as DeveloperError,zz as DeviceOrientationCameraController,RCe as DirectionalLight,WI as DiscardEmptyTileImagePolicy,AU as DiscardMissingTileImagePolicy,Lt as DistanceDisplayCondition,Un as DistanceDisplayConditionGeometryInstanceAttribute,bS as DoubleEndedPriorityQueue,t3 as DoublyLinkedList,Tg as DracoLoader,Qe as DrawCommand,Mg as DynamicAtmosphereLightingType,Lg as DynamicEnvironmentMapManager,XA as DynamicGeometryBatch,ri as DynamicGeometryUpdater,k1 as EarthOrientationParameters,N0 as EarthOrientationParametersSample,Jr as EasingFunction,Nl as EllipseGeometry,yu as EllipseGeometryLibrary,Z3 as EllipseGeometryUpdater,oC as EllipseGraphics,Vf as EllipseOutlineGeometry,ee as Ellipsoid,tg as EllipsoidGeodesic,_a as EllipsoidGeometry,Q3 as EllipsoidGeometryUpdater,rC as EllipsoidGraphics,Pf as EllipsoidOutlineGeometry,dz as EllipsoidPrimitive,$a as EllipsoidRhumbLine,MCe as EllipsoidSurfaceAppearance,os as EllipsoidTangentPlane,zE as EllipsoidTerrainProvider,hy as EllipsoidalOccluder,mD as Empty3DTileContent,Wn as EncodedCartesian3,ar as Entity,Lf as EntityCluster,ha as EntityCollection,Mk as EntityView,me as Event,xr as EventHelper,Cd as Expression,yt as ExpressionNodeType,Nf as ExtrapolationType,Ht as FeatureDetection,Px as FeatureIdPipelineStage,Hz as Fog,Pe as ForEach,E8 as FrameRateMonitor,Gz as FrameState,Wr as Framebuffer,_i as FramebufferManager,$z as FrustumCommands,nS as FrustumGeometry,Lz as FrustumOutlineGeometry,Ir as Fullscreen,fG as FullscreenButton,lG as FullscreenButtonViewModel,Tb as GeoJsonDataSource,wF as GeoJsonLoader,Jb as GeocodeType,mG as Geocoder,GP as GeocoderService,dG as GeocoderViewModel,Ri as GeographicProjection,Qi as GeographicTilingScheme,ut as Geometry,mN as Geometry3DTileContent,Se as GeometryAttribute,mn as GeometryAttributes,LTe as GeometryFactory,Dt as GeometryInstance,Ic as GeometryInstanceAttribute,rn as GeometryOffsetAttribute,kn as GeometryPipeline,D2 as GeometryPipelineStage,md as GeometryType,si as GeometryUpdater,uE as GeometryUpdaterSet,bk as GeometryVisualizer,XE as GetFeatureInfoFormat,az as Globe,Zz as GlobeDepth,TU as GlobeSurfaceShaderSet,lh as GlobeSurfaceTile,$U as GlobeSurfaceTileProvider,ZU as GlobeTranslucency,Qz as GlobeTranslucencyFramebuffer,Wz as GlobeTranslucencyState,lw as GltfBufferViewLoader,uw as GltfDracoLoader,pF as GltfGpmLoader,Nw as GltfGpmLocal,fw as GltfImageLoader,dw as GltfIndexBufferLoader,mw as GltfJsonLoader,om as GltfLoader,au as GltfLoaderUtil,xF as GltfMeshPrimitiveGpmLoader,aF as GltfStructuralMetadataLoader,yw as GltfTextureLoader,xw as GltfVertexBufferLoader,NCe as GoogleEarthEnterpriseImageryProvider,OU as GoogleEarthEnterpriseMapsProvider,b0 as GoogleEarthEnterpriseMetadata,WP as GoogleEarthEnterpriseTerrainData,GTe as GoogleEarthEnterpriseTerrainProvider,r8 as GoogleEarthEnterpriseTileInformation,jTe as GoogleGeocoderService,LS as GoogleMaps,jV as GpxDataSource,z_ as GregorianDate,FCe as GridImageryProvider,kD as GridMaterialProperty,jn as GroundGeometryUpdater,ZT as GroundPolylineGeometry,kh as GroundPolylinePrimitive,pl as GroundPrimitive,yD as GroupMetadata,Jd as HeadingPitchRange,Wa as HeadingPitchRoll,M1 as Heap,qe as HeightReference,ah as HeightmapEncoding,fc as HeightmapTerrainData,UI as HeightmapTessellator,O3 as HermitePolynomialApproximation,vx as HermiteSpline,rw as HilbertOrder,gG as HomeButton,pG as HomeButtonViewModel,yi as HorizontalOrigin,jAe as I3SBuildingSceneLayerExplorer,xG as I3SBuildingSceneLayerExplorerViewModel,ip as I3SDataProvider,S8 as I3SDecoder,v8 as I3SFeature,D8 as I3SField,JP as I3SGeometry,HS as I3SLayer,e1 as I3SNode,M8 as I3SStatistics,L8 as I3SSublayer,O8 as I3SSymbology,RF as I3dmLoader,IF as I3dmParser,WCe as ITwinData,Js as ITwinPlatform,lz as Iau2000Orientation,z1 as Iau2006XysData,vT as Iau2006XysSample,uz as IauOrientationAxes,cz as IauOrientationParameters,mC as ImageBasedLighting,YF as ImageBasedLightingPipelineStage,nx as ImageMaterialProperty,KI as Imagery,hc as ImageryLayer,JU as ImageryLayerCollection,zm as ImageryLayerFeatureInfo,Hl as ImageryProvider,Jn as ImageryState,Ew as Implicit3DTileContent,sw as ImplicitAvailabilityBitstream,aw as ImplicitMetadataView,ss as ImplicitSubdivisionScheme,SC as ImplicitSubtree,_8 as ImplicitSubtreeCache,yN as ImplicitSubtreeMetadata,wA as ImplicitTileCoordinates,vA as ImplicitTileset,Be as IndexDatatype,CG as InfoBox,bG as InfoBoxViewModel,bc as InspectorShared,as as InstanceAttributeSemantic,c2 as InstancingPipelineStage,qTe as InterpolationAlgorithm,im as InterpolationType,jt as Intersect,ti as IntersectionTests,y0 as Intersections2D,qa as Interval,mP as InvertClassification,qh as Ion,C0 as IonGeocodeProviderType,NS as IonGeocoderService,Jy as IonImageryProvider,cf as IonResource,e0 as IonWorldImageryStyle,ze as Iso8601,qz as JobScheduler,ec as JobType,Ng as JsonMetadataTable,$ as JulianDate,dO as KTX2Transcoder,Aa as KeyboardEventModifier,xo as KeyframeNode,qV as KmlCamera,LE as KmlDataSource,YV as KmlLookAt,KV as KmlTour,ZV as KmlTourFlyTo,QV as KmlTourWait,Vx as Label,Yp as LabelCollection,Uh as LabelGraphics,Zo as LabelStyle,Tk as LabelVisualizer,R3 as LagrangePolynomialApproximation,$i as LeapSecond,qCe as Light,Gp as LightingModel,P2 as LightingPipelineStage,VA as LinearApproximation,Sx as LinearSpline,xl as ManagedArray,Ru as MapMode2D,XTe as MapProjection,RU as MapboxImageryProvider,XCe as MapboxStyleImageryProvider,jg as Mars3DEx,Zi as Material,uo as MaterialAppearance,R2 as MaterialPipelineStage,sr as MaterialProperty,P as Math,Mi as Matrix2,Z as Matrix3,F as Matrix4,RP as Megatexture,yF as MeshPrimitiveGpmLocal,Jh as MetadataClass,Rp as MetadataClassProperty,Ft as MetadataComponentType,Vn as MetadataEntity,zN as MetadataEnum,VN as MetadataEnumValue,Xz as MetadataPicking,yf as MetadataPickingPipelineStage,Id as MetadataPipelineStage,mf as MetadataSchema,Tw as MetadataSchemaLoader,vC as MetadataSemantic,Ed as MetadataTable,bN as MetadataTableProperty,lt as MetadataType,_p as MipmapHint,cm as Model,xf as Model3DTileContent,$2 as ModelAlphaOptions,BF as ModelAnimation,FF as ModelAnimationChannel,VF as ModelAnimationCollection,lu as ModelAnimationLoop,sm as ModelAnimationState,$F as ModelArticulation,XF as ModelArticulationStage,JF as ModelClippingPlanesPipelineStage,n2 as ModelClippingPolygonsPipelineStage,Ix as ModelColorPipelineStage,xn as ModelComponents,dB as ModelDrawCommand,pB as ModelDrawCommands,UF as ModelFeature,zF as ModelFeatureTable,og as ModelGraphics,cB as ModelLightingOptions,l2 as ModelMatrixUpdateStage,i2 as ModelNode,J2 as ModelRenderResources,f2 as ModelRuntimeNode,X2 as ModelRuntimePrimitive,gB as ModelSceneGraph,iB as ModelSilhouettePipelineStage,K2 as ModelSkin,sB as ModelSplitterPipelineStage,yB as ModelStatistics,yr as ModelType,Kt as ModelUtility,Ak as ModelVisualizer,pz as Moon,L2 as MorphTargetsPipelineStage,KTe as MorphWeightSpline,Yx as MortonOrder,jB as Multiple3DTileContent,CF as MultisampleFramebuffer,SG as NavigationHelpButton,AG as NavigationHelpButtonViewModel,Vt as NearFarScalar,KCe as NeverTileDiscardPolicy,aB as NodeRenderResources,u2 as NodeStatisticsPipelineStage,sC as NodeTransformationProperty,e4 as OIT,xz as Occluder,to as OffsetGeometryInstanceAttribute,$Te as OpenCageGeocoderService,w0 as OpenStreetMapImageryProvider,W3 as OrderedGroundPrimitiveCollection,Dn as OrientedBoundingBox,an as OrthographicFrustum,qr as OrthographicOffCenterFrustum,ZTe as Packable,QTe as PackableForInterpolation,i1 as Particle,QCe as ParticleBurst,eAe as ParticleEmitter,iAe as ParticleSystem,ve as Pass,Jc as PassState,rg as PathGraphics,Ek as PathVisualizer,l8 as PeliasGeocoderService,ln as PerInstanceColorAppearance,a0 as PerformanceDisplay,DG as PerformanceWatchdog,vG as PerformanceWatchdogViewModel,Pi as PerspectiveFrustum,Wl as PerspectiveOffCenterFrustum,Kz as PickDepth,t4 as PickDepthFramebuffer,n4 as PickFramebuffer,wH as PickedMetadataInfo,h4 as Picking,N2 as PickingPipelineStage,Uy as PinBuilder,Ke as PixelDatatype,nt as PixelFormat,sn as Plane,tk as PlaneGeometry,ok as PlaneGeometryUpdater,JL as PlaneGraphics,ik as PlaneOutlineGeometry,bB as PntsLoader,nA as PntsParser,jH as PointCloud,kg as PointCloudEyeDomeLighting,Bp as PointCloudShading,B2 as PointCloudStylingPipelineStage,cC as PointGraphics,Ys as PointPrimitive,BD as PointPrimitiveCollection,Sk as PointVisualizer,Rg as PolygonGeometry,Gn as PolygonGeometryLibrary,ck as PolygonGeometryUpdater,zh as PolygonGraphics,Za as PolygonHierarchy,ak as PolygonOutlineGeometry,li as PolygonPipeline,Od as Polyline,VD as PolylineArrowMaterialProperty,dm as PolylineCollection,rs as PolylineColorAppearance,UD as PolylineDashMaterialProperty,Oy as PolylineGeometry,wk as PolylineGeometryUpdater,zD as PolylineGlowMaterialProperty,Oc as PolylineGraphics,wa as PolylineMaterialAppearance,Jx as PolylineOutlineMaterialProperty,Bi as PolylinePipeline,Ik as PolylineVisualizer,lk as PolylineVolumeGeometry,_m as PolylineVolumeGeometryLibrary,fk as PolylineVolumeGeometryUpdater,lC as PolylineVolumeGraphics,uk as PolylineVolumeOutlineGeometry,Vh as PositionProperty,py as PositionPropertyArray,_o as PostProcessStage,L4 as PostProcessStageCollection,Lu as PostProcessStageComposite,Qf as PostProcessStageLibrary,Zf as PostProcessStageSampleMode,fS as PostProcessStageTextureCache,gF as PpeMetadata,_Ae as PpeSource,_F as PpeTexture,Pn as Primitive,Ll as PrimitiveCollection,kC as PrimitiveLoadPlan,BC as PrimitiveOutlineGenerator,U2 as PrimitiveOutlinePipelineStage,YT as PrimitivePipeline,lB as PrimitiveRenderResources,Mr as PrimitiveState,z2 as PrimitiveStatisticsPipelineStage,Ne as PrimitiveType,RG as ProjectionPicker,PG as ProjectionPickerViewModel,Y as Property,HD as PropertyArray,NC as PropertyAttribute,oF as PropertyAttributeProperty,yl as PropertyBag,El as PropertyTable,Fg as PropertyTexture,iF as PropertyTextureProperty,gs as ProviderViewModel,tCe as Proxy,dl as QuadraticRealPolynomial,ez as QuadtreeOccluders,sz as QuadtreePrimitive,nz as QuadtreeTile,ba as QuadtreeTileLoadState,oAe as QuadtreeTileProvider,IS as QuantizedMeshTerrainData,mO as QuarticRealPolynomial,Le as Quaternion,NF as QuaternionSpline,bx as Queue,pn as Ray,ae as Rectangle,hE as RectangleCollisionChecker,sE as RectangleGeometry,qs as RectangleGeometryLibrary,dk as RectangleGeometryUpdater,Hh as RectangleGraphics,_A as RectangleOutlineGeometry,Gi as ReferenceFrame,gy as ReferenceProperty,Ve as RenderState,gf as Renderbuffer,vl as RenderbufferFormat,rr as Request,lp as RequestErrorEvent,Ec as RequestScheduler,ei as RequestState,Ts as RequestType,Ee as Resource,wi as ResourceCache,cu as ResourceCacheKey,WN as ResourceCacheStatistics,Ji as ResourceLoader,xt as ResourceLoaderState,Gd as Rotation,se as RuntimeError,xg as S2Cell,ua as SDFSettings,Ra as SampledPositionProperty,Bf as SampledProperty,Zt as Sampler,p_ as ScaledPositionProperty,OH as Scene,aS as SceneFramebuffer,ne as SceneMode,H2 as SceneMode2DPipelineStage,FG as SceneModePicker,LG as SceneModePickerViewModel,Wi as SceneTransforms,B4 as SceneTransitioner,X4 as ScreenSpaceCameraController,Jf as ScreenSpaceEventHandler,bn as ScreenSpaceEventType,Mx as SelectedFeatureIdPipelineStage,UG as SelectionIndicator,kG as SelectionIndicatorViewModel,jD as SensorVolumePortionToDisplay,JC as ShaderBuilder,aU as ShaderCache,pe as ShaderDestination,Q2 as ShaderFunction,Jt as ShaderProgram,Ue as ShaderSource,Z2 as ShaderStruct,l0 as ShadowMap,D_ as ShadowMapShader,yn as ShadowMode,of as ShadowVolumeAppearance,gn as ShowGeometryInstanceAttribute,Eb as Simon1994PlanetaryPositions,nCe as SimplePolylineGeometry,MU as SingleTileImageryProvider,W2 as SkinningPipelineStage,LH as SkyAtmosphere,BH as SkyBox,AH as SpatialNode,mF as Spdcf,jh as SpecularEnvironmentCubeMap,rAe as SphereEmitter,iCe as SphereGeometry,oy as SphereOutlineGeometry,M3 as Spherical,so as Spline,Gr as SplitDirection,BP as Splitter,Xd as StaticGeometryColorBatch,$d as StaticGeometryPerMaterialBatch,oI as StaticGroundGeometryColorBatch,xk as StaticGroundGeometryPerMaterialBatch,Dk as StaticGroundPolylinePerMaterialBatch,rI as StaticOutlineGeometryBatch,Ut as StencilConstants,Hn as StencilFunction,mt as StencilOperation,LF as SteppedSpline,kc as Stereographic,Ax as StorageType,GD as StripeMaterialProperty,bm as StripeOrientation,la as StructuralMetadata,am as StyleCommandsNeeded,sAe as StyleExpression,zH as Sun,Xy as SunLight,Z4 as SunPostProcess,uF as SupportedImageFormats,H8 as SvgPathBindingHandler,bi as TaskProcessor,k8 as Terrain,Um as TerrainData,el as TerrainEncoding,QI as TerrainFillMesh,ch as TerrainMesh,dC as TerrainOffsetProperty,hs as TerrainProvider,xa as TerrainQuantization,po as TerrainState,Rt as Texture,iA as TextureAtlas,cU as TextureCache,pi as TextureMagnificationFilter,bH as TextureManager,$t as TextureMinificationFilter,tD as TexturePacker,mAe as TextureUniform,En as TextureWrap,ep as TileAvailability,If as TileBoundingRegion,KB as TileBoundingS2Cell,ry as TileBoundingSphere,aAe as TileBoundingVolume,V8 as TileCoordinatesImageryProvider,cAe as TileDiscardPolicy,_n as TileEdge,$I as TileImagery,vb as TileMapServiceImageryProvider,GB as TileMetadata,hu as TileOrientedBoundingBox,Oo as TileProviderError,oz as TileReplacementQueue,Kn as TileSelectionResult,lAe as TileState,CB as Tileset3DTileContent,JB as TilesetMetadata,HF as TilesetPipelineStage,oCe as TilingScheme,Xn as TimeConstants,KE as TimeDynamicImagery,VP as TimeDynamicPointCloud,An as TimeInterval,Kr as TimeIntervalCollection,xy as TimeIntervalCollectionPositionProperty,by as TimeIntervalCollectionProperty,qn as TimeStandard,GG as Timeline,zG as TimelineHighlightRange,HG as TimelineTrack,gO as Tipsify,aT as ToggleButtonViewModel,f0 as Tonemapper,eg as TrackingReferenceFrame,Mt as Transforms,ox as TranslationRotationScale,r4 as TranslucentTileClassification,Uw as TridiagonalSystemSolver,nv as TrustedServers,hS as TweenCollection,uU as UniformState,DP as UniformType,dc as UrlTemplateImageryProvider,$uo as VERSION,YG as VRButton,jG as VRButtonViewModel,cCe as VRTheWorldTerrainProvider,pAe as VaryingType,Dp as Vector3DTileBatch,VB as Vector3DTileClampedPolylines,zB as Vector3DTileContent,pg as Vector3DTileGeometry,LB as Vector3DTilePoints,NB as Vector3DTilePolygons,uA as Vector3DTilePolylines,gC as Vector3DTilePrimitive,N3 as VelocityOrientationProperty,Ty as VelocityVectorProperty,oi as VertexArray,Kg as VertexArrayFacade,pt as VertexAttributeSemantic,Ie as VertexFormat,Rr as VerticalExaggeration,q2 as VerticalExaggerationPipelineStage,Fn as VerticalOrigin,rCe as VideoSynchronizer,lS as View,oEe as Viewer,uAe as ViewportQuad,Ar as Visibility,C_e as Visualizer,M_ as VoxelBoxShape,J4 as VoxelCell,yS as VoxelContent,L_ as VoxelCylinderShape,xS as VoxelEllipsoidShape,$G as VoxelInspector,XG as VoxelInspectorViewModel,Zm as VoxelMetadataOrder,Yb as VoxelPrimitive,fAe as VoxelProvider,mH as VoxelRenderResources,dAe as VoxelShape,zi as VoxelShapeType,SH as VoxelTraversal,lCe as VulkanConstants,mk as WallGeometry,cE as WallGeometryLibrary,_k as WallGeometryUpdater,sg as WallGraphics,pk as WallOutlineGeometry,te as WebGLConstants,NU as WebMapServiceImageryProvider,FU as WebMapTileServiceImageryProvider,Ni as WebMercatorProjection,ms as WebMercatorTilingScheme,Cs as WindingOrder,Xw as WireframeIndexGenerator,Y2 as WireframePipelineStage,m4 as _shadersAcesTonemappingStage,K4 as _shadersAdditiveBlend,pP as _shadersAdjustTranslucentFS,rO as _shadersAllMaterialAppearanceFS,sO as _shadersAllMaterialAppearanceVS,p4 as _shadersAmbientOcclusionGenerate,_4 as _shadersAmbientOcclusionModulate,RO as _shadersAspectRampMaterial,nm as _shadersAtmosphereCommon,GF as _shadersAtmosphereStageFS,WF as _shadersAtmosphereStageVS,aO as _shadersBasicMaterialAppearanceFS,cO as _shadersBasicMaterialAppearanceVS,AB as _shadersBillboardCollectionFS,EB as _shadersBillboardCollectionVS,g4 as _shadersBlackAndWhite,y4 as _shadersBloomComposite,bz as _shadersBrdfLutGeneratorFS,$4 as _shadersBrightPass,x4 as _shadersBrightness,MO as _shadersBumpMapMaterial,_2 as _shadersCPUStylingStageFS,p2 as _shadersCPUStylingStageVS,LO as _shadersCheckerboardMaterial,YH as _shadersCloudCollectionFS,XH as _shadersCloudCollectionVS,KH as _shadersCloudNoiseFS,$H as _shadersCloudNoiseVS,o4 as _shadersCompareAndPackTranslucentDepth,Jz as _shadersCompositeOITFS,cS as _shadersCompositeTranslucentClassification,JN as _shadersComputeIrradianceFS,eF as _shadersComputeRadianceMapFS,b4 as _shadersContrastBias,tF as _shadersConvolveSpecularMapFS,nF as _shadersConvolveSpecularMapVS,x2 as _shadersCustomShaderStageFS,y2 as _shadersCustomShaderStageVS,jT as _shadersCzmBuiltins,T4 as _shadersDepthOfField,Fz as _shadersDepthPlaneFS,Bz as _shadersDepthPlaneVS,C4 as _shadersDepthView,hAe as _shadersDepthViewPacked,NO as _shadersDotMaterial,A4 as _shadersEdgeDetection,FO as _shadersElevationBandMaterial,BO as _shadersElevationContourMaterial,kO as _shadersElevationRampMaterial,nP as _shadersEllipsoidFS,C8 as _shadersEllipsoidSurfaceAppearanceFS,A8 as _shadersEllipsoidSurfaceAppearanceVS,iP as _shadersEllipsoidVS,v4 as _shadersFXAA,R4 as _shadersFXAA3_11,VO as _shadersFadeMaterial,b2 as _shadersFeatureIdStageFS,T2 as _shadersFeatureIdStageVS,E4 as _shadersFilmicTonemapping,Fb as _shadersGaussianBlur1D,v2 as _shadersGeometryStageFS,w2 as _shadersGeometryStageVS,xU as _shadersGlobeFS,bU as _shadersGlobeVS,UO as _shadersGridMaterial,zI as _shadersGroundAtmosphere,NM as _shadersHSBToRGB,FM as _shadersHSLToRGB,qF as _shadersImageBasedLightingStageFS,o2 as _shadersInstancingStageCommon,r2 as _shadersInstancingStageVS,sH as _shadersIntersectBox,rH as _shadersIntersectClippingPlanes,aH as _shadersIntersectCylinder,oH as _shadersIntersectDepth,cH as _shadersIntersectEllipsoid,wP as _shadersIntersectLongitude,pS as _shadersIntersection,iH as _shadersIntersectionUtils,s2 as _shadersLegacyInstancingStageVS,w4 as _shadersLensFlare,I2 as _shadersLightingStageFS,O2 as _shadersMaterialStageFS,hH as _shadersMegatexture,C2 as _shadersMetadataStageFS,A2 as _shadersMetadataStageVS,QF as _shadersModelClippingPlanesStageFS,t2 as _shadersModelClippingPolygonsStageFS,e2 as _shadersModelClippingPolygonsStageVS,ZF as _shadersModelColorStageFS,mB as _shadersModelFS,eB as _shadersModelSilhouetteStageFS,tB as _shadersModelSilhouetteStageVS,oB as _shadersModelSplitterStageFS,hB as _shadersModelVS,D4 as _shadersModifiedReinhardTonemapping,M2 as _shadersMorphTargetsStageVS,I4 as _shadersNightVision,zO as _shadersNormalMapMaterial,dH as _shadersOctree,Mu as _shadersPassThrough,Mb as _shadersPassThroughDepth,S4 as _shadersPbrNeutralTonemapping,ZO as _shadersPerInstanceColorAppearanceFS,QO as _shadersPerInstanceColorAppearanceVS,GT as _shadersPerInstanceFlatColorAppearanceFS,JO as _shadersPerInstanceFlatColorAppearanceVS,AF as _shadersPointCloudEyeDomeLighting,F2 as _shadersPointCloudStylingStageVS,$x as _shadersPointPrimitiveCollectionFS,E3 as _shadersPointPrimitiveCollectionVS,QN as _shadersPolygonSignedDistanceFS,HO as _shadersPolylineArrowMaterial,ZL as _shadersPolylineColorAppearanceVS,rf as _shadersPolylineCommon,GO as _shadersPolylineDashMaterial,QT as _shadersPolylineFS,WO as _shadersPolylineGlowMaterial,QL as _shadersPolylineMaterialAppearanceVS,jO as _shadersPolylineOutlineMaterial,YL as _shadersPolylineShadowVolumeFS,XL as _shadersPolylineShadowVolumeMorphFS,KL as _shadersPolylineShadowVolumeMorphVS,$L as _shadersPolylineShadowVolumeVS,IB as _shadersPolylineVS,V2 as _shadersPrimitiveOutlineStageFS,k2 as _shadersPrimitiveOutlineStageVS,cL as _shadersRGBToHSB,lL as _shadersRGBToHSL,uL as _shadersRGBToXYZ,P4 as _shadersReinhardTonemapping,BU as _shadersReprojectWebMercatorFS,kU as _shadersReprojectWebMercatorVS,qO as _shadersRimLightingMaterial,qw as _shadersSelectedFeatureIdStageCommon,Sv as _shadersShadowVolumeAppearanceFS,FL as _shadersShadowVolumeAppearanceVS,Z0 as _shadersShadowVolumeFS,O4 as _shadersSilhouette,G2 as _shadersSkinningStageVS,LP as _shadersSkyAtmosphereCommon,RH as _shadersSkyAtmosphereFS,MH as _shadersSkyAtmosphereVS,NH as _shadersSkyBoxFS,FH as _shadersSkyBoxVS,YO as _shadersSlopeRampMaterial,XO as _shadersStripeMaterial,kH as _shadersSunFS,VH as _shadersSunTextureFS,UH as _shadersSunVS,lO as _shadersTexturedMaterialAppearanceFS,uO as _shadersTexturedMaterialAppearanceVS,kB as _shadersVector3DTileClampedPolylinesFS,BB as _shadersVector3DTileClampedPolylinesVS,FB as _shadersVector3DTilePolylinesVS,iw as _shadersVectorTileVS,j2 as _shadersVerticalExaggerationStageVS,ZH as _shadersViewportQuadFS,NE as _shadersViewportQuadVS,tH as _shadersVoxelFS,eH as _shadersVoxelUtils,nH as _shadersVoxelVS,$O as _shadersWater,KO as _shadersWaterMaskMaterial,LL as _shadersXYZToRGB,JR as _shadersacesTonemapping,eM as _shadersalphaWeight,tM as _shadersantialias,nM as _shadersapplyHSBShift,iM as _shadersapproximateSphericalCoordinates,oM as _shadersapproximateTanh,rM as _shadersbackFacing,sM as _shadersbranchFreeTernary,aM as _shaderscascadeColor,cM as _shaderscascadeDistance,lM as _shaderscascadeMatrix,uM as _shaderscascadeWeights,fM as _shadersclipPolygons,dM as _shaderscolumbusViewMorph,hM as _shaderscomputeAtmosphereColor,mM as _shaderscomputeGroundAtmosphereScattering,pM as _shaderscomputePosition,_M as _shaderscomputeScattering,lH as _shadersconvertUvToBox,uH as _shadersconvertUvToCylinder,fH as _shadersconvertUvToEllipsoid,gM as _shaderscosineAndSine,yM as _shadersdecompressTextureCoordinates,aR as _shadersdegreesPerRadian,xM as _shadersdepthClamp,cR as _shadersdepthRange,jR as _shadersdepthRangeStruct,bM as _shaderseastNorthUpToEyeCoordinates,TM as _shadersellipsoidContainsPoint,CM as _shadersellipsoidTextureCoordinates,lR as _shadersepsilon1,uR as _shadersepsilon2,fR as _shadersepsilon3,dR as _shadersepsilon4,hR as _shadersepsilon5,mR as _shadersepsilon6,pR as _shadersepsilon7,AM as _shadersequalsEpsilon,EM as _shaderseyeOffset,SM as _shaderseyeToWindowCoordinates,vM as _shadersfastApproximateAtan,wM as _shadersfog,DM as _shadersgammaCorrect,IM as _shadersgeodeticSurfaceNormal,PM as _shadersgetDefaultMaterial,OM as _shadersgetDynamicAtmosphereLightDirection,RM as _shadersgetLambertDiffuse,MM as _shadersgetSpecular,LM as _shadersgetWaterNoise,BM as _shadershue,_R as _shadersinfinity,kM as _shadersinverseGamma,VM as _shadersisEmpty,UM as _shadersisFull,zM as _shaderslatitudeToWebMercatorFraction,GM as _shaderslineDistance,HM as _shaderslinearToSrgb,WM as _shadersluminance,qR as _shadersmaterial,YR as _shadersmaterialInput,jM as _shadersmaximumComponent,qM as _shadersmetersPerPixel,XR as _shadersmodelMaterial,YM as _shadersmodelToWindowCoordinates,KR as _shadersmodelVertexOutput,XM as _shadersmultiplyWithColorBalance,KM as _shadersnearFarScalar,$M as _shadersoctDecode,gR as _shadersoneOverPi,yR as _shadersoneOverTwoPi,ZM as _shaderspackDepth,xR as _shaderspassCesium3DTile,bR as _shaderspassCesium3DTileClassification,TR as _shaderspassCesium3DTileClassificationIgnoreShow,CR as _shaderspassClassification,AR as _shaderspassCompute,ER as _shaderspassEnvironment,SR as _shaderspassGlobe,vR as _shaderspassOpaque,wR as _shaderspassOverlay,DR as _shaderspassTerrainClassification,IR as _shaderspassTranslucent,PR as _shaderspassVoxels,QM as _shaderspbrLighting,JM as _shaderspbrNeutralTonemapping,eL as _shadersphong,OR as _shaderspi,RR as _shaderspiOverFour,MR as _shaderspiOverSix,LR as _shaderspiOverThree,NR as _shaderspiOverTwo,tL as _shadersplaneDistance,nL as _shaderspointAlongRay,FR as _shadersradiansPerDegree,$R as _shadersray,iL as _shadersrayEllipsoidIntersectionInterval,ZR as _shadersraySegment,oL as _shadersraySphereIntersectionInterval,rL as _shadersreadDepth,sL as _shadersreadNonPerspective,aL as _shadersreverseLogDepth,fL as _shadersround,dL as _shaderssaturation,BR as _shaderssceneMode2D,kR as _shaderssceneMode3D,VR as _shaderssceneModeColumbusView,UR as _shaderssceneModeMorphing,hL as _shadersshadowDepthCompare,QR as _shadersshadowParameters,mL as _shadersshadowVisibility,pL as _shaderssignNotZero,zR as _shaderssolarRadius,_L as _shaderssphericalHarmonics,gL as _shaderssrgbToLinear,yL as _shaderstangentToEyeSpaceMatrix,xL as _shaderstextureCube,HR as _shadersthreePiOver2,bL as _shaderstransformPlane,TL as _shaderstranslateRelativeToEye,CL as _shaderstranslucentPhong,AL as _shaderstranspose,GR as _shaderstwoPi,EL as _shadersunpackClippingExtents,SL as _shadersunpackDepth,vL as _shadersunpackFloat,wL as _shadersunpackUint,DL as _shadersvalueTransform,IL as _shadersvertexLogDepth,WR as _shaderswebMercatorMaxLatitude,PL as _shaderswindowToEyeCoordinates,OL as _shaderswriteDepthClamp,RL as _shaderswriteLogDepth,ML as _shaderswriteNonPerspective,ON as addBuffer,TN as addDefaults,DN as addExtensionsRequired,Sd as addExtensionsUsed,px as addPipelineExtras,zs as addToArray,I1 as appendForwardSlash,To as arrayRemoveDuplicates,BT as barycentricCoordinates,No as binarySearch,nn as buildModuleUrl,gH as buildVoxelDrawCommands,He as clone,At as combine,VE as computeFlyToLocationForRectangle,rA as createBillboardPointCallback,Sn as createCommand,sG as createDefaultImageryProviderViewModels,aG as createDefaultTerrainProviderViewModels,vCe as createElevationBandMaterial,DCe as createGooglePhotorealistic3DTileset,Yn as createGuid,Bo as createMaterialPropertyDescriptor,ICe as createOsmBuildingsAsync,le as createPropertyDescriptor,gl as createRawPropertyDescriptor,PCe as createTangentSpaceDebugPrimitive,gAe as createTaskProcessorWorker,oR as createUniform,rR as createUniformArray,n8 as createWorldBathymetryAsync,t0 as createWorldImageryAsync,RS as createWorldTerrainAsync,i8 as decodeGoogleEarthEnterpriseData,UB as decodeVectorPolylinePositions,y as defaultValue,Zl as defer,l as defined,NL as demodernizeShader,Qa as deprecationWarning,ue as destroyObject,Mme as exportKml,CC as findAccessorMinMax,dA as findContentMetadata,hA as findGroupMetadata,WB as findTileMetadata,hw as forEachTextureInMaterial,T_ as formatError,qJ as freezeRenderState,cp as getAbsoluteUri,su as getAccessorByteStride,P1 as getBaseUri,ff as getBinaryAccessor,HH as getClipAndStyleCode,$y as getClippingFunction,Eg as getComponentReader,Rn as getElement,xT as getExtensionFromUri,my as getFilenameFromUri,yH as getImageFromTypedArray,vh as getImagePixels,cr as getJsonFromTypedArray,Kh as getMagic,vH as getMetadataClassProperty,DH as getMetadataProperty,iu as getStringFromTypedArray,Ai as getTimestamp,ci as hasExtension,ag as heightReferenceOnEntityPropertyChanged,rl as isBitSet,bT as isBlobUri,F0 as isCrossOriginUrl,G_ as isDataUri,Sh as isLeapYear,xe as knockout,qS as knockout_3_5_1,z8 as knockout_es5,TT as loadAndExecuteScript,dU as loadCubeMap,bC as loadImageFromTypedArray,eu as loadKTX2,i0 as mergeSort,wN as moveTechniqueRenderStates,IN as moveTechniquesToExtension,hf as numberOfComponentsForType,CT as objectToQuery,Ct as oneTimeWarning,Vg as parseBatchTable,sF as parseFeatureMetadataLegacy,EN as parseGlb,R1 as parseResponseHeaders,rF as parseStructuralMetadata,Zw as pickModel,JTe as pointInsideTriangle,ty as preprocess3DTileContent,_H as processVoxelProperties,Ku as queryToObject,RN as readAccessorPacked,AC as removeExtension,AN as removeExtensionsRequired,TC as removeExtensionsUsed,vN as removePipelineExtras,PN as removeUnusedElements,gx as resizeImageToNextPowerOfTwo,hU as sampleTerrain,kE as sampleTerrainMostDetailed,pT as scaleToGeodeticSurface,kS as srgbToLinear,BL as subdivideArray,Va as subscribeAndEvaluate,LN as updateAccessorComponentTypes,FN as updateVersion,_r as usesExtension,rEe as viewerCesium3DTilesInspectorMixin,sEe as viewerCesiumInspectorMixin,cEe as viewerDragDropMixin,lEe as viewerPerformanceWatchdogMixin,fEe as viewerVoxelInspectorMixin,uCe as webGLConstantToGlslType,m8 as wrapFunction,aA as writeTextToCanvas};