1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a3e6aa9f-a1b2-4f5b-9c76-66c09e2c7a1d",e._sentryDebugIdIdentifier="sentry-dbid-a3e6aa9f-a1b2-4f5b-9c76-66c09e2c7a1d")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9063],{948:(e,t,i)=>{"use strict";i.d(t,{b:()=>s});var r=i(99742);function s(e){if("undefined"!=typeof window&&window.process?.type==="renderer"||void 0!==r&&r.versions?.electron)return!0;let t="undefined"!=typeof navigator&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}},1602:(e,t,i)=>{var r=i(19031);e.exports=function(){return r.Date.now()}},2186:(e,t,i)=>{"use strict";function r(e,t,i){let r=t[0],s=t[1],n=i[3]*r+i[7]*s||1;return e[0]=(i[0]*r+i[4]*s)/n,e[1]=(i[1]*r+i[5]*s)/n,e}function s(e,t,i){let r=t[0],s=t[1],n=t[2],o=i[3]*r+i[7]*s+i[11]*n||1;return e[0]=(i[0]*r+i[4]*s+i[8]*n)/o,e[1]=(i[1]*r+i[5]*s+i[9]*n)/o,e[2]=(i[2]*r+i[6]*s+i[10]*n)/o,e}function n(e,t,i){let r=t[0],s=t[1];return e[0]=i[0]*r+i[2]*s,e[1]=i[1]*r+i[3]*s,e[2]=t[2],e}i.d(t,{B$:()=>r,J4:()=>n,cL:()=>s})},2572:(e,t,i)=>{"use strict";i.d(t,{_:()=>b});var r=i(93032);function s(e){let t;if(e.source&&"webgpu"===e.platformInfo.type)return{...e,vs:void 0,fs:void 0};if(!e.vs)throw Error("no vertex shader");let i=n(e.platformInfo,e.vs);return e.fs&&(t=n(e.platformInfo,e.fs)),{...e,vs:i,fs:t}}function n(e,t){if("string"==typeof t)return t;if("webgpu"===e.type){if(t?.wgsl)return t.wgsl;throw Error("WebGPU does not support GLSL shaders")}if(t?.glsl)return t.glsl;throw Error("WebGL does not support WGSL shaders")}var o=i(12832),a=i(82604);let l=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,"#version 300 es\n"],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],h=[...l,[d("attribute"),"in $1"],[d("varying"),"out $1"]],u=[...l,[d("varying"),"in $1"]];function c(e,t){for(let[i,r]of t)e=e.replace(i,r);return e}function d(e){return RegExp(`\\b${e}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}function f(e,t){let i="";for(let r in e){let s=e[r];if(i+=`void ${s.signature} { 2`,s.header&&(i+=` ${s.header}`),t[r]){let e=t[r];for(let t of(e.sort((e,t)=>e.order-t.order),e))i+=` ${t.injection} 3`}s.footer&&(i+=` ${s.footer}`),i+="}\n"}return i}function p(e){let t={vertex:{},fragment:{}};for(let i of e){let e,r;"string"!=typeof i?r=(e=i).hook:(e={},r=i);let[s,n]=(r=r.trim()).split(":"),o=r.replace(/\(.+/,""),a=Object.assign(e,{signature:n});switch(s){case"vs":t.vertex[o]=a;break;case"fs":t.fragment[o]=a;break;default:throw Error(s)}}return t}var g=i(23237);let _=` 4 5${a.O_} 6`,m=`\ 7precision highp float; 8`;function E(e,t){let{source:i,stage:r,modules:s,hookFunctions:n=[],inject:o={},log:l}=t;(0,g.v)("string"==typeof i,"shader source must be a string");let h="",u=p(n),c={},d={},m={};for(let e in o){let t="string"==typeof o[e]?{injection:o[e],order:0}:o[e],i=/^(v|f)s:(#)?([\w-]+)$/.exec(e);if(i){let r=i[2],s=i[3];r?"decl"===s?d[e]=[t]:m[e]=[t]:c[e]=[t]}else m[e]=[t]}for(let t of"webgpu"!==e.type?s:[]){l&&t.checkDeprecations(i,l),h+=t.getModuleSource(r,"wgsl");let e=t.injections[r];for(let t in e){let i=/^(v|f)s:#([\w-]+)$/.exec(t);if(i){let r="decl"===i[2]?d:m;r[t]=r[t]||[],r[t].push(e[t])}else c[t]=c[t]||[],c[t].push(e[t])}}return h+=_,h=(0,a.bv)(h,r,d)+f(u[r],c)+i,h=(0,a.bv)(h,r,m)}function v(e,t){let{id:i,source:r,stage:s,language:n="glsl",modules:o,defines:l={},hookFunctions:d=[],inject:E={},prologue:v=!0,log:y}=t;(0,g.v)("string"==typeof r,"shader source must be a string");let b="glsl"===n?({name:function(e,t="unnamed"){let i=/#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(e);return i?i[1]:t}(r,void 0),language:"glsl",version:function(e){let t=100,i=e.match(/[^\s]+/g);if(i&&i.length>=2&&"#version"===i[0]){let e=parseInt(i[1],10);Number.isFinite(e)&&(t=e)}if(100!==t&&300!==t)throw Error(`Invalid GLSL version ${t}`);return t}(r)}).version:-1,A=e.shaderLanguageVersion,T=100===b?"#version 100":"#version 300 es",R=r.split("\n").slice(1).join("\n"),S={};
8o.forEach(e=>{Object.assign(S,e.getDefines())}),Object.assign(S,l);let w="";switch(n){case"wgsl":break;case"glsl":w=v?`\ 9${T} 10 11// ----- PROLOGUE ------------------------- 12${function(e){let{id:t,source:i,stage:r}=e;return t&&-1===i.indexOf("SHADER_NAME")?` 13#define SHADER_NAME ${t}_${r} 14 15`:""}({id:i,source:r,stage:s})} 16#define SHADER_TYPE_${s.toUpperCase()} 17${function(e){switch(e?.gpu.toLowerCase()){case"apple":return`\ 18#define APPLE_GPU 19#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 20#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1 21#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1 22`;case"nvidia":return`\ 23#define NVIDIA_GPU 24#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 25`;case"intel":return`\ 26#define INTEL_GPU 27#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 28#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1 29#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1 30`;case"amd":return`\ 31#define AMD_GPU 32`;default:return`\ 33#define DEFAULT_GPU 34#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 35#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1 36#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1 37`}}(e)} 38${"fragment"===s?m:""} 39 40// ----- APPLICATION DEFINES ------------------------- 41 42${function(e={}){let t="";for(let i in e){let r=e[i];(r||Number.isFinite(r))&&(t+=`#define ${i.toUpperCase()} ${e[i]} 43`)}return t}(S)} 44 45`:`${T} 46`}let P=p(d),C={},x={},L={};for(let e in E){let t="string"==typeof E[e]?{injection:E[e],order:0}:E[e],i=/^(v|f)s:(#)?([\w-]+)$/.exec(e);if(i){let r=i[2],s=i[3];r?"decl"===s?x[e]=[t]:L[e]=[t]:C[e]=[t]}else L[e]=[t]}for(let e of o){y&&e.checkDeprecations(R,y),w+=e.getModuleSource(s);let t=e.injections[s];for(let e in t){let i=/^(v|f)s:#([\w-]+)$/.exec(e);if(i){let r="decl"===i[2]?x:L;r[e]=r[e]||[],r[e].push(t[e])}else C[e]=C[e]||[],C[e].push(t[e])}}return w+="// ----- MAIN SHADER SOURCE -------------------------",w+=_,w=(0,a.bv)(w,s,x)+f(P[s],C)+R,w=(0,a.bv)(w,s,L),"glsl"===n&&b!==A&&(w=function(e,t){if(300!==Number(e.match(/^#version[ \t]+(\d+)/m)?.[1]||100))throw Error("luma.gl v9 only supports GLSL 3.00 shader sources");switch(t){case"vertex":return c(e,h);case"fragment":return c(e,u);default:throw Error(t)}}(w,s)),w.trim()}function y(e){return function(t){let i={};for(let r of e){let e=r.getUniforms(t,i);Object.assign(i,e)}return i}}class b{static defaultShaderAssembler;_hookFunctions=[];_defaultModules=[];static getDefaultShaderAssembler(){return b.defaultShaderAssembler=b.defaultShaderAssembler||new b,b.defaultShaderAssembler}addDefaultModule(e){this._defaultModules.find(t=>t.name===("string"==typeof e?e:e.name))||this._defaultModules.push(e)}removeDefaultModule(e){let t="string"==typeof e?e:e.name;this._defaultModules=this._defaultModules.filter(e=>e.name!==t)}addShaderHook(e,t){t&&(e=Object.assign(t,{hook:e})),this._hookFunctions.push(e)}assembleShader(e){let t=this._getModuleList(e.modules),i=this._hookFunctions,r=s(e);return{...function(e){let t=(0,o.KC)(e.modules||[]);return{source:E(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t}),getUniforms:y(t)}}({platformInfo:e.platformInfo,...r,modules:t,hookFunctions:i}),modules:t}}assembleShaderPair(e){let t=s(e),i=this._getModuleList(e.modules),r=this._hookFunctions,{platformInfo:n}=e;return{..."wgsl"===e.platformInfo.shaderLanguage?function(e){let t=(0,o.KC)(e.modules||[]);return{vs:E(e.platformInfo,{...e,source:e.vs,stage:"vertex",modules:t}),fs:E(e.platformInfo,{...e,source:e.fs,stage:"fragment",modules:t}),getUniforms:y(t)}}({platformInfo:n,...t,modules:i,hookFunctions:r}):function(e){let{vs:t,fs:i}=e,r=(0,o.KC)(e.modules||[]);return{vs:v(e.platformInfo,{...e,source:t,stage:"vertex",modules:r}),fs:v(e.platformInfo,{...e,source:i,stage:"fragment",modules:r}),getUniforms:y(r)}}({platformInfo:n,...t,modules:i,hookFunctions:r}),modules:i}}_getModuleList(e=[]){let t=Array(this._defaultModules.length+e.length),i={},s=0;for(let e=0,r=this._defaultModules.length;e<r;++e){let r=this._defaultModules[e],n=r.name;t[s++]=r,i[n]=!0}for(let r=0,n=e.length;r<n;++r){let n=e[r],o=n.name;i[o]||(t[s++]=n,i[o]=!0)}return t.length=s,r.z.instantiateModules(t)}}},2595:(e,t,i)=>{"use strict";i.d(t,{Cc:()=>o,WQ:()=>s,Z0:()=>u,ZF:()=>a,ei:()=>h,l0:()=>l,ze:()=>n});var r=i(43210);function s(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e}function n(e,t){return e[0]=-t[0],e[1]=-t[1],e}function o(e,t,i,r){let s=t[0],n=t[1];return e[0]=s+r*(i[0]-s),e[1]=n+r*(i[1]-n),e}function a(e,t,i){let r=t[0],s=t[1];return e[0]=i[0]*r+i[2]*s,e[1]=i[1]*r+i[3]*s,e}function l(e,t,i){let r=t[0],s=t[1];return e[0]=i[0]*r+i[2]*s+i[4],e[1]=i[1]*r+i[3]*s+i[5],e}function h(e,t,i){let r=t[0],s=t[1];return e[0]=i[0]*r+i[3]*s+i[6],e[1]=i[1]*r+i[4]*s+i[7],e}function u(e,t,i){let r=t[0],s=t[1];return e[0]=i[0]*r+i[4]*s+i[12],e[1]=i[1]*r+i[5]*s+i[13],e}!function(){let e=new r.tb(2);r.tb!=Float32Array&&(e[0]=0,e[1]=0)}()},4917:(e,t,i)=>{var r=i(98825),s=i(1602),n=i(52782),o=Math.max,a=Math.min;e.exports=function(e,t,i){var l,h,u,c,d,f,p=0,g=!1,_=!1,m=!0;if("function"!=typeof e)throw TypeError("Expected a function");function E(t){var i=l,r=h;return l=h=void 0,p=t,c=e.apply(r,i)}function v(e){var i=e-f,r=e-p;return void 0===f||i>=t||i<0||_&&r>=u}function y(){var e,i,r,n=s();if(v(n))return b(n);d=setTimeout(y,(e=n-f,i=n-p,r=t-e,_?a(r,u-i):r))}function b(e){return(d=void 0,m&&l)?E(e):(l=h=void 0,c)}function A(){var e,i=s(),r=v(i);if(l=arguments,h=this,f=i,r){if(void 0===d)return p=e=f,d=setTimeout(y,t),g?E(e):c;if(_)return clearTimeout(d),d=setTimeout(y,t),E(f)}return void 0===d&&(d=setTimeout(y,t)),c}return t=n(t)||0,r(i)&&(g=!!i.leading,u=(_="maxWait"in i)?o(n(i.maxWait)||0,t):u,m="trailing"in i?!!i.trailing:m),A.cancel=function(){void 0!==d&&clearTimeout(d),p=0,l=f=h=d=void 0},A.flush=function(){return void 0===d?c:b(s())},A}},6992:(e,t,i)=>{"use strict";i.d(t,{$A:()=>n,Z0:()=>o,Z8:()=>u,eL:()=>h,ei:()=>a,g7:()=>d,gL:()=>l,jb:()=>f,x6:()=>c,ze:()=>s});var r=i(43210);function s(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function n(e,t,i){let r=t[0],s=t[1],n=t[2],o=i[0],a=i[1],l=i[2];return e[0]=s*l-n*a,e[1]=n*o-r*l,e[2]=r*a-s*o,e}function o(e,t,i){let r=t[0],s=t[1],n=t[2],o=i[3]*r+i[7]*s+i[11]*n+i[15];return o=o||1,e[0]=(i[0]*r+i[4]*s+i[8]*n+i[12])/o,e[1]=(i[1]*r+i[5]*s+i[9]*n+i[13])/o,e[2]=(i[2]*r+i[6]*s+i[10]*n+i[14])/o,e}function a(e,t,i){let r=t[0],s=t[1],n=t[2];return e[0]=r*i[0]+s*i[3]+n*i[6],e[1]=r*i[1]+s*i[4]+n*i[7],e[2]=r*i[2]+s*i[5]+n*i[8],e}function l(e,t,i){let r=i[0],s=i[1],n=i[2],o=i[3],a=t[0],l=t[1],h=t[2],u=s*h-n*l,c=n*a-r*h,d=r*l-s*a,f=s*d-n*c,p=n*u-r*d,g=r*c-s*u,_=2*o;return u*=_,c*=_,d*=_,f*=2,p*=2,g*=2,e[0]=a+u+f,e[1]=l+c+p,e[2]=h+d+g,e}function h(e,t,i,r){let s=[],n=[];return s[0]=t[0]-i[0],s[1]=t[1]-i[1],s[2]=t[2]-i[2],n[0]=s[0],n[1]=s[1]*Math.cos(r)-s[2]*Math.sin(r),n[2]=s[1]*Math.sin(r)+s[2]*Math.cos(r),e[0]=n[0]+i[0],e[1]=n[1]+i[1],e[2]=n[2]+i[2],e}function u(e,t,i,r){let s=[],n=[];return s[0]=t[0]-i[0],s[1]=t[1]-i[1],s[2]=t[2]-i[2],n[0]=s[2]*Math.sin(r)+s[0]*Math.cos(r),n[1]=s[1],n[2]=s[2]*
46Math.cos(r)-s[0]*Math.sin(r),e[0]=n[0]+i[0],e[1]=n[1]+i[1],e[2]=n[2]+i[2],e}function c(e,t,i,r){let s=[],n=[];return s[0]=t[0]-i[0],s[1]=t[1]-i[1],s[2]=t[2]-i[2],n[0]=s[0]*Math.cos(r)-s[1]*Math.sin(r),n[1]=s[0]*Math.sin(r)+s[1]*Math.cos(r),n[2]=s[2],e[0]=n[0]+i[0],e[1]=n[1]+i[1],e[2]=n[2]+i[2],e}function d(e,t){let i=e[0],r=e[1],s=e[2],n=t[0],o=t[1],a=t[2],l=Math.sqrt((i*i+r*r+s*s)*(n*n+o*o+a*a));return Math.acos(Math.min(Math.max(l&&(e[0]*t[0]+e[1]*t[1]+e[2]*t[2])/l,-1),1))}let f=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e};!function(){let e=new r.tb(3);r.tb!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0)}()},7334:(e,t,i)=>{"use strict";i.d(t,{H:()=>em});var r=i(23294),s=i(18394);let n={};class o extends Error{constructor(e,t){super(e),this.reason=t.reason,this.url=t.url,this.response=t.response}reason;url;response}let a=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,l=/^([-\w.]+\/[-\w.+]+)/;function h(e,t){return e.toLowerCase()===t.toLowerCase()}function u(e){let t=a.exec(e);return t?t[1]:""}var c=i(82896);function d(e){return(0,r.Sv)(e)?e.url:(0,r.qf)(e)?("name"in e?e.name:"")||"":"string"==typeof e?e:""}function f(e){if((0,r.Sv)(e)){let t=e.headers.get("content-type")||"",i=(0,c.S3)(e.url);return function(e){let t=l.exec(e);return t?t[1]:e}(t)||u(i)}return(0,r.qf)(e)?e.type||"":"string"==typeof e?u(e):""}async function p(e){var t;if((0,r.Sv)(e))return e;let i={},s=(t=e,(0,r.Sv)(t)?t.headers["content-length"]||-1:(0,r.qf)(t)?t.size:"string"==typeof t?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1);s>=0&&(i["content-length"]=String(s));let n=d(e),o=f(e);o&&(i["content-type"]=o);let a=await m(e);a&&(i["x-first-bytes"]=a),"string"==typeof e&&(e=new TextEncoder().encode(e));let l=new Response(e,{headers:i});return Object.defineProperty(l,"url",{value:n}),l}async function g(e){if(!e.ok)throw await _(e)}async function _(e){let t=(0,c.E1)(e.url),i=`Failed to fetch resource (${e.status}) ${e.statusText}: ${t}`;i=i.length>100?`${i.slice(0,100)}...`:i;let r={reason:e.statusText,url:e.url,response:e};try{let t=e.headers.get("Content-Type");r.reason=!e.bodyUsed&&t?.includes("application/json")?await e.json():await e.text()}catch(e){}return new o(i,r)}async function m(e){if("string"==typeof e)return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let t=e.slice(0,5);return await new Promise(e=>{let i=new FileReader;i.onload=t=>e(t?.target?.result),i.readAsDataURL(t)})}if(e instanceof ArrayBuffer){let t=function(e){let t="",i=new Uint8Array(e);for(let e=0;e<i.byteLength;e++)t+=String.fromCharCode(i[e]);return btoa(t)}(e.slice(0,5));return`data:base64,${t}`}return null}async function E(e,t){if("string"==typeof e){var i;let r=function(e){for(let t in n)if(e.startsWith(t)){let i=n[t];e=e.replace(t,i)}return e.startsWith("http://")||e.startsWith("https://")||(e=`${e}`),e}(e);return!((i=r).startsWith("http:")||i.startsWith("https:"))&&!r.startsWith("data:")&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,t):await fetch(r,t)}return await p(e)}var v=i(73238);function y(e,t){let i=(0,v.pp)(),s=e||i,n=s.fetch??s.core?.fetch;return"function"==typeof n?n:(0,r.Gv)(n)?e=>E(e,n):t?.fetch?t?.fetch:E}var b=i(99742);let A={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document};A.self||A.window||A.global,A.window||A.self||A.global,A.global||A.self||A.window,A.document;let T="object"!=typeof b||"[object process]"!==String(b)||!0,R="undefined"!=typeof window&&void 0!==window.orientation,S=void 0!==b&&b.version&&/v([0-9]*)/.exec(b.version);S&&parseFloat(S[1]);class w{terminate(){}}function P(e,t){if(!e)throw Error(t||"loaders.gl assertion failed.")}let C=new Map;function x(e){let t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function L(e){return!!e&&!!(e instanceof ArrayBuffer||"undefined"!=typeof MessagePort&&e instanceof MessagePort||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)}let M=()=>{};class I{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return"undefined"!=typeof Worker&&T||!T}constructor(e){let{name:t,source:i,url:r}=e;P(i||r),this.name=t,this.source=i,this.url=r,this.onMessage=M,this.onError=e=>console.log(e),this.worker=T?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=M,this.onError=M,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(e,t){t=t||function e(t,i=!0,r){let s=r||new Set;if(t){if(L(t))s.add(t);else if(L(t.buffer))s.add(t.buffer);else if(ArrayBuffer.isView(t));else if(i&&"object"==typeof t)for(let r in t)e(t[r],i,s)}return void 0===r?Array.from(s):[]}(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+=`worker ${this.name} from ${this.url}. `,e.message&&(t+=`${e.message} in `),e.lineno&&(t+=`:${e.lineno}:${e.colno}`),Error(t)}_createBrowserWorker(){var e,t,i;let r;this._loadableURL=(P((e={source:this.source,url:this.url}).source&&!e.url||!e.source&&e.url),(r=C.get(e.source||e.url))||(e.url&&(r=(t=e.url).startsWith("http")?x((i=t,`\ 47try { 48 importScripts('${i}'); 49} catch (error) { 50 console.error(error); 51 throw error; 52}
52`)):t,C.set(e.url,r)),e.source&&(r=x(e.source),C.set(e.source,r))),P(r),r);let s=new Worker(this._loadableURL,{name:this.name});return s.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(Error("No data received"))},s.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},s.onmessageerror=e=>console.error(e),s}_createNodeWorker(){let e;if(this.url)e=new w(this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,{eval:!1,type:this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs"});else if(this.source)e=new w(this.source,{eval:!0});else throw Error("no worker");return e.on("message",e=>{this.onMessage(e)}),e.on("error",e=>{this.onError(e)}),e.on("exit",e=>{}),e}}class O{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(e,t){this.name=e,this.workerThread=t,this.result=new Promise((e,t)=>{this._resolve=e,this._reject=t})}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){P(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){P(this.isRunning),this.isRunning=!1,this._reject(e)}}class N{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return I.isSupported()}constructor(e){this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=(e,t,i)=>e.done(i),i=(e,t)=>e.error(t)){let r=new Promise(r=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:r}),this));return this._startQueuedJob(),await r}async _startQueuedJob(){if(!this.jobQueue.length)return;let e=this._getAvailableWorker();if(!e)return;let t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});let i=new O(t.name,e);e.onMessage=e=>t.onMessage(i,e.type,e.payload),e.onError=e=>t.onError(i,e),t.onStart(i);try{await i.result}catch(e){console.error(`Worker exception: ${e}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!T||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){return this.idleQueue.length>0?this.idleQueue.shift()||null:this.count<this._getMaxConcurrency()?(this.count++,new I({name:`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`,source:this.source,url:this.url})):null}_getMaxConcurrency(){return R?this.maxMobileConcurrency:this.maxConcurrency}}let F={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}};class D{props;workerPools=new Map;static _workerFarm;static isSupported(){return I.isSupported()}static getWorkerFarm(e={}){return D._workerFarm=D._workerFarm||new D({}),D._workerFarm.setProps(e),D._workerFarm}constructor(e){this.props={...F},this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){for(let t of(this.props={...this.props,...e},this.workerPools.values()))t.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:t,source:i,url:r}=e,s=this.workerPools.get(t);return s||((s=new N({name:t,source:i,url:r})).setProps(this._getWorkerPoolProps()),this.workerPools.set(t,s)),s}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}async function B(e,t,i,r,s){let n=e.id,o=function(e,t={}){let i=t[e.id]||{},r=T?`${e.id}-worker.js`:`${e.id}-worker-node.js`,s=i.workerUrl;if(s||"compression"!==e.id||(s=t.workerUrl),"test"===(t._workerType||t?.core?._workerType)&&(s=T?`modules/${e.module}/dist/${r}`:`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!s){let t=e.version;"latest"===t&&(t="latest");let i=t?`@${t}`:"";s=`https://unpkg.com/@loaders.gl/${e.module}${i}/dist/${r}`}return P(s),s}(e,i),a=D.getWorkerFarm(i?.core).getWorkerPool({name:n,url:o});i=JSON.parse(JSON.stringify(i)),r=JSON.parse(JSON.stringify(r||{}));
52let l=await a.startJob("process-on-worker",U.bind(null,s));l.postMessage("process",{input:t,options:i,context:r});let h=await l.result;return await h.result}async function U(e,t,i,r){switch(i){case"done":t.done(r);break;case"error":t.error(Error(r.error));break;case"process":let{id:s,input:n,options:o}=r;try{let i=await e(n,o);t.postMessage("done",{id:s,result:i})}catch(i){let e=i instanceof Error?i.message:"unknown error";t.postMessage("error",{id:s,error:e})}break;default:console.warn(`parse-with-worker unknown message ${i}`)}}let k=(globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.2"),globalThis._loadersgl_.version);function G(e){return e&&"object"==typeof e&&e.isBuffer}function V(e){if(G(e)||e instanceof ArrayBuffer)return e;if((0,r.L8)(e))return W(e);if(ArrayBuffer.isView(e)){let t=e.buffer;return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?t:t.slice(e.byteOffset,e.byteOffset+e.byteLength)}if("string"==typeof e)return new TextEncoder().encode(e).buffer;if(e&&"object"==typeof e&&e._toArrayBuffer)return e._toArrayBuffer();throw Error("toArrayBuffer")}function z(e){if(e instanceof ArrayBuffer)return e;if((0,r.L8)(e))return W(e);let{buffer:t,byteOffset:i,byteLength:s}=e;return t instanceof ArrayBuffer&&0===i&&s===t.byteLength?t:W(t,i,s)}function W(e,t=0,i=e.byteLength-t){let r=new Uint8Array(e,t,i),s=new Uint8Array(r.length);return s.set(r),s.buffer}async function j(e){let t=[];for await(let i of e)t.push(function(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){let{buffer:t,byteOffset:i,byteLength:r}=e;return H(t,i,r)}return H(e)}(i));return function(...e){var t=e;let i=t.map(e=>e instanceof ArrayBuffer?new Uint8Array(e):e),r=new Uint8Array(i.reduce((e,t)=>e+t.byteLength,0)),s=0;for(let e of i)r.set(e,s),s+=e.byteLength;return r.buffer}(...t)}function H(e,t=0,i=e.byteLength-t){let r=new Uint8Array(e,t,i),s=new Uint8Array(r.length);return s.set(r),s.buffer}async function*$(e,t){let i=t?.chunkSize||1048576,r=0;for(;r<e.size;){let t=r+i,s=await e.slice(r,t).arrayBuffer();r=t,yield s}}var X=i(13647);function K(e,t){return X.Bd?Y(e,t):Z(e,t)}async function*Y(e,t){let i,r=e.getReader();try{for(;;){let e=i||r.read();t?._streamReadAhead&&(i=r.read());let{done:s,value:n}=await e;if(s)return;yield V(n)}}catch(e){r.releaseLock()}}async function*Z(e,t){for await(let t of e)yield V(t)}let q="Cannot convert supplied data type";async function Q(e,t,i){if("string"==typeof e||(0,r.B1)(e)){var s,n=e;if(t.text&&"string"==typeof n)return n;if(G(n)&&(n=n.buffer),(0,r.B1)(n)){let e=ArrayBuffer.isView(s=n)?s:new Uint8Array(s);return t.text&&!t.binary?new TextDecoder("utf8").decode(e):V(e)}throw Error(q)}if((0,r.qf)(e)&&(e=await p(e)),(0,r.Sv)(e))return await g(e),t.binary?await e.arrayBuffer():await e.text();if((0,r.H1)(e)&&(e=function(e,t){if("string"==typeof e)return function*(e,t){let i=t?.chunkSize||262144,r=0,s=new TextEncoder;for(;r<e.length;){let t=Math.min(e.length-r,i),n=e.slice(r,r+t);r+=t,yield z(s.encode(n))}}(e,t);if(e instanceof ArrayBuffer)return function*(e,t={}){let{chunkSize:i=262144}=t,r=0;for(;r<e.byteLength;){let t=Math.min(e.byteLength-r,i),s=new ArrayBuffer(t),n=new Uint8Array(e,r,t);new Uint8Array(s).set(n),r+=t,yield s}}(e,t);if((0,r.qf)(e))return $(e,t);if((0,r.H1)(e))return K(e,t);if((0,r.Sv)(e)){let i=e.body;if(!i)throw Error("Readable stream not available on Response");return K(i,t)}throw Error("makeIterator")}(e,i)),(0,r.xZ)(e)||(0,r.Td)(e))return j(e);throw Error(q)}var J=i(63596),ee=i(25352);let et="4.4.2",ei=et[0]>="0"&&et[0]<="9"?`v${et}`:"",er=function(){let e=new ee.hW({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=e,globalThis.loaders.version=ei,globalThis.probe||={},globalThis.probe.loaders=e,e}();var es=i(99276);let en=/\.([^.]+)$/;async function eo(e,t=[],i,s){if(!eh(e))return null;let n=(0,v.Rf)(i||{});if(n.core||={},e instanceof Response&&ea(e)){let i=el(await e.clone().text(),t,{...n,core:{...n.core,nothrow:!0}},s);if(i)return i}let o=el(e,t,{...n,core:{...n.core,nothrow:!0}},s);if(o)return o;if((0,r.qf)(e)&&(o=el(e=await e.slice(0,10).arrayBuffer(),t,n,s)),!o&&e instanceof Response&&ea(e)&&(o=el(await e.clone().text(),t,n,s)),!o&&!n.core.nothrow)throw Error(eu(e));return o}function ea(e){let t=f(e);return!!(t&&(t.startsWith("text/")||"application/json"===t||t.endsWith("+json")))}function el(e,t=[],i,r){if(!eh(e))return null;let n=(0,v.Rf)(i||{});if(n.core||={},t&&!Array.isArray(t))return(0,s.D)(t);let o=[];t&&(o=o.concat(t)),n.core.ignoreRegisteredLoaders||o.push(...(0,es.Ph)()),function(e){for(let t of e)(0,s.D)(t)}(o);let a=function(e,t,i,r){let s=d(e),n=f(e),o=(0,c.S3)(s)||r?.url,a=null,l="";return i?.core?.mimeType&&(a=ec(t,i?.core?.mimeType),l=`match forced by supplied MIME type ${i?.core?.mimeType}`),a=a||function(e,t){let i=t&&en.exec(t),r=i&&i[1];return r?function(e,t){for(let i of(t=t.toLowerCase(),e))for(let e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,r):null}(t,o),l=l||(a?`matched url ${o}`:""),a=a||ec(t,n),l=l||(a?`matched MIME type ${n}`:""),a=a||function(e,t){if(!t)return null;for(let i of e)if("string"==typeof t){if(function(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(t=>e.startsWith(t))}(t,i))return i}else if(ArrayBuffer.isView(t)){if(ed(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer&&ed(t,0,i))return i;return null}(t,e),l=l||(a?`matched initial data ${ef(e)}`:""),i?.core?.fallbackMimeType&&(a=a||ec(t,i?.core?.fallbackMimeType),l=l||(a?`matched fallback MIME type ${n}`:"")),l&&er.log(1,`selectLoader selected ${a?.name}: ${l}.`),a}(e,o,n,r);if(!a&&!n.core.nothrow)throw Error(eu(e));return a}function eh(e){return!(e instanceof Response)||204!==e.status}function eu(e){let t=d(e),i=f(e),r="No valid loader found (";r+=(t?`${J.iW(t)}, `:"no url provided, ")+`MIME type: ${i?`"${i}"`:"not provided"}, `;let s=e?ef(e):"";return r+((s?` first bytes: "${s}"`:"first bytes: not available")+")")}function ec(e,t){for(let i of e)if(i.mimeTypes?.some(e=>h(t,e))||h(t,`application/x.${i.id}`))return i;return null}function ed(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some(i=>(function(e,t,i,s){if((0,r.B1)(s))return function(e,t,i){if(i=i||e.byteLength,e.byteLength<i||t.byteLength<i)return!1;let r=new Uint8Array(e),s=new Uint8Array(t);for(let e=0;e<r.length;++e)if(r[e]!==s[e])return!1;return!0}(s,e,s.byteLength);switch(typeof s){case"function":return s(z(e));case"string":let n=ep(e,t,s.length);return s===n;default:return!1}})(e,t,0,i))}function ef(e,t=5){return"string"==typeof e?e.slice(0,t):ArrayBuffer.isView(e)?ep(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?ep(e,0,t):""}function ep(e,t,i){if(e.byteLength<t+i)return"";let r=new DataView(e),s="";for(let e=0;e<i;e++)s+=String.fromCharCode(r.getUint8(t+e));return s}async function eg(e,t,i,r){!t||Array.isArray(t)||(0,s.l)(t)||(r=void 0,i=t,t=void 0),e=await e,i=i||{};let n=d(e),o=function(e,t){let i;if(e&&!Array.isArray(e))return e;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){let e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:void 0}(t,r),a=await eo(e,o,i);if(!a)return null;let l=(0,v.a5)(i,a,o,n);return r=function(e,t,i){if(i)return i;let r={fetch:y(t,e),...e};if(r.url){let e=(0,c.S3)(r.url);r.baseUrl=e,r.queryString=(0,c.by)(r.url),r.filename=J.iW(e),r.baseUrl=J.pD(e)}return Array.isArray(r.loaders)||(r.loaders=null),r}({url:n,_parse:eg,loaders:o},l,r||null),await e_(a,e,l,r)}async function e_(e,t,i,s){if(!function(e,t=k){P(e,"no worker provided");e.version}(e),i=function e(t,i,r=0){if(r>3)return i;let s={...t};for(let[t,n]of Object.entries(i))n&&"object"==typeof n&&!Array.isArray(n)?s[t]=e(s[t]||{},i[t],r+1):s[t]=i[t];return s}(e.options||{},i),(0,r.Sv)(t)){let{ok:e,redirected:i,status:r,statusText:n,type:o,url:a}=t;s.response={headers:Object.fromEntries(t.headers.entries()),ok:e,redirected:i,status:r,statusText:n,type:o,url:a}}if(t=await Q(t,e,i),e.parseTextSync&&"string"==typeof t)return e.parseTextSync(t,i,s);if(function(e,t){if(!D.isSupported())return!1;let i=t?._nodeWorkers??t?.core?._nodeWorkers;if(!T&&!i)return!1;let r=t?.worker??t?.core?.worker;return!!(e.worker&&r)}(e,i))return await B(e,t,i,s,eg);if(e.parseText&&"string"==typeof t)return await e.parseText(t,i,s);if(e.parse)return await e.parse(t,i,s);throw P(!e.parseSync),Error(`${e.id} loader - no parser found and worker is disabled`)}async function em(e,t,i,n){let o,a;Array.isArray(t)||(0,s.l)(t)?(o=t,a=i):(o=[],a=t);let l=y(a),h=e;if("string"==typeof e&&(h=await l(e)),(0,r.qf)(e)&&(h=await l(e)),"string"==typeof e){let t=(0,v.Rf)(a||{});t.core?.baseUrl||(a={...a,core:{...a?.core,baseUrl:e}})}return Array.isArray(o),await eg(h,o,a)}},7811:(e,t,i)=>{"use strict";function r(e,t){if(!e)throw Error(t||"loader assertion failed.")}i.d(t,{v:()=>r})},8014:(e,t,i)=>{"use strict";i.d(t,{$W:()=>r,Cc:()=>function e(t,i,r){return n(t)?t.map((t,s)=>e(t,i[s],r)):r*i+(1-r)*t},Fl:()=>s,aI:()=>function e(t,i,s){let o=r.EPSILON;s&&(r.EPSILON=s);try{if(t===i)return!0;
52if(n(t)&&n(i)){if(t.length!==i.length)return!1;for(let r=0;r<t.length;++r)if(!e(t[r],i[r]))return!1;return!0}if(t&&t.equals)return t.equals(i);if(i&&i.equals)return i.equals(t);if("number"==typeof t&&"number"==typeof i)return Math.abs(t-i)<=r.EPSILON*Math.max(1,Math.abs(t),Math.abs(i));return!1}finally{r.EPSILON=o}},cy:()=>n,qE:()=>o}),globalThis.mathgl=globalThis.mathgl||{config:{EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1}};let r=globalThis.mathgl.config;function s(e,{precision:t=r.precision}={}){return e=Math.round(e/r.EPSILON)*r.EPSILON,`${parseFloat(e.toPrecision(t))}`}function n(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function o(e,t,i){return function(e,t,i){if(n(e)){i=i||(e.clone?e.clone():Array(e.length));for(let r=0;r<i.length&&r<e.length;++r){let s="number"==typeof e?e:e[r];i[r]=t(s,r,i)}return i}return t(e)}(e,e=>Math.max(t,Math.min(i,e)))}},9445:(e,t,i)=>{"use strict";i.d(t,{eh:()=>s,gM:()=>n,x:()=>r});let r=globalThis;globalThis.document;let s=globalThis.process||{};globalThis.console;let n=globalThis.navigator||{}},12832:(e,t,i)=>{"use strict";i.d(t,{KC:()=>s});var r=i(93032);function s(e){var t=r.z.instantiateModules(e);let i={},s={};return function e(t){let{modules:i,level:r,moduleMap:s,moduleDepth:n}=t;if(r>=5)throw Error("Possible loop in shader dependency graph");for(let e of i)s[e.name]=e,(void 0===n[e.name]||n[e.name]<r)&&(n[e.name]=r);for(let t of i)t.dependencies&&e({modules:t.dependencies,level:r+1,moduleMap:s,moduleDepth:n})}({modules:t,level:0,moduleMap:i,moduleDepth:s}),Object.keys(s).sort((e,t)=>s[t]-s[e]).map(e=>i[e])}},13402:(e,t,i)=>{"use strict";i.d(t,{A:()=>_});var r=i(91156),s=i(16212),n=i(98590),o=i(8014),a=i(54570),l=i(28089),h=i(24694),u=i(61773);let c=Math.PI/180,d=(0,s.$M)(),f=[0,0,0],p={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};class g{constructor(e={}){this._frustumPlanes={},this.id=e.id||this.constructor.displayName||"viewport",this.x=e.x||0,this.y=e.y||0,this.width=e.width||1,this.height=e.height||1,this.zoom=e.zoom||0,this.padding=e.padding,this.distanceScales=e.distanceScales||p,this.focalDistance=e.focalDistance||1,this.position=e.position||f,this.modelMatrix=e.modelMatrix||null;let{longitude:t,latitude:i}=e;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(t),this._initProps(e),this._initMatrices(e),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?u.Kx.WEB_MERCATOR:u.Kx.WEB_MERCATOR_AUTO_OFFSET:u.Kx.IDENTITY}equals(e){return e instanceof g&&(this===e||e.width===this.width&&e.height===this.height&&e.scale===this.scale&&(0,o.aI)(e.projectionMatrix,this.projectionMatrix)&&(0,o.aI)(e.viewMatrix,this.viewMatrix))}project(e,{topLeft:t=!0}={}){let i=this.projectPosition(e),r=(0,h.VJ)(i,this.pixelProjectionMatrix),[s,n]=r,o=t?n:this.height-n;return 2===e.length?[s,o]:[s,o,r[2]]}unproject(e,{topLeft:t=!0,targetZ:i}={}){let[r,s,n]=e,o=t?s:this.height-s,a=i&&i*this.distanceScales.unitsPerMeter[2],l=(0,h.xJ)([r,o,n],this.pixelUnprojectionMatrix,a),[u,c,d]=this.unprojectPosition(l);return Number.isFinite(n)?[u,c,d]:Number.isFinite(i)?[u,c,i]:[u,c]}projectPosition(e){let[t,i]=this.projectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.unitsPerMeter[2]]}unprojectPosition(e){let[t,i]=this.unprojectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.metersPerUnit[2]]}projectFlat(e){if(this.isGeospatial){let t=(0,h.Gw)(e);return t[1]=(0,o.qE)(t[1],-318,830),t}return e}unprojectFlat(e){return this.isGeospatial?(0,h.iV)(e):e}getBounds(e={}){let t={targetZ:e.z||0},i=this.unproject([0,0],t),r=this.unproject([this.width,0],t),s=this.unproject([0,this.height],t),n=this.unproject([this.width,this.height],t);return[Math.min(i[0],r[0],s[0],n[0]),Math.min(i[1],r[1],s[1],n[1]),Math.max(i[0],r[0],s[0],n[0]),Math.max(i[1],r[1],s[1],n[1])]}getDistanceScales(e){return e?(0,h.nI)({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:t,width:i=1,height:r=1}){return e<this.x+this.width&&this.x<e+i&&t<this.y+this.height&&this.y<t+r}getFrustumPlanes(){return this._frustumPlanes.near||Object.assign(this._frustumPlanes,(0,s.on)(this.viewProjectionMatrix)),this._frustumPlanes}panByPosition(e,t){return null}_initProps(e){let t=e.longitude,i=e.latitude;this.isGeospatial&&(Number.isFinite(e.zoom)||(this.zoom=(0,h.fO)({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||(0,h.nI)({latitude:i,longitude:t}));let r=Math.pow(2,this.zoom);this.scale=r;let{position:s,modelMatrix:o}=e,l=f;if(s&&(l=o?new n.k(o).transformAsVector(s,[]):s),this.isGeospatial){let e=this.projectPosition([t,i,0]);this.center=new a.P(l).scale(this.distanceScales.unitsPerMeter).add(e)}else this.center=this.projectPosition(l)}_initMatrices(e){let{viewMatrix:t=d,projectionMatrix:i=null,orthographic:h=!1,fovyRadians:u,fovy:f=75,near:p=.1,far:g=1e3,padding:_=null,focalDistance:m=1}=e;this.viewMatrixUncentered=t,this.viewMatrix=new n.k().multiplyRight(t).translate(new a.P(this.center).negate()),this.projectionMatrix=i||function({width:e,height:t,orthographic:i,fovyRadians:r,focalDistance:s,padding:a,near:l,far:h}){let u=e/t,c=i?new n.k().orthographic({fovy:r,aspect:u,focalDistance:s,near:l,far:h}):new n.k().perspective({fovy:r,aspect:u,near:l,far:h});if(a){let{left:i=0,right:r=0,top:s=0,bottom:n=0}=a,l=(0,o.qE)((i+e-r)/2,0,e)-e/2,h=(0,o.qE)((s+t-n)/2,0,t)-t/2;c[8]-=2*l/e,c[9]+=2*h/t}return c}({width:this.width,height:this.height,orthographic:h,fovyRadians:u||f*c,focalDistance:m,padding:_,near:p,far:g});let E=(0,s.$M)();l.lw(E,E,this.projectionMatrix),l.lw(E,E,this.viewMatrix),this.viewProjectionMatrix=E,this.viewMatrixInverse=l.B8([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=(0,s.Vl)(this.viewMatrixInverse);let v=(0,s.$M)(),y=(0,s.$M)();l.hs(v,v,[this.width/2,-this.height/2,1]),l.Tl(v,v,[1,-1,0]),l.lw(y,v,this.viewProjectionMatrix),this.pixelProjectionMatrix=y,this.pixelUnprojectionMatrix=l.B8((0,s.$M)(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||r.A.warn("Pixel project matrix not invertible")()}}g.displayName="Viewport";let _=g},13647:(e,t,i)=>{"use strict";i.d(t,{Bd:()=>n});var r=i(99742);let s={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document};s.self||s.window||s.global,s.window||s.self||s.global,s.global||s.self||s.window,s.document;let n=("object"!=typeof r||"[object process]"!==String(r),!0),o=void 0!==r&&r.version&&/v([0-9]*)/.exec(r.version);o&&parseFloat(o[1])},16154:e=>{"use strict";function t(e,t,u){u=u||2;var c,p,_,m,E,v,y,b=t&&t.length,A=b?t[0]*u:e.length,T=i(e,0,A,u,!0),R=[];if(!T||T.next===T.prev)return R;if(b&&(T=function(e,t,n,l){var h,u,c,p,g,_=[];for(h=0,u=t.length;h<u;h++)c=t[h]*l,p=h<u-1?t[h+1]*l:e.length,(g=i(e,c,p,l,!1))===g.next&&(g.steiner=!0),_.push(function(e){var t=e,i=e;do(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next;while(t!==e);return i}(g));for(_.sort(s),h=0;h<_.length;h++)n=function(e,t){var i=function(e,t){var i,r,s,n=t,l=e.x,h=e.y,u=-1/0;do{if(h<=n.y&&h>=n.next.y&&n.next.y!==n.y){var c=n.x+(h-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(c<=l&&c>u&&(u=c,s=n.x<n.next.x?n:n.next,c===l))return s}n=n.next}while(n!==t);if(!s)return null;var f,p=s,g=s.x,_=s.y,m=1/0;n=s;do{l>=n.x&&n.x>=g&&l!==n.x&&o(h<_?l:u,h,g,_,h<_?u:l,h,n.x,n.y)&&(f=Math.abs(h-n.y)/(l-n.x),d(n,e)&&(f<m||f===m&&(n.x>s.x||n.x===s.x&&(i=s,r=n,0>a(i.prev,i,r.prev)&&0>a(r.next,i,i.next))))&&(s=n,m=f)),n=n.next}while(n!==p);return s}(e,t);if(!i)return t;var s=f(i,e);return r(s,s.next),r(i,i.next)}(_[h],n);return n}(e,t,T,u)),e.length>80*u){c=_=e[0],p=m=e[1];for(var S=u;S<A;S+=u)E=e[S],v=e[S+1],E<c&&(c=E),v<p&&(p=v),E>_&&(_=E),v>m&&(m=v);y=0!==(y=Math.max(_-c,m-p))?32767/y:0}return function e(t,i,s,u,c,p,_){if(t){!_&&p&&function(e,t,i,r){var s=e;do 0===s.z&&(s.z=n(s.x,s.y,t,i,r)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,function(e){var t,i,r,s,n,o,a,l,h=1;do{for(i=e,e=null,n=null,o=0;i;){for(o++,r=i,a=0,t=0;t<h&&(a++,r=r.nextZ);t++);for(l=h;a>0||l>0&&r;)0!==a&&(0===l||!r||i.z<=r.z)?(s=i,i=i.nextZ,a--):(s=r,r=r.nextZ,l--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;i=r}n.nextZ=null,h*=2}while(o>1)}(s)}(t,u,c,p);for(var m,E,v=t;t.prev!==t.next;){if(m=t.prev,E=t.next,p?function(e,t,i,r){var s=e.prev,l=e.next;if(a(s,e,l)>=0)return!1;for(var h=s.x,u=e.x,c=l.x,d=s.y,f=e.y,p=l.y,g=h<u?h<c?h:c:u<c?u:c,_=d<f?d<p?d:p:f<p?f:p,m=h>u?h>c?h:c:u>c?u:c,E=d>f?d>p?d:p:f>p?f:p,v=n(g,_,t,i,r),y=n(m,E,t,i,r),b=e.prevZ,A=e.nextZ;b&&b.z>=v&&A&&A.z<=y;){if(b.x>=g&&b.x<=m&&b.y>=_&&b.y<=E&&b!==s&&b!==l&&o(h,d,u,f,c,p,b.x,b.y)&&a(b.prev,b,b.next)>=0||(b=b.prevZ,A.x>=g&&A.x<=m&&A.y>=_&&A.y<=E&&A!==s&&A!==l&&o(h,d,u,f,c,p,A.x,A.y)&&a(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;b&&b.z>=v;){if(b.x>=g&&b.x<=m&&b.y>=_&&b.y<=E&&b!==s&&b!==l&&o(h,d,u,f,c,p,b.x,b.y)&&a(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;A&&A.z<=y;){if(A.x>=g&&A.x<=m&&A.y>=_&&A.y<=E&&A!==s&&A!==l&&o(h,d,u,f,c,p,A.x,A.y)&&a(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}(t,u,c,p):function(e){var t=e.prev,i=e.next;if(a(t,e,i)>=0)return!1;for(var r=t.x,s=e.x,n=i.x,l=t.y,h=e.y,u=i.y,c=r<s?r<n?r:n:s<n?s:n,d=l<h?l<u?l:u:h<u?h:u,f=r>s?r>n?r:n:s>n?s:n,p=l>h?l>u?l:u:h>u?h:u,g=i.next;g!==t;){if(g.x>=c&&g.x<=f&&g.y>=d&&g.y<=p&&o(r,l,s,h,n,u,g.x,g.y)&&a(g.prev,g,g.next)>=0)return!1;g=g.next}return!0}(t)){i.push(m.i/s|0),i.push(t.i/s|0),i.push(E.i/s|0),g(t),t=E.next,v=E.next;continue}if((t=E)===v){_?1===_?e(t=function(e,t,i){var s=e;do{var n=s.prev,o=s.next.next;!l(n,o)&&h(n,s,s.next,o)&&d(n,o)&&d(o,n)&&(t.push(n.i/i|0),t.push(s.i/i|0),t.push(o.i/i|0),g(s),g(s.next),s=e=o),s=s.next}while(s!==e);return r(s)}(r(t),i,s),i,s,u,c,p,2):2===_&&function(t,i,s,n,o,u){var c=t;do{for(var p,g,_=c.next.next;_!==c.prev;){if(c.i!==_.i&&(p=c,g=_,p.next.i!==g.i&&p.prev.i!==g.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&h(i,i.next,e,t))return!0;
52i=i.next}while(i!==e);return!1}(p,g)&&(d(p,g)&&d(g,p)&&function(e,t){var i=e,r=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do i.y>n!=i.next.y>n&&i.next.y!==i.y&&s<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next;while(i!==e);return r}(p,g)&&(a(p.prev,p,g.prev)||a(p,g.prev,g))||l(p,g)&&a(p.prev,p,p.next)>0&&a(g.prev,g,g.next)>0))){var m=f(c,_);c=r(c,c.next),m=r(m,m.next),e(c,i,s,n,o,u,0),e(m,i,s,n,o,u,0);return}_=_.next}c=c.next}while(c!==t)}(t,i,s,u,c,p):e(r(t),i,s,u,c,p,1);break}}}}(T,R,u,c,p,y,0),R}function i(e,t,i,r,s){var n,o;if(s===m(e,t,i,r)>0)for(n=t;n<i;n+=r)o=p(n,e[n],e[n+1],o);else for(n=i-r;n>=t;n-=r)o=p(n,e[n],e[n+1],o);return o&&l(o,o.next)&&(g(o),o=o.next),o}function r(e,t){if(!e)return e;t||(t=e);var i,r=e;do if(i=!1,!r.steiner&&(l(r,r.next)||0===a(r.prev,r,r.next))){if(g(r),(r=t=r.prev)===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function s(e,t){return e.x-t.x}function n(e,t,i,r,s){return(e=((e=((e=((e=((e=(e-i)*s|0)|e<<8)&0xff00ff)|e<<4)&0xf0f0f0f)|e<<2)&0x33333333)|e<<1)&0x55555555)|(t=((t=((t=((t=((t=(t-r)*s|0)|t<<8)&0xff00ff)|t<<4)&0xf0f0f0f)|t<<2)&0x33333333)|t<<1)&0x55555555)<<1}function o(e,t,i,r,s,n,o,a){return(s-o)*(t-a)>=(e-o)*(n-a)&&(e-o)*(r-a)>=(i-o)*(t-a)&&(i-o)*(n-a)>=(s-o)*(r-a)}function a(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function l(e,t){return e.x===t.x&&e.y===t.y}function h(e,t,i,r){var s=c(a(e,t,i)),n=c(a(e,t,r)),o=c(a(i,r,e)),l=c(a(i,r,t));return!!(s!==n&&o!==l||0===s&&u(e,i,t)||0===n&&u(e,r,t)||0===o&&u(i,e,r)||0===l&&u(i,t,r))}function u(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function c(e){return e>0?1:e<0?-1:0}function d(e,t){return 0>a(e.prev,e,e.next)?a(e,t,e.next)>=0&&a(e,e.prev,t)>=0:0>a(e,t,e.prev)||0>a(e,e.next,t)}function f(e,t){var i=new _(e.i,e.x,e.y),r=new _(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,i.next=s,s.prev=i,r.next=i,i.prev=r,n.next=r,r.prev=n,r}function p(e,t,i,r){var s=new _(e,t,i);return r?(s.next=r.next,s.prev=r,r.next.prev=s,r.next=s):(s.prev=s,s.next=s),s}function g(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 _(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function m(e,t,i,r){for(var s=0,n=t,o=i-r;n<i;n+=r)s+=(e[o]-e[n])*(e[n+1]+e[o+1]),o=n;return s}e.exports=t,e.exports.default=t,t.deviation=function(e,t,i,r){var s=t&&t.length,n=s?t[0]*i:e.length,o=Math.abs(m(e,0,n,i));if(s)for(var a=0,l=t.length;a<l;a++){var h=t[a]*i,u=a<l-1?t[a+1]*i:e.length;o-=Math.abs(m(e,h,u,i))}var c=0;for(a=0;a<r.length;a+=3){var d=r[a]*i,f=r[a+1]*i,p=r[a+2]*i;c+=Math.abs((e[d]-e[p])*(e[f+1]-e[d+1])-(e[d]-e[f])*(e[p+1]-e[d+1]))}return 0===o&&0===c?0:Math.abs((c-o)/o)},t.flatten=function(e){for(var t=e[0][0].length,i={vertices:[],holes:[],dimensions:t},r=0,s=0;s<e.length;s++){for(var n=0;n<e[s].length;n++)for(var o=0;o<t;o++)i.vertices.push(e[s][n][o]);s>0&&(r+=e[s-1].length,i.holes.push(r))}return i}},16212:(e,t,i)=>{"use strict";let r;i.d(t,{$M:()=>o,Vl:()=>a,_Z:()=>d,cT:()=>c,on:()=>l});var s=i(46608),n=i(54570);function o(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function a(e){return[e[12],e[13],e[14]]}function l(e){return{left:u(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:u(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:u(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:u(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:u(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:u(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}let h=new n.P;function u(e,t,i,r){h.set(e,t,i);let s=h.len();return{distance:r/s,normal:new n.P(-e/s,-t/s,-i/s)}}function c(e,t){let{size:i=1,startIndex:n=0}=t,o=void 0!==t.endIndex?t.endIndex:e.length,a=(o-n)/i;r=s.A.allocate(r,a,{type:Float32Array,size:2*i});let l=n,h=0;for(;l<o;){for(let t=0;t<i;t++){let s=e[l++];r[h+t]=s,r[h+t+i]=s-Math.fround(s)}h+=2*i}return r.subarray(0,a*i*2)}function d(e){let t=null,i=!1;for(let r of e)r&&(t?(i||(t=[[t[0][0],t[0][1]],[t[1][0],t[1][1]]],i=!0),t[0][0]=Math.min(t[0][0],r[0][0]),t[0][1]=Math.min(t[0][1],r[0][1]),t[1][0]=Math.max(t[1][0],r[1][0]),t[1][1]=Math.max(t[1][1],r[1][1])):t=r);return t}},16612:(e,t,i)=>{"use strict";function r(e,t){if(!e)throw Error(t||"deck.gl: assertion failed.")}i.d(t,{A:()=>r})},17611:(e,t,i)=>{"use strict";i.d(t,{A:()=>i0});var r=i(49528),s=i(61773);function n(e){let t=ArrayBuffer.isView(e)?e.constructor:e;switch(t){case Float32Array:return"float32";case Uint16Array:return"uint16";case Uint32Array:return"uint32";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int8Array:return"sint8";case Int16Array:return"sint16";case Int32Array:return"sint32";default:throw Error(t.constructor.name)}}function o(e){switch(e){case"float32":return Float32Array;case"uint32":return Uint32Array;case"sint32":return Int32Array;case"uint16":case"unorm16":return Uint16Array;case"sint16":case"snorm16":return Int16Array;case"uint8":case"unorm8":return Uint8Array;case"sint8":case"snorm8":return Int8Array;default:throw Error(e)}}function a(e,t){return{attribute:e,format:t.size>1?`${t.type}x${t.size}`:t.type,byteOffset:t.offset||0}}function l(e){return e.stride||e.size*e.bytesPerElement}var h=i(46608),u=i(16212),c=i(91156);function d(e,t){t.offset&&c.A.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let i=l(e),r=(void 0!==t.vertexOffset?t.vertexOffset:e.vertexOffset||0)*i+(t.elementOffset||0)*e.bytesPerElement+(e.offset||0);return{...t,offset:r,stride:i}
52}class f{constructor(e,t,i){let r;this._buffer=null,this.device=e,this.id=t.id||"",this.size=t.size||1;let s=t.logicalType||t.type,n="float64"===s,{defaultValue:a}=t;a=Number.isFinite(a)?[a]:a||Array(this.size).fill(0),r=n?"float32":!s&&t.isIndexed?"uint32":s||"float32";let l=function(e){switch(e){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return o(e)}}(s||r);this.doublePrecision=n,n&&!1===t.fp64&&(l=Float32Array),this.value=null,this.settings={...t,defaultType:l,defaultValue:a,logicalType:s,type:r,normalized:r.includes("norm"),size:this.size,bytesPerElement:l.BYTES_PER_ELEMENT},this.state={...i,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*l(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),h.A.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,t=null){let i={};if(this.state.constant){let r=this.value;if(t){let s=d(this.getAccessor(),t),n=s.offset/r.BYTES_PER_ELEMENT,o=s.size||this.size;i[e]=r.subarray(n,n+o)}else i[e]=r}else i[e]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?i[`${e}64Low`]=i[e]:i[`${e}64Low`]=new Float32Array(this.size)),i}_getBufferLayout(e=this.id,t=null){let i=this.getAccessor(),r=[],s={name:this.id,byteStride:l(i),attributes:r};if(this.doublePrecision){let s=function(e,t){let i=d(e,t);return{high:i,low:{...i,offset:i.offset+4*e.size}}}(i,t||{});r.push(a(e,{...i,...s.high}),a(`${e}64Low`,{...i,...s.low}))}else if(t){let s=d(i,t);r.push(a(e,{...i,...s}))}else r.push(a(e,i));return s}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let t=Array.from(this.value);e=[t,t]}else{let{value:t,numInstances:i,size:r}=this,s=i*r;if(t&&s&&t.length>=s){let i=Array(r).fill(1/0),n=Array(r).fill(-1/0);for(let e=0;e<s;)for(let s=0;s<r;s++){let r=t[e++];r<i[s]&&(i[s]=r),r>n[s]&&(n[s]=r)}e=[i,n]}}return this.state.bounds=e,e}setData(e){let t,{state:i}=this;t=ArrayBuffer.isView(e)?{value:e}:e instanceof r.h?{buffer:e}:e;let s={...this.settings,...t};if(ArrayBuffer.isView(t.value)){if(!t.type)if(this.doublePrecision&&t.value instanceof Float64Array)s.type="float32";else{let e=n(t.value);s.type=s.normalized?e.replace("int","norm"):e}s.bytesPerElement=t.value.BYTES_PER_ELEMENT,s.stride=l(s)}if(i.bounds=null,t.constant){let e=t.value;if(e=this._normalizeValue(e,[],0),this.settings.normalized&&(e=this.normalizeConstant(e)),!(!i.constant||!this._areValuesEqual(e,this.value)))return!1;i.externalBuffer=null,i.constant=!0,this.value=ArrayBuffer.isView(e)?e:new Float32Array(e)}else if(t.buffer)i.externalBuffer=t.buffer,i.constant=!1,this.value=t.value||null;else if(t.value){this._checkExternalBuffer(t);let e=t.value;i.externalBuffer=null,i.constant=!1,this.value=e;let{buffer:r}=this,n=l(s),o=(s.vertexOffset||0)*n;if(this.doublePrecision&&e instanceof Float64Array&&(e=(0,u.cT)(e,s)),this.settings.isIndexed){let t=this.settings.defaultType;e.constructor!==t&&(e=new t(e))}let a=e.byteLength+o+2*n;(!r||r.byteLength<a)&&(r=this._createBuffer(a)),r.write(e,o)}return this.setAccessor(s),!0}updateSubBuffer(e={}){this.state.bounds=null;let t=this.value,{startOffset:i=0,endOffset:r}=e;this.buffer.write(this.doublePrecision&&t instanceof Float64Array?(0,u.cT)(t,{size:this.size,startIndex:i,endIndex:r}):t.subarray(i,r),i*t.BYTES_PER_ELEMENT+this.byteOffset)}allocate(e,t=!1){let{state:i}=this,r=i.allocatedValue,s=h.A.allocate(r,e+1,{size:this.size,type:this.settings.defaultType,copy:t});this.value=s;let{byteOffset:n}=this,{buffer:o}=this;return(!o||o.byteLength<s.byteLength+n)&&(o=this._createBuffer(s.byteLength+n),t&&r&&o.write(r instanceof Float64Array?(0,u.cT)(r,this):r,n)),i.allocatedValue=s,i.constant=!1,i.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(e){let{value:t}=e;if(!ArrayBuffer.isView(t))throw Error(`Attribute ${this.id} value is not TypedArray`);let i=this.settings.defaultType,r=!1;if(this.doublePrecision&&(r=t.BYTES_PER_ELEMENT<4),r)throw Error(`Attribute ${this.id} does not support ${t.constructor.name}`);t instanceof i||!this.settings.normalized||"normalized"in e||c.A.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(e){switch(this.settings.type){case"snorm8":return new Float32Array(e).map(e=>(e+128)/255*2-1);case"snorm16":return new Float32Array(e).map(e=>(e+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(e=>e/255);case"unorm16":return new Float32Array(e).map(e=>e/65535);default:return e}}_normalizeValue(e,t,i){let{defaultValue:r,size:s}=this.settings;if(Number.isFinite(e))return t[i]=e,t;if(!e){let e=s;for(;--e>=0;)t[i+e]=r[e];return t}switch(s){case 4:t[i+3]=Number.isFinite(e[3])?e[3]:r[3];case 3:t[i+2]=Number.isFinite(e[2])?e[2]:r[2];case 2:t[i+1]=Number.isFinite(e[1])?e[1]:r[1];case 1:t[i+0]=Number.isFinite(e[0])?e[0]:r[0];break;default:let n=s;for(;--n>=0;)t[i+n]=Number.isFinite(e[n])?e[n]:r[n]}return t}_areValuesEqual(e,t){if(!e||!t)return!1;let{size:i}=this;for(let r=0;r<i;r++)if(e[r]!==t[r])return!1;return!0}_createBuffer(e){this._buffer&&this._buffer.destroy();let{isIndexed:t,type:i}=this.settings;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:t?r.h.INDEX:r.h.VERTEX,indexType:t?i:void 0,byteLength:e}),this._buffer}}var p=i(16612);let g=[],_=[];function m(e,t=0,i=1/0){let r=g,s={index:-1,data:e,target:[]};return e?"function"==typeof e[Symbol.iterator]?r=e:e.length>0&&(_.length=e.length,r=_):r=g,(t>0||Number.isFinite(i))&&(r=(Array.isArray(r)?r:Array.from(r)).slice(t,i),s.index=t-1),{iterable:r,objectInfo:s}}function E(e){return e&&e[Symbol.asyncIterator]}function v(e,t){let{size:i,stride:r,offset:s,startIndices:n,nested:o}=t,a=e.BYTES_PER_ELEMENT,l=r?r/a:i,h=s?s/a:0,u=Math.floor((e.length-h)/l);return(t,{index:r,target:s})=>{let a;if(!n){let t=r*l+h;for(let r=0;r<i;r++)s[r]=e[t+r];return s}let c=n[r],d=n[r+1]||u;if(o){a=Array(d-c);for(let t=c;t<d;t++){let r=t*l+h;s=Array(i);for(let t=0;t<i;t++)s[t]=e[r+t];a[t-c]=s}}else if(l===i)a=e.subarray(c*i+h,d*i+h);else{a=new e.constructor((d-c)*i);let t=0;for(let r=c;r<d;r++){let s=r*l+h;for(let r=0;r<i;r++)a[t++]=e[s+r]}}return a}}var y=i(54720);let b=[],A=[[0,1/0]],T={interpolation:{duration:0,easing:e=>e},spring:{stiffness:.05,damping:.5}};function R(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});let i=e.type||"interpolation";return{...T[i],...t,...e,type:i}}class S extends f{constructor(e,t){super(e,t,{startIndices:null,lastExter
52nalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:A}),this.constant=!1,this.settings.update=t.update||(t.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let t=this.state.needsRedraw;return this.state.needsRedraw=t&&!e,t}layoutChanged(){return this.state.layoutChanged}setAccessor(e){var t,i;(t=this.state).layoutChanged||(i=this.getAccessor(),t.layoutChanged=e.type!==i.type||e.size!==i.size||l(e)!==l(i)||(e.offset||0)!==(i.offset||0)),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat("function"!=typeof e&&e||[])}supportsTransition(){return!!this.settings.transition}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:t}=this.settings,i=this.settings.transition;return R(Array.isArray(t)?e[t.find(t=>e[t])]:e[t],i)}setNeedsUpdate(e=this.id,t){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),t){let{startRow:e=0,endRow:i=1/0}=t;this.state.updateRanges=function(e,t){if(e===A||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return e;let i=[],r=e.length,s=0;for(let n=0;n<r;n++){let r=e[n];r[1]<t[0]?(i.push(r),s=n+1):r[0]>t[1]?i.push(r):t=[Math.min(r[0],t[0]),Math.max(r[1],t[1])]}return i.splice(s,0,t),i}(this.state.updateRanges,[e,i])}else this.state.updateRanges=A}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=b}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:t,settings:i}=this;return!i.noAlloc&&!!i.update&&(super.allocate(e,t.updateRanges!==A),!0)}updateBuffer({numInstances:e,data:t,props:i,context:r}){if(!this.needsUpdate())return!1;let{state:{updateRanges:s},settings:{update:n,noAlloc:o}}=this,a=!0;if(n){for(let[o,a]of s)n.call(r,this,{data:t,startRow:o,endRow:a,props:i,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[t,i]of s){let r=Number.isFinite(t)?this.getVertexOffset(t):0,s=Number.isFinite(i)?this.getVertexOffset(i):o||!Number.isFinite(e)?this.value.length:e*this.size;super.updateSubBuffer({startOffset:r,endOffset:s})}this._checkAttributeArray()}else a=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),a}setConstantValue(e){return void 0!==e&&"function"!=typeof e&&(this.setData({constant:!0,value:e})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0)}setExternalBuffer(e){let{state:t}=this;return e?(this.clearNeedsUpdate(),t.lastExternalBuffer===e||(t.lastExternalBuffer=e,this.setNeedsRedraw(),this.setData(e),!0)):(t.lastExternalBuffer=null,!1)}setBinaryValue(e,t=null){let{state:i,settings:r}=this;if(!e)return i.binaryValue=null,i.binaryAccessor=null,!1;if(r.noAlloc)return!1;if(i.binaryValue===e)return this.clearNeedsUpdate(),!0;if(i.binaryValue=e,this.setNeedsRedraw(),r.transform||t!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let s=e;(0,p.A)(ArrayBuffer.isView(s.value),`invalid ${r.accessor}`);let n=!!s.size&&s.size!==this.size;return i.binaryAccessor=v(s.value,{size:s.size||this.size,stride:s.stride,offset:s.offset,startIndices:t,nested:n}),!1}return this.clearNeedsUpdate(),this.setData(e),!0}getVertexOffset(e){let{startIndices:t}=this;return(t?e<t.length?t[e]:this.numInstances:e)*this.size}getValue(){let e=this.settings.shaderAttributes,t=super.getValue();if(!e)return t;for(let i in e)Object.assign(t,super.getValue(i,e[i]));return t}getBufferLayout(e){this.state.layoutChanged=!1;let t=this.settings.shaderAttributes,i=super._getBufferLayout(),{stepMode:r}=this.settings;if("dynamic"===r?i.stepMode=e?e.isInstanced?"instance":"vertex":"instance":i.stepMode=r??"vertex",!t)return i;for(let e in t){let r=super._getBufferLayout(e,t[e]);i.attributes.push(...r.attributes)}return i}_autoUpdater(e,{data:t,startRow:i,endRow:r,props:s,numInstances:n}){if(e.constant)return;let{settings:o,state:a,value:l,size:h,startIndices:u}=e,{accessor:c,transform:d}=o,f=a.binaryAccessor||("function"==typeof c?c:s[c]);(0,p.A)("function"==typeof f,`accessor "${c}" is not a function`);let g=e.getVertexOffset(i),{iterable:_,objectInfo:E}=m(t,i,r);for(let t of _){E.index++;let i=f(t,E);if(d&&(i=d.call(this,i)),u){let t=(E.index<u.length-1?u[E.index+1]:n)-u[E.index];if(i&&Array.isArray(i[0])){let t=g;for(let r of i)e._normalizeValue(r,l,t),t+=h}else i&&i.length>h?l.set(i,g):(e._normalizeValue(i,E.target,0),(0,y.R)({target:l,s
52ource:E.target,start:g,count:t}));g+=t*h}else e._normalizeValue(i,l,g),g+=h}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||"function"==typeof e.update))throw Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,t=Math.min(4,this.size);if(e&&e.length>=t){let i=!0;switch(t){case 4:i=i&&Number.isFinite(e[3]);case 3:i=i&&Number.isFinite(e[2]);case 2:i=i&&Number.isFinite(e[1]);case 1:i=i&&Number.isFinite(e[0]);break;default:i=!1}if(!i)throw Error(`Illegal attribute generated for ${this.id}`)}}}var w=i(25198),P=i(86028),C=i(30244);let x=`\ 53out vec4 transform_output; 54void main() { 55transform_output = vec4(0); 56}`,L=`#version 300 es 57${x}`;var M=i(74553),I=i(17785),O=i(73734),N=i(80879),F=i(68318);class D{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name,e?.name&&e?.shaderLayout){let t=e?.shaderLayout.bindings?.find(t=>"uniform"===t.type&&t.name===e?.name);if(!t)throw Error(e?.name);for(let e of t.uniforms||[])this.bindingLayout[e.name]=e}}setUniforms(e){for(let[t,i]of Object.entries(e))this._setUniform(t,i),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${t}=${i}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,t){!function(e,t,i=16){if(e!==t)return!1;let r=(0,F.p)(e);if(!r)return!1;let s=(0,F.p)(t);if(s&&r.length===s.length){for(let e=0;e<r.length;++e)if(s[e]!==r[e])return!1}return!0}(this.uniforms[e],t)&&(this.uniforms[e]=function(e){let t=(0,F.p)(e);return t?t.slice():e}(t),this.modifiedUniforms[e]=!0,this.modified=!0)}}let B={f32:{type:"f32",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16}};var U=i(83601),k=i(75591);class G{layout={};byteLength;constructor(e){let t=0;for(let[i,r]of Object.entries(e)){let{type:e,components:s}=function(e){let t=B[e];return(0,C.v)(e),t}(r),n=t=function(e,t){switch(t){case 1:return e;case 2:return e+e%2;default:return e+(4-e%4)%4}}(t,s);t+=s,this.layout[i]={type:e,size:s,offset:n}}let i=4*(t+=(4-t%4)%4);this.byteLength=Math.max(i,1024)}getData(e){let t=Math.max(this.byteLength,1024),i=(0,U.oK)(t),r={i32:new Int32Array(i),u32:new Uint32Array(i),f32:new Float32Array(i),f16:new Uint16Array(i)};for(let[t,i]of Object.entries(e)){let e=this.layout[t];if(!e){k.R.warn(`Supplied uniform value ${t} not present in uniform block layout`)();continue}let{type:s,size:n,offset:o}=e,a=r[s];if(1===n){if("number"!=typeof i&&"boolean"!=typeof i){k.R.warn(`Supplied value for single component uniform ${t} is not a number: ${i}`)();continue}a[o]=Number(i)}else{let e=(0,F.p)(i);if(!e){k.R.warn(`Supplied value for multi component / array uniform ${t} is not a numeric array: ${i}`)();continue}a.set(e,o)}}return new Uint8Array(i)}has(e){return!!this.layout[e]}get(e){return this.layout[e]}}class V{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(e){for(let[t,i]of Object.entries(e)){let e=new G(i.uniformTypes||{});this.uniformBufferLayouts.set(t,e);let r=new D({name:t});r.setUniforms(i.defaultUniforms||{}),this.uniformBlocks.set(t,r)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[t,i]of Object.entries(e))this.uniformBlocks.get(t).setUniforms(i);this.updateUniformBuffers()}getUniformBufferByteLength(e){return this.uniformBufferLayouts.get(e).byteLength}getUniformBufferData(e){let t=this.uniformBlocks.get(e).getAllUniforms();return this.uniformBufferLayouts.get(e).getData(t)}createUniformBuffer(e,t,i){i&&this.setUniforms(i);let s=this.getUniformBufferByteLength(t),n=e.createBuffer({usage:r.h.UNIFORM|r.h.COPY_DST,byteLength:s}),o=this.getUniformBufferData(t);return n.write(o),n}getManagedUniformBuffer(e,t){if(!this.uniformBuffers.get(t)){let i=this.getUniformBufferByteLength(t),s=e.createBuffer({usage:r.h.UNIFORM|r.h.COPY_DST,byteLength:i});this.uniformBuffers.set(t,s)}return this.uniformBuffers.get(t)}updateUniformBuffers(){let e=!1;for(let t of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(t);e||=i}return e&&k.R.log(3,`UniformStore.updateUniformBuffers(): ${e}`)(),e}updateUniformBuffer(e){let t=this.uniformBlocks.get(e),i=this.uniformBuffers.get(e),r=!1;if(i&&t.needsRedraw){r||=t.needsRedraw;let i=this.getUniformBufferData(e);this.uniformBuffers.get(e).write(i);let s=this.uniformBlocks.get(e).getAllUniforms();k.R.log(4,`Writing to uniform buffer ${String(e)}`,i,s)()}return r}}var z=i(36063),W=i(60218),j=i(88346),H=i(2572),$=i(35387);function X(e){return e.format?`${e.name}<${e.format.name}>`:e.name}class K{id;userData={};
57topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){this.id=e.id||(0,z.L)("geometry"),this.topology=e.topology,this.indices=e.indices||null,this.attributes=e.attributes,this.vertexCount=e.vertexCount,this.bufferLayout=e.bufferLayout||[],this.indices&&(0,C.v)(this.indices.usage===r.h.INDEX)}destroy(){for(let e of(this.indices?.destroy(),Object.values(this.attributes)))e.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices}_calculateVertexCount(e){return e.byteLength/12}}var Y=i(12832);class Z{modules;moduleUniforms;moduleBindings;moduleUniformsChanged;constructor(e){for(let t of(0,Y.KC)(Object.values(e).filter(e=>e.dependencies)))e[t.name]=t;for(let[t,i]of(k.R.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={},Object.entries(e)))this.moduleUniforms[t]=i.defaultUniforms||{},this.moduleBindings[t]={}}destroy(){}setProps(e){for(let t of Object.keys(e)){let i=e[t],r=this.modules[t];if(!r){k.R.warn(`Module ${t} not found`)();continue}let s=this.moduleUniforms[t],n=this.moduleBindings[t],o=r.getUniforms?.(i,s)||i,{uniforms:a,bindings:l}=(0,W.l)(o);this.moduleUniforms[t]={...s,...a},this.moduleBindings[t]={...n,...l}}}getModules(){return Object.values(this.modules)}getUniformValues(){return this.moduleUniforms}getBindings(){let e={};for(let t of Object.values(this.moduleBindings))Object.assign(e,t);return e}getDebugTable(){let e={};for(let[t,i]of Object.entries(this.moduleUniforms))for(let[r,s]of Object.entries(i))e[`${t}.${r}`]={type:this.modules[t].uniformTypes?.[r],value:String(s)};return e}}var q=i(28970);class Q extends q.F{static defaultProps={...q.F.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0};get[Symbol.toStringTag](){return"ComputePipeline"}hash="";constructor(e,t){super(e,t,Q.defaultProps)}}class J{static defaultProps={...N.r.defaultProps};device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};static getDefaultPipelineFactory(e){return e._lumaData.defaultPipelineFactory=e._lumaData.defaultPipelineFactory||new J(e),e._lumaData.defaultPipelineFactory}constructor(e){this.device=e}createRenderPipeline(e){let t={...N.r.defaultProps,...e},i=this._hashRenderPipeline(t);if(!this._renderPipelineCache[i]){let e=this.device.createRenderPipeline({...t,id:t.id?`${t.id}-cached`:void 0});e.hash=i,this._renderPipelineCache[i]={pipeline:e,useCount:0}}return this._renderPipelineCache[i].useCount++,this._renderPipelineCache[i].pipeline}createComputePipeline(e){let t={...Q.defaultProps,...e},i=this._hashComputePipeline(t);if(!this._computePipelineCache[i]){let e=this.device.createComputePipeline({...t,id:t.id?`${t.id}-cached`:void 0});e.hash=i,this._computePipelineCache[i]={pipeline:e,useCount:0}}return this._computePipelineCache[i].useCount++,this._computePipelineCache[i].pipeline}release(e){let t=e.hash,i=e instanceof Q?this._computePipelineCache:this._renderPipelineCache;i[t].useCount--,0===i[t].useCount&&(i[t].pipeline.destroy(),delete i[t])}_hashComputePipeline(e){let t=this._getHash(e.shader.source);return`${t}`}_hashRenderPipeline(e){let t=this._getHash(e.vs.source),i=e.fs?this._getHash(e.fs.source):0,r=this._getHash(JSON.stringify(e.bufferLayout));if("webgl"===this.device.type)return`${t}/${i}V-BL${r}`;{let s=this._getHash(JSON.stringify(e.parameters));return`${t}/${i}V-T${e.topology}P${s}BL${r}`}}_getHash(e){return void 0===this._hashes[e]&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}}var ee=i(78069);class et{static defaultProps={...ee.M.defaultProps};device;_cache={};static getDefaultShaderFactory(e){return e._lumaData.defaultShaderFactory||=new et(e),e._lumaData.defaultShaderFactory}constructor(e){this.device=e}createShader(e){let t=this._hashShader(e),i=this._cache[t];if(!i){let r=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[t]=i={shader:r,useCount:0}}return i.useCount++,i.shader}release(e){let t=this._hashShader(e),i=this._cache[t];i&&(i.useCount--,0===i.useCount&&(delete this._cache[t],i.shader.destroy()))}_hashShader(e){return`${e.stage}:${e.source}`}}let ei=null,er=null;class es{static defaultProps={...N.r.defaultProps,source:null,vs:null,fs:null,id:"unnamed",handle:void 0,userData:{},defines:{},modules:[],moduleSettings:void 0,geometry:null,indexBuffer:null,attributes:{},constantAttributes:{},varyings:[],isInstanced:void 0,instanceCount:0,vertexCount:0,shaderInputs:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:H._.getDefaultShaderAssembler(),debugShaders:void 0,disableWarnings:void 0};device;id;source;vs;fs;pipelineFactory;shaderFactory;userData={};parameters;topology;bufferLayout;isInstanced=void 0;instanceCount=0;vertexCount;indexBuffer=null;bufferAttributes={};constantAttributes={};bindings={};uniforms={};vertexArray;transformFeedback=null;pipeline;shaderInputs;_uniformStore;_attributeInfos={};_gpuGeometry=null;_getModuleUniforms;props;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_destroyed=!1;_lastDrawTimestamp=-1;constructor(e,t){this.props={...es.defaultProps,...t},t=this.props,this.id=t.id||(0,z.L)("model"),this.device=e,Object.assign(this.userData,t.userData);let i=Object.fromEntries(this.props.modules?.map(e=>[e.name,e])||[]);this.setShaderInputs(t.shaderInputs||new Z(i));let r=function(e){return{type:e.type,shaderLanguage:e.info.shadingLanguage,shaderLanguageVersion:e.info.shadingLanguageVersion,gpu:e.info.gpu,features:e.features}}(e),s=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if("webgpu"===this.device.type&&this.props.source){this.props.shaderLayout||=function(e){let t,i={attributes:[],bindings:[]};try{t=function(e){try{return new $.$X(e)}catch(t){if(t instanceof Error)throw t;let e="WGSL parse error";throw"object"==typeof t&&t?.message&&(e+=`: ${t.message} `),"object"==typeof t&&t?.token&&(e+=t.token.line||""),Error(e,{cause:t})}}(e)}catch(e){return k.R.error(e.message)(),i}for(let e of t.uniforms){let t=[];for(let i of e.type?.members||[])t.push({name:i.name,type:X(i.type)});i.bindings.push({type:"uniform",name:e.name,location:e.binding,group:e.group,members:t})}let r=t.entry.vertex[0],s=r?.inputs.length||0;for(let e=0;e<s;e++){let t=r.inputs[e];if("location"===t.locationType){let e=X(t.type);i.attributes.push({name:t.name,location:Number(t.location),type:e})}}return i}(this.props.source);let{source:e,getUniforms:t}=this.props.shaderAssembler.assembleShader({platformInfo:r,...this.props,modules:s});this.source=e,this._getModuleUniforms=t}else{let{vs:e,fs:t,getUniforms:i}=this.props.shaderAssembler.assembleShaderPair({platformInfo:r,...this.props,modules:s});this.vs=e,this.fs=t,this._getModuleUniforms=i}this.vertexCount=this.props.vertexCount,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,t.geometry&&this.setGeometry(t.geometry),this.pipelineFactory=t.pipelineFactory||J.getDefaultPipelineFactory(this.device),this.shaderFactory=t.shaderFactory||et.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=e.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in t&&(this.isInstanced=t.isInstanced),t.instanceCount&&this.setInstanceCount(t.instanceCount),t.vertexCount&&this.setVertexCount(t.vertexCount),t.indexBuffer&&this.setIndexBuffer(t.indexBuffer),t.attributes&&this.setAttributes(t.attributes),t.constantAttributes&&this.setConstantAttributes(t.constantAttributes),t.bindings&&this.setBindings(t.bindings),t.uniforms&&this.setUniforms(t.uniforms),t.moduleSettings&&this.updateModuleSettings(t.moduleSettings),t.transformFeedback&&(this.transformFeedback=t.transformFeedback),Object.seal(this)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let e=this._needsRedraw;return this._needsRedraw=!1,e}setNeedsRedraw(e){this._needsRedraw||=e}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){let t;this.predraw();try{this._logDrawCallStart(),this.pipeline=this._updatePipeline(),this.pipeline.setBindings(this.bindings,{disableWarnings:this.props.disableWarnings}),(0,z.Z)(this.uniforms)||this.pipeline.setUniformsWebGL(this.uniforms);let{indexBuffer:i}=this.vertexArray,r=i?i.byteLength/("uint32"===i.indexType?4:2):void 0;t=this.pipeline.draw({renderPass:e,vertexArray:this.vertexArray,isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.instanceCount,indexCount:r,transformFeedback:this.transformFeedback||void 0,parameters:this.parameters,topology:this.topology})}finally{this._logDrawCallEnd()}return this._logFramebuffer(e),t?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):this._needsRedraw="waiting for resource initialization",t}setGeometry(e){this._gpuGeometry?.destroy();let t=e&&function(e,t){if(t instanceof K)return t;let i=function(e,t){if(!t.indices)return;let i=t.indices.value;return e.createBuffer({usage:r.h.INDEX,data:i})}(e,t),{attributes:s,bufferLayout:o}=function(e,t){let i=[],r={};for(let[s,o]of Object.entries(t.attributes)){let t=s;switch(s){case"POSITION":t="positions";break;case"NORMAL":t="normals";break;case"TEXCOORD_0":t="texCoords";break;case"COLOR_0":t="colors"}r[t]=e.createBuffer({data:o.value,id:`${s}-buffer`});let{value:a,size:l,normalized:h}=o;i.push({name:t,format:function(e,t,i){if(!t||t>4)throw Error(`size ${t}`);let r=n(e);if("uint8"===r&&i&&1===t)return"unorm8-webgl";if("uint8"===r&&i&&3===t)return"unorm8x3-webgl";if("uint8"===r||"sint8"===r||"uint16"===r||"sint16"===r){if(1===t||3===t)throw Error(`size: ${t}`);return i&&(r=r.replace("int","norm")),`${r}x${t}`}return 1===t?r:`${r}x${t}`}(a,l,h)})}return{attributes:r,bufferLayout:i,vertexCount:t._calculateVertexCount(t.attributes,t.indices)}}(e,t);return new K({topology:t.topology||"triangle-list",bufferLayout:o,vertexCount:t.vertexCount,indices:i,attributes:s})}(this.device,e);
57t&&(this.setTopology(t.topology||"triangle-list"),this.bufferLayout=en(t.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(t)),this._gpuGeometry=t}setTopology(e){e!==this.topology&&(this.topology=e,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(e){this.bufferLayout=this._gpuGeometry?en(e,this._gpuGeometry.bufferLayout):e,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry)}setParameters(e){!function e(t,i,r){if(t===i)return!0;if(!r||!t||!i)return!1;if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(let s=0;s<t.length;s++)if(!e(t[s],i[s],r-1))return!1;return!0}if(Array.isArray(i))return!1;if("object"==typeof t&&"object"==typeof i){let s=Object.keys(t),n=Object.keys(i);if(s.length!==n.length)return!1;for(let n of s)if(!i.hasOwnProperty(n)||!e(t[n],i[n],r-1))return!1;return!0}return!1}(e,this.parameters,2)&&(this.parameters=e,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(e){this.instanceCount=e,void 0===this.isInstanced&&e>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(e){this.vertexCount=e,this.setNeedsRedraw("vertexCount")}setShaderInputs(e){for(let t of(this.shaderInputs=e,this._uniformStore=new V(this.shaderInputs.modules),Object.keys(this.shaderInputs.modules))){let e=this._uniformStore.getManagedUniformBuffer(this.device,t);this.bindings[`${t}Uniforms`]=e}this.setNeedsRedraw("shaderInputs")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setBindings(this.shaderInputs.getBindings()),this.setNeedsRedraw("shaderInputs")}setBindings(e){Object.assign(this.bindings,e),this.setNeedsRedraw("bindings")}setTransformFeedback(e){this.transformFeedback=e,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(e){this.vertexArray.setIndexBuffer(e),this.setNeedsRedraw("indexBuffer")}setAttributes(e,t){for(let[i,r]of(e.indices&&k.R.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),Object.entries(e))){let e=this.bufferLayout.find(e=>eo(e).includes(i));if(!e){k.R.warn(`Model(${this.id}): Missing layout for buffer "${i}".`)();continue}let s=eo(e),n=!1;for(let e of s){let t=this._attributeInfos[e];t&&(this.vertexArray.setBuffer(t.location,r),n=!0)}n||(t?.disableWarnings??this.props.disableWarnings)||k.R.warn(`Model(${this.id}): Ignoring buffer "${r.id}" for unknown attribute "${i}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,t){for(let[i,r]of Object.entries(e)){let e=this._attributeInfos[i];e?this.vertexArray.setConstantWebGL(e.location,r):(t?.disableWarnings??this.props.disableWarnings)||k.R.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}setUniforms(e){(0,z.Z)(e)||(this.pipeline.setUniformsWebGL(e),Object.assign(this.uniforms,e)),this.setNeedsRedraw("uniforms")}updateModuleSettings(e){let{bindings:t,uniforms:i}=(0,W.l)(this._getModuleUniforms(e));Object.assign(this.bindings,t),Object.assign(this.uniforms,i),this.setNeedsRedraw("moduleSettings")}_getBindingsUpdateTimestamp(){let e=0;for(let t of Object.values(this.bindings))t instanceof M.X?e=Math.max(e,t.texture.updateTimestamp):t instanceof r.h||t instanceof I.g?e=Math.max(e,t.updateTimestamp):t instanceof O.L||(e=Math.max(e,t.buffer.updateTimestamp));return e}_setGeometryAttributes(e){let t={...e.attributes};for(let[e]of Object.entries(t))this.pipeline.shaderLayout.attributes.find(t=>t.name===e)||"positions"===e||delete t[e];this.vertexCount=e.vertexCount,this.setIndexBuffer(e.indices||null),this.setAttributes(e.attributes,{disableWarnings:!0}),this.setAttributes(t,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate||=e,this.setNeedsRedraw(e)}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null,t=null;this.pipeline&&(k.R.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.pipeline.vs,t=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debug:this.props.debugShaders}),r=null;this.source?r=i:this.fs&&(r=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debug:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,vs:i,fs:r}),this._attributeInfos=(0,j.PV)(this.pipeline.shaderLayout,this.bufferLayout),e&&this.shaderFactory.release(e),t&&this.shaderFactory.release(t)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=k.R.level>3?0:1e4;k.R.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=
57Date.now(),this._logOpen=!0,k.R.group(2,`>>> DRAWING MODEL ${this.id}`,{collapsed:k.R.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=function(e,t){let i={},r="Values";if(0===e.attributes.length&&!e.varyings?.length)return{"No attributes or varyings":{[r]:"N/A"}};for(let t of e.attributes)if(t){let e=`${t.location} ${t.name}: ${t.type}`;i[`in ${e}`]={[r]:t.stepMode||"vertex"}}for(let t of e.varyings||[]){let e=`${t.location} ${t.name}`;i[`out ${e}`]={[r]:JSON.stringify(t.accessor)}}return i}(this.pipeline.shaderLayout,this.id);k.R.table(2,e)();let t=this.shaderInputs.getDebugTable();for(let[e,i]of Object.entries(this.uniforms))t[e]={value:i};k.R.table(2,t)();let i=this._getAttributeDebugTable();k.R.table(2,this._attributeInfos)(),k.R.table(2,i)(),k.R.groupEnd(2)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let t=k.R.get("framebuffer");if(this._drawCount++,!t||this._drawCount++>3&&this._drawCount%60)return;let i=e.props.framebuffer;i&&function(e,{id:t,minimap:i,opaque:r,top:s="0",left:n="0",rgbaScale:o=1}){ei||((ei=document.createElement("canvas")).id=t,ei.title=t,ei.style.zIndex="100",ei.style.position="absolute",ei.style.top=s,ei.style.left=n,ei.style.border="blue 1px solid",ei.style.transform="scaleY(-1)",document.body.appendChild(ei),er=ei.getContext("2d")),(ei.width!==e.width||ei.height!==e.height)&&(ei.width=e.width/2,ei.height=e.height/2,ei.style.width="400px",ei.style.height="400px");let a=e.device.readPixelsToArrayWebGL(e),l=er.createImageData(e.width,e.height);for(let e=0;e<a.length;e+=4)l.data[0+e+0]=a[e+0]*o,l.data[0+e+1]=a[e+1]*o,l.data[0+e+2]=a[e+2]*o,l.data[0+e+3]=r?255:a[e+3]*o;er.putImageData(l,0,0)}(i,{id:i.id,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[t,i]of Object.entries(this._attributeInfos))e[i.location]={name:t,type:i.shaderType,values:this._getBufferOrConstantValues(this.vertexArray.attributes[i.location],i.bufferDataType)};if(this.vertexArray.indexBuffer){let{indexBuffer:t}=this.vertexArray,i="uint32"===t.indexType?new Uint32Array(t.debugData):new Uint16Array(t.debugData);e.indices={name:"indices",type:t.indexType,values:i.toString()}}return e}_getBufferOrConstantValues(e,t){let i=o(t);return(e instanceof r.h?new i(e.debugData):e).toString()}}function en(e,t){let i=[...e];for(let e of t){let t=i.findIndex(t=>t.name===e.name);t<0?i.push(e):i[t]=e}return i}function eo(e){return e.attributes?e.attributes?.map(e=>e.attribute):[e.name]}class ea{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,t=es.defaultProps){(0,C.v)(ea.isSupported(e),"BufferTransform not yet implemented on WebGPU"),this.device=e,this.model=new es(this.device,{id:t.id||"buffer-transform-model",fs:t.fs||function(e){let{input:t,inputChannels:i,output:r}={};if(!t)return L;if(!i)throw Error("inputChannels");let s=function(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw Error(`invalid channels: ${e}`)}}(i),n=function(e,t){switch(t){case 1:return`vec4(${e}, 0.0, 0.0, 1.0)`;case 2:return`vec4(${e}, 0.0, 1.0)`;case 3:return`vec4(${e}, 1.0)`;case 4:return e;default:throw Error(`invalid channels: ${t}`)}}(t,i);return`\ 58#version 300 es 59in ${s} ${t}; 60out vec4 ${r}; 61void main() { 62 ${r} = ${n}; 63}`}(),topology:t.topology||"point-list",...t}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:t.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback),Object.seal(this)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(e){let t=this.device.beginRenderPass(e);this.model.draw(t),t.end()}update(){console.warn("TextureTransform#update() not implemented")}getBuffer(e){return this.transformFeedback.getBuffer(e)}readAsync(e){let t=this.getBuffer(e);if(t instanceof r.h)return t.readAsync();let{buffer:i,byteOffset:s=0,byteLength:n=i.byteLength}=t;return i.readAsync(s,n)}}function el(e,t=[],i=0){let r=Math.fround(e),s=e-r;return t[i]=r,t[i+1]=s,t}let eh={ONE:1},eu={name:"fp64-arithmetic",vs:`\ 64uniform float ONE; 65vec2 split(float a) { 66const float SPLIT = 4097.0; 67float t = a * SPLIT; 68#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 69float a_hi = t * ONE - (t - a); 70float a_lo = a * ONE - a_hi; 71#else 72float a_hi = t - (t - a); 73float a_lo = a - a_hi; 74#endif 75return vec2(a_hi, a_lo); 76} 77vec2 split2(vec2 a) { 78vec2 b = split(a.x); 79b.y += a.y; 80return b; 81} 82vec2 quickTwoSum(float a, float b) { 83#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 84float sum = (a + b) * ONE; 85float err = b - (sum - a) * ONE; 86#else 87float sum = a + b; 88float err = b - (sum - a); 89#endif 90return vec2(sum, err); 91} 92vec2 twoSum(float a, float b) { 93float s = (a + b); 94#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 95float v = (s * ONE - a) * ONE; 96float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v); 97#else 98float v = s - a; 99float err = (a - (s - v)) + (b - v); 100#endif 101return vec2(s, err); 102} 103vec2 twoSub(float a, float b) { 104float s = (a - b); 105#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 106float v = (s * ONE - a) * ONE; 107float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v); 108#else 109float v = s - a; 110float err = (a - (s - v)) - (b + v); 111#endif 112return vec2(s, err); 113} 114vec2 twoSqr(float a) { 115float prod = a * a; 116vec2 a_fp64 = split(a); 117#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 118float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x * 119a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE; 120#else 121float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y; 122#endif 123return vec2(prod, err); 124} 125vec2 twoProd(float a, float b) { 126float prod = a * b; 127vec2 a_fp64 = split(a); 128vec2 b_fp64 = split(b); 129float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y + 130a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y; 131return vec2(prod, err); 132} 133vec2 sum_fp64(vec2 a, vec2 b) { 134vec2 s, t;
135s = twoSum(a.x, b.x); 136t = twoSum(a.y, b.y); 137s.y += t.x; 138s = quickTwoSum(s.x, s.y); 139s.y += t.y; 140s = quickTwoSum(s.x, s.y); 141return s; 142} 143vec2 sub_fp64(vec2 a, vec2 b) { 144vec2 s, t; 145s = twoSub(a.x, b.x); 146t = twoSub(a.y, b.y); 147s.y += t.x; 148s = quickTwoSum(s.x, s.y); 149s.y += t.y; 150s = quickTwoSum(s.x, s.y); 151return s; 152} 153vec2 mul_fp64(vec2 a, vec2 b) { 154vec2 prod = twoProd(a.x, b.x); 155prod.y += a.x * b.y; 156#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND) 157prod = split2(prod); 158#endif 159prod = quickTwoSum(prod.x, prod.y); 160prod.y += a.y * b.x; 161#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND) 162prod = split2(prod); 163#endif 164prod = quickTwoSum(prod.x, prod.y); 165return prod; 166} 167vec2 div_fp64(vec2 a, vec2 b) { 168float xn = 1.0 / b.x; 169#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND) 170vec2 yn = mul_fp64(a, vec2(xn, 0)); 171#else 172vec2 yn = a * xn; 173#endif 174float diff = (sub_fp64(a, mul_fp64(b, yn))).x; 175vec2 prod = twoProd(xn, diff); 176return sum_fp64(yn, prod); 177} 178vec2 sqrt_fp64(vec2 a) { 179if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0); 180if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0); 181float x = 1.0 / sqrt(a.x); 182float yn = a.x * x; 183#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND) 184vec2 yn_sqr = twoSqr(yn) * ONE; 185#else 186vec2 yn_sqr = twoSqr(yn); 187#endif 188float diff = sub_fp64(a, yn_sqr).x; 189vec2 prod = twoProd(x * 0.5, diff); 190#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND) 191return sum_fp64(split(yn), prod); 192#else 193return sum_fp64(vec2(yn, 0.0), prod); 194#endif 195} 196`,getUniforms:function(){return eh},fp64ify:el,fp64LowPart:function(e){return e-Math.fround(e)},fp64ifyMatrix4:function(e){let t=new Float32Array(32);for(let i=0;i<4;++i)for(let r=0;r<4;++r){let s=4*i+r;el(e[4*r+i],t,2*s)}return t}};function ec(e){let{source:t,target:i,start:r=0,size:s,getData:n}=e,o=e.end||i.length,a=t.length,l=o-r;if(a>l)return void i.set(t.subarray(0,l),r);if(i.set(t,r),!n)return;let h=a;for(;h<l;){let e=n(h,t);for(let t=0;t<s;t++)i[r+h]=e[t]||0,h++}}function ed(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw Error(`No defined attribute type for size "${e}"`)}}function ef(e){switch(e){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw Error("invalid type size")}}function ep(e){e.push(e.shift())}function eg({device:e,source:t,target:i}){return(!i||i.byteLength<t.byteLength)&&(i?.destroy(),i=e.createBuffer({byteLength:t.byteLength,usage:t.usage})),i}function e_({device:e,buffer:t,attribute:i,fromLength:r,toLength:s,fromStartIndices:n,getData:o=e=>e}){let a=i.doublePrecision&&i.value instanceof Float64Array?2:1,l=i.size*a,h=i.byteOffset,u=i.settings.bytesPerElement<4?h/i.settings.bytesPerElement*4:h,c=i.startIndices,d=n&&c,f=i.isConstant;if(!d&&t&&r>=s)return t;let p=i.value instanceof Float64Array?Float32Array:i.value.constructor,g=f?i.value:new p(i.getBuffer().readSyncWebGL(h,s*p.BYTES_PER_ELEMENT).buffer);if(i.settings.normalized&&!f){let e=o;o=(t,r)=>i.normalizeConstant(e(t,r))}let _=f?(e,t)=>o(g,t):(e,t)=>o(g.subarray(e+h,e+h+l),t),m=new Float32Array(t?t.readSyncWebGL(u,4*r).buffer:0),E=new Float32Array(s);return!function({source:e,target:t,size:i,getData:r,sourceStartIndices:s,targetStartIndices:n}){if(!s||!n)return ec({source:e,target:t,size:i,getData:r});let o=0,a=0,l=r&&((e,t)=>r(e+a,t)),h=Math.min(s.length,n.length);for(let r=1;r<h;r++){let h=s[r]*i,u=n[r]*i;ec({source:e.subarray(o,h),target:t,start:a,end:u,size:i,getData:l}),o=h,a=u}a<t.length&&ec({source:[],target:t,start:a,size:i,getData:l})}({source:m,target:E,sourceStartIndices:n,targetStartIndices:c,size:l,getData:_}),(!t||t.byteLength<E.byteLength+u)&&(t?.destroy(),t=e.createBuffer({byteLength:E.byteLength+u,usage:35050})),t.write(E,u),t}var em=i(27126);class eE{constructor({device:e,attribute:t,timeline:i}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new em.A(i),this.attribute=t,this.attributeInTransition=function(e){let{device:t,settings:i,value:r}=e,s=new S(t,i);return s.setData({value:r instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:i.normalized}),s}(t),this.currentStartIndices=t.startIndices}get inProgress(){return this.transition.inProgress}start(e,t,i=1/0){this.settings=e,this.currentStartIndices=this.attribute.startIndices,this.currentLength=function(e,t){let{doublePrecision:i,settings:r,value:s,size:n}=e,o=i&&s instanceof Float64Array?2:1,a=0,{shaderAttributes:l}=e.settings;if(l)for(let e of Object.values(l))a=Math.max(a,e.vertexOffset??0);return(r.noAlloc?s.length:(t+a)*n)*o}(this.attribute,t),this.transition.start({...e,duration:i})}update(){let e=this.transition.update();return e&&this.onUpdate(),e}setBuffer(e){this.attributeInTransition.setData({buffer:e,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){for(let e of(this.cancel(),this.buffers))e.destroy();this.buffers.length=0}}
196class ev extends eE{constructor({device:e,attribute:t,timeline:i}){super({device:e,attribute:t,timeline:i}),this.type="interpolation",this.transform=function(e,t){let i=t.size,r=ed(i),s=ef(i),n=t.getBufferLayout();return eA(t)?new ea(e,{vs:eb,bufferLayout:[{name:"aFrom",byteStride:8*i,attributes:[{attribute:"aFrom",format:s,byteOffset:0},{attribute:"aFrom64Low",format:s,byteOffset:4*i}]},{name:"aTo",byteStride:8*i,attributes:[{attribute:"aTo",format:s,byteOffset:0},{attribute:"aTo64Low",format:s,byteOffset:4*i}]}],modules:[eu],defines:{ATTRIBUTE_TYPE:r,ATTRIBUTE_SIZE:i},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new ea(e,{vs:ey,bufferLayout:[{name:"aFrom",format:s},{name:"aTo",format:n.attributes[0].format}],defines:{ATTRIBUTE_TYPE:r},varyings:["vCurrent"],disableWarnings:!0})}(e,t)}start(e,t){let i=this.currentLength,r=this.currentStartIndices;if(super.start(e,t,e.duration),e.duration<=0)return void this.transition.cancel();let{buffers:s,attribute:n}=this;ep(s),s[0]=e_({device:this.device,buffer:s[0],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:r,getData:e.enter}),s[1]=eg({device:this.device,source:s[0],target:s[1]}),this.setBuffer(s[1]);let{transform:o}=this,a=o.model,l=Math.floor(this.currentLength/n.size);eA(n)&&(l/=2),a.setVertexCount(l),n.isConstant?(a.setAttributes({aFrom:s[0]}),a.setConstantAttributes({aTo:n.value})):a.setAttributes({aFrom:s[0],aTo:n.getBuffer()}),o.transformFeedback.setBuffers({vCurrent:s[1]})}onUpdate(){let{duration:e,easing:t}=this.settings,{time:i}=this.transition,r=i/e;t&&(r=t(r));let{model:s}=this.transform;s.setUniforms({time:r}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}}let ey=`\ 197#version 300 es 198#define SHADER_NAME interpolation-transition-vertex-shader 199 200uniform float time; 201in ATTRIBUTE_TYPE aFrom; 202in ATTRIBUTE_TYPE aTo; 203out ATTRIBUTE_TYPE vCurrent; 204 205void main(void) { 206 vCurrent = mix(aFrom, aTo, time); 207 gl_Position = vec4(0.0); 208} 209`,eb=`\ 210#version 300 es 211#define SHADER_NAME interpolation-transition-vertex-shader 212 213uniform float time; 214in ATTRIBUTE_TYPE aFrom; 215in ATTRIBUTE_TYPE aFrom64Low; 216in ATTRIBUTE_TYPE aTo; 217in ATTRIBUTE_TYPE aTo64Low; 218out ATTRIBUTE_TYPE vCurrent; 219out ATTRIBUTE_TYPE vCurrent64Low; 220 221vec2 mix_fp64(vec2 a, vec2 b, float x) { 222 vec2 range = sub_fp64(b, a); 223 return sum_fp64(a, mul_fp64(range, vec2(x, 0.0))); 224} 225 226void main(void) { 227 for (int i=0; i<ATTRIBUTE_SIZE; i++) { 228 vec2 value = mix_fp64(vec2(aFrom[i], aFrom64Low[i]), vec2(aTo[i], aTo64Low[i]), time); 229 vCurrent[i] = value.x; 230 vCurrent64Low[i] = value.y; 231 } 232 gl_Position = vec4(0.0); 233} 234`;function eA(e){return e.doublePrecision&&e.value instanceof Float64Array}class eT extends eE{constructor({device:e,attribute:t,timeline:i}){var r,s;super({device:e,attribute:t,timeline:i}),this.type="spring",this.texture=e.createTexture({data:new Uint8Array(4),format:"rgba8unorm",mipmaps:!1,width:1,height:1}),this.framebuffer=(r=e,s=this.texture,r.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[s]})),this.transform=function(e,t){let i=ed(t.size),r=ef(t.size);return new ea(e,{vs:eR,fs:eS,bufferLayout:[{name:"aPrev",format:r},{name:"aCur",format:r},{name:"aTo",format:t.getBufferLayout().attributes[0].format}],varyings:["vNext"],defines:{ATTRIBUTE_TYPE:i},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}(e,t)}start(e,t){let i=this.currentLength,r=this.currentStartIndices;super.start(e,t);let{buffers:s,attribute:n}=this;for(let t=0;t<2;t++)s[t]=e_({device:this.device,buffer:s[t],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:r,getData:e.enter});s[2]=eg({device:this.device,source:s[0],target:s[2]}),this.setBuffer(s[1]);let{model:o}=this.transform;o.setVertexCount(Math.floor(this.currentLength/n.size)),n.isConstant?o.setConstantAttributes({aTo:n.value}):o.setAttributes({aTo:n.getBuffer()})}onUpdate(){let{buffers:e,transform:t,framebuffer:i,transition:r}=this,s=this.settings;t.model.setAttributes({aPrev:e[0],aCur:e[1]}),t.transformFeedback.setBuffers({vNext:e[2]}),t.model.setUniforms({stiffness:s.stiffness,damping:s.damping}),t.run({framebuffer:i,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),ep(e),this.setBuffer(e[1]),this.device.readPixelsToArrayWebGL(i)[0]>0||r.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}}let eR=`\ 235#version 300 es 236#define SHADER_NAME spring-transition-vertex-shader 237 238#define EPSILON 0.00001 239 240uniform float stiffness; 241uniform float damping; 242in ATTRIBUTE_TYPE aPrev; 243in ATTRIBUTE_TYPE aCur; 244in ATTRIBUTE_TYPE aTo; 245out ATTRIBUTE_TYPE vNext; 246out float vIsTransitioningFlag; 247 248ATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) { 249 ATTRIBUTE_TYPE velocity = cur - prev; 250 ATTRIBUTE_TYPE delta = dest - cur; 251 ATTRIBUTE_TYPE spring = delta * stiffness; 252 ATTRIBUTE_TYPE damper = velocity * -1.0 * damping; 253 return spring + damper + velocity + cur; 254} 255 256void main(void) { 257 bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON; 258 vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0; 259 260 vNext = getNextValue(aCur, aPrev, aTo); 261 gl_Position = vec4(0, 0, 0, 1); 262 gl_PointSize = 100.0; 263} 264`,eS=`\ 265#version 300 es 266#define SHADER_NAME spring-transition-is-transitioning-fragment-shader 267 268in float vIsTransitioningFlag; 269 270out vec4 fragColor; 271 272void main(void) { 273 if (vIsTransitioningFlag == 0.0) { 274 discard; 275 } 276 fragColor = vec4(1.0); 277}`,ew={interpolation:ev,spring:eT};class eP{constructor(e,{id:t,timeline:i}){if(!e)throw Error("AttributeTransitionManager is constructed without device");this.id=t,this.device=e,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1}finalize(){for(let e in this.transitions)this._removeTransition(e)}update({attributes:e,transitions:t,numInstances:i}){for(let r in this.numInstances=i||1,e){let i=e[r],s=i.getTransitionSetting(t);s&&this._updateAttribute(r,i,s)}for(let i in this.transitions){let r=e[i];r&&r.getTransitionSetting(t)||this._removeTransition(i)}}hasAttribute(e){let t=this.transitions[e];return t&&t.inProgress}getAttributes(){let e={};for(let t in this.transitions){let i=this.transitions[t];i.inProgress&&(e[t]=i.attributeInTransition)}return e}run(){if(0===this.numInstances)return!1;for(let e in this.transitions)this.transitions[e].update()&&(this.needsRedraw=!0);let e=this.needsRedraw;return this.needsRedraw=!1,e}_removeTransition(e){this.transitions[e].delete(),delete this.transitions[e]}_updateAttribute(e,t,i){let r=this.transitions[e],s=!r||r.type!==i.type;if(s){r&&this._removeTransition(e);let n=ew[i.type];
277n?this.transitions[e]=new n({attribute:t,timeline:this.timeline,device:this.device}):(c.A.error(`unsupported transition type '${i.type}'`)(),s=!1)}(s||t.needsRedraw())&&(this.needsRedraw=!0,this.transitions[e].start(i,this.numInstances))}}let eC="attributeManager.invalidate";class ex{constructor(e,{id:t="attribute-manager",stats:i,timeline:r}={}){this.mergeBoundsMemoized=(0,w.A)(u._Z),this.id=t,this.device=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new eP(e,{id:`${t}-transitions`,timeline:r}),Object.seal(this)}finalize(){for(let e in this.attributes)this.attributes[e].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(e={clearRedrawFlags:!1}){let t=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!e.clearRedrawFlags,t&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(e){this._add(e)}addInstanced(e){this._add(e,{stepMode:"instance"})}remove(e){for(let t of e)void 0!==this.attributes[t]&&(this.attributes[t].delete(),delete this.attributes[t])}invalidate(e,t){let i=this._invalidateTrigger(e,t);(0,P.A)(eC,this,e,i)}invalidateAll(e){for(let t in this.attributes)this.attributes[t].setNeedsUpdate(t,e);(0,P.A)(eC,this,"all")}update({data:e,numInstances:t,startIndices:i=null,transitions:r,props:s={},buffers:n={},context:o={}}){let a=!1;for(let r in(0,P.A)("attributeManager.updateStart",this),this.stats&&this.stats.get("Update Attributes").timeStart(),this.attributes){let l=this.attributes[r],h=l.settings.accessor;l.startIndices=i,l.numInstances=t,s[r]&&c.A.removed(`props.${r}`,`data.attributes.${r}`)(),l.setExternalBuffer(n[r])||l.setBinaryValue("string"==typeof h?n[h]:void 0,e.startIndices)||"string"==typeof h&&!n[h]&&l.setConstantValue(s[h])||l.needsUpdate()&&(a=!0,this._updateAttribute({attribute:l,numInstances:t,data:e,props:s,context:o})),this.needsRedraw=this.needsRedraw||l.needsRedraw()}a&&(0,P.A)("attributeManager.updateEnd",this,t),this.stats&&this.stats.get("Update Attributes").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:t,transitions:r})}updateTransition(){let{attributeTransitionManager:e}=this,t=e.run();return this.needsRedraw=this.needsRedraw||t,t}getAttributes(){return{...this.attributes,...this.attributeTransitionManager.getAttributes()}}getBounds(e){let t=e.map(e=>this.attributes[e]?.getBounds());return this.mergeBoundsMemoized(t)}getChangedAttributes(e={clearChangedFlags:!1}){let{attributes:t,attributeTransitionManager:i}=this,r={...i.getAttributes()};for(let s in t){let n=t[s];n.needsRedraw(e)&&!i.hasAttribute(s)&&(r[s]=n)}return r}getBufferLayouts(e){return Object.values(this.getAttributes()).map(t=>t.getBufferLayout(e))}_add(e,t){for(let i in e){let r=e[i],s={...r,id:i,size:r.isIndexed&&1||r.size||1,...t};this.attributes[i]=new S(this.device,s)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let e={};for(let t in this.attributes)this.attributes[t].getUpdateTriggers().forEach(i=>{e[i]||(e[i]=[]),e[i].push(t)});this.updateTriggers=e}_invalidateTrigger(e,t){let{attributes:i,updateTriggers:r}=this,s=r[e];return s&&s.forEach(e=>{let r=i[e];r&&r.setNeedsUpdate(r.id,t)}),s}_updateAttribute(e){let{attribute:t,numInstances:i}=e;if((0,P.A)("attribute.updateStart",t),t.constant)return void t.setConstantValue(t.value);t.allocate(i)&&(0,P.A)("attribute.allocate",t,i),t.updateBuffer(e)&&(this.needsRedraw=!0,(0,P.A)("attribute.updateEnd",t,i))}}var eL=i(8014);class eM extends em.A{get value(){return this._value}_onUpdate(){let{time:e,settings:{fromValue:t,toValue:i,duration:r,easing:s}}=this,n=s(e/r);this._value=(0,eL.Cc)(t,i,n)}}function eI(e,t,i,r,s){let n=t-e;return(i-t)*s+-n*r+n+t}function eO(e,t){if(Array.isArray(e)){let i=0;for(let r=0;r<e.length;r++){let s=e[r]-t[r];i+=s*s}return Math.sqrt(i)}return Math.abs(e-t)}class eN extends em.A{get value(){return this._currValue}_onUpdate(){let{fromValue:e,toValue:t,damping:i,stiffness:r}=this.settings,{_prevValue:s=e,_currValue:n=e}=this,o=function(e,t,i,r,s){if(Array.isArray(i)){let n=[];for(let o=0;o<i.length;o++)n[o]=eI(e[o],t[o],i[o],r,s);return n}return eI(e,t,i,r,s)}(s,n,t,i,r),a=eO(o,t),l=eO(o,n);a<1e-5&&l<1e-5&&(o=t,this.end()),this._prevValue=n,this._currValue=o}}let eF={interpolation:eM,spring:eN};class eD{constructor(e){this.transitions=new Map,this.timeline=e}get active(){return this.transitions.size>0}add(e,t,i,r){let{transitions:s}=this;if(s.has(e)){let i=s.get(e),{value:r=i.settings.fromValue}=i;t=r,this.remove(e)}if(!(r=R(r)))return;let n=eF[r.type];if(!n)return void c.A.error(`unsupported transition type '${r.type}'`)();let o=new n(this.timeline);o.start({...r,fromValue:t,toValue:i}),s.set(e,o)}remove(e){let{transitions:t}=this;t.has(e)&&(t.get(e).cancel(),t.delete(e))}update(){let e={};for(let[t,i]of this.transitions)i.update(),e[t]=i.value,i.inProgress||this.remove(t);return e}clear(){for(let e of this.transitions.keys())this.remove(e)}}var eB=i(60686);function eU({newProps:e,oldProps:t,ignoreProps:i={},propTypes:r={},triggerName:s="props"}){if(t===e)return!1;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return`${s} changed shallowly`;for(let n of Object.keys(e))if(!(n in i)){if(!(n in t))return`${s}.${n} added`;let i=ek(e[n],t[n],r[n]);if(i)return`${s}.${n} ${i}`}for(let n of Object.keys(t))if(!(n in i)){if(!(n in e))return`${s}.${n} dropped`;if(!Object.hasOwnProperty.call(e,n)){let i=ek(e[n],t[n],r[n]);if(i)return`${s}.${n} ${i}`}}return!1}function ek(e,t,i){let r=i&&i.equal;return r&&!r(e,t,i)||!r&&(r=e&&t&&e.equals)&&!r.call(e,t)?"changed deeply":r||t===e?null:"changed shallowly"}function eG(e,t,i){let r=e.updateTriggers[i];r=null==r?{}:r;let s=t.updateTriggers[i];return eU({oldProps:s=null==s?{}:s,newProps:r,triggerName:i})}function eV(e,t){if(!t)return e;let i={...e,...t};if("defines"in t&&(i.defines={...e.defines,...t.defines}),"modules"in t&&(i.modules=(e.modules||[]).concat(t.modules),t.modules.some(e=>"project64"===e.name))){let e=i.modules.findIndex(e=>"project32"===e.name);e>=0&&i.modules.splice(e,1)}if("inject"in t)if(e.inject){let r={...e.inject};
277for(let e in t.inject)r[e]=(r[e]||"")+t.inject[e];i.inject=r}else i.inject=t.inject;return i}var ez=i(34157),eW=i(89357),ej=i(61745),eH=i(6992),e$=i(24694);let eX=[0,0,0];function eK(e,t,i=!1){let r=t.projectPosition(e);if(i&&t instanceof eW.A){let[i,s,n=0]=e,o=t.getDistanceScales([i,s]);r[2]=n*o.unitsPerMeter[2]}return r}function eY(e,{viewport:t,modelMatrix:i,coordinateSystem:r,coordinateOrigin:n,offsetMode:o}){let[a,l,h=0]=e;switch(i&&([a,l,h]=ej.Z0([],[a,l,h,1],i)),r){case s.rf.LNGLAT:return eK([a,l,h],t,o);case s.rf.LNGLAT_OFFSETS:return eK([a+n[0],l+n[1],h+(n[2]||0)],t,o);case s.rf.METER_OFFSETS:return eK((0,e$.dT)(n,[a,l,h]),t,o);case s.rf.CARTESIAN:default:return t.isGeospatial?[a+n[0],l+n[1],h+n[2]]:t.projectPosition([a,l,h])}}let eZ={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},eq={};var eQ=i(95037);let eJ={boolean:{validate:(e,t)=>!0,equal:(e,t,i)=>!!e==!!t},number:{validate:(e,t)=>Number.isFinite(e)&&(!("max"in t)||e<=t.max)&&(!("min"in t)||e>=t.min)},color:{validate:(e,t)=>t.optional&&!e||e1(e)&&(3===e.length||4===e.length),equal:(e,t,i)=>(0,eQ.b)(e,t,1)},accessor:{validate(e,t){let i=e3(e);return"function"===i||i===e3(t.value)},equal:(e,t,i)=>"function"==typeof t||(0,eQ.b)(e,t,1)},array:{validate:(e,t)=>t.optional&&!e||e1(e),equal(e,t,i){let{compare:r}=i,s=Number.isInteger(r)?r:+!!r;return r?(0,eQ.b)(e,t,s):e===t}},object:{equal(e,t,i){if(i.ignore)return!0;let{compare:r}=i,s=Number.isInteger(r)?r:+!!r;return r?(0,eQ.b)(e,t,s):e===t}},function:{validate:(e,t)=>t.optional&&!e||"function"==typeof e,equal:(e,t,i)=>!i.compare&&!1!==i.ignore||e===t},data:{transform:(e,t,i)=>{if(!e)return e;let{dataTransform:r}=i.props;return r?r(e):"string"==typeof e.shape&&e.shape.endsWith("-table")&&Array.isArray(e.data)?e.data:e}},image:{transform:(e,t,i)=>{let r=i.context;return r&&r.device?function(e,t,i,r){if(i instanceof I.g)return i;i.constructor&&"Object"!==i.constructor.name&&(i={data:i});let s=null;i.compressed&&(s={minFilter:"linear",mipmapFilter:i.data.length>1?"nearest":"linear"});let n=t.createTexture({...i,sampler:{...eZ,...s,...r}});return eq[n.id]=e,n}(i.id,r.device,e,{...t.parameters,...i.props.textureParameters}):null},release:(e,t,i)=>{!function(e,t){t&&t instanceof I.g&&eq[t.id]===e&&(t.delete(),delete eq[t.id])}(i.id,e)}}};function e0(e,t){return"type"in t?{name:e,...eJ[t.type],...t}:"value"in t?{name:e,type:e3(t.value),...t}:{name:e,type:"object",value:t}}function e1(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function e3(e){return e1(e)?"array":null===e?"null":typeof e}function e2(e,t){return Object.prototype.hasOwnProperty.call(e,t)}let e6=0;class e4{constructor(...e){this.props=function(e,t){let i;for(let e=t.length-1;e>=0;e--){let r=t[e];"extensions"in r&&(i=r.extensions)}let r=Object.create(function e(t,i){var r,s;if(!(t instanceof e5.constructor))return{};let n="_mergedDefaultProps";if(i)for(let e of i){let t=e.constructor;t&&(n+=`:${t.extensionName||t.name}`)}let o=e2(r=t,s=n)&&r[s];return o||(t[n]=function(t,i){if(!t.prototype)return null;let r=e(Object.getPrototypeOf(t)),s=function(e){let t={},i={},r={};for(let[s,n]of Object.entries(e)){let e=n?.deprecatedFor;if(e)r[s]=Array.isArray(e)?e:[e];else{let e=function(e,t){switch(e3(t)){case"object":return e0(e,t);case"array":return e0(e,{type:"array",value:t,compare:!1});case"boolean":return e0(e,{type:"boolean",value:t});case"number":return e0(e,{type:"number",value:t});case"function":return e0(e,{type:"function",value:t,compare:!0});default:return{name:e,type:"unknown",value:t}}}(s,n);t[s]=e,i[s]=e.value}}return{propTypes:t,defaultProps:i,deprecatedProps:r}}(function(e,t){return e2(e,t)&&e[t]}(t,"defaultProps")||{}),n=Object.assign(Object.create(null),r,s.defaultProps),o=Object.assign(Object.create(null),r?.[eB.fW],s.propTypes),a=Object.assign(Object.create(null),r?.[eB.uH],s.deprecatedProps);for(let t of i){let i=e(t.constructor);i&&(Object.assign(n,i),Object.assign(o,i[eB.fW]),Object.assign(a,i[eB.uH]))}return Object.defineProperties(n,{id:{writable:!0,value:function(e){let t=e.componentName;return t||c.A.warn(`${e.name}.componentName not specified`)(),t||e.name}(t)}}),function(e,t){let i={},r={};for(let e in t){let s=t[e],{name:n,value:o}=s;s.async&&(i[n]=o,r[n]=function(e){return{enumerable:!0,set(t){"string"==typeof t||t instanceof Promise||E(t)?this[eB.YN][e]=t:this[eB.vf][e]=t}
277,get(){if(this[eB.vf]){if(e in this[eB.vf])return this[eB.vf][e]||this[eB.jA][e];if(e in this[eB.YN]){let t=this[eB.r3]&&this[eB.r3].internalState;if(t&&t.hasAsyncProp(e))return t.getAsyncProp(e)||this[eB.jA][e]}}return this[eB.jA][e]}}}(n))}e[eB.jA]=i,e[eB.YN]={},Object.defineProperties(e,r)}(n,o),function(e,t){for(let i in t)Object.defineProperty(e,i,{enumerable:!1,set(e){let r=`${this.id}: ${i}`;for(let r of t[i])e2(this,r)||(this[r]=e);c.A.deprecated(r,t[i].join("/"))()}})}(n,a),n[eB.fW]=o,n[eB.uH]=a,0!==i.length||e2(t,"_propTypes")||(t._propTypes=o),n}(t,i||[]))}(e.constructor,i));r[eB.r3]=e,r[eB.YN]={},r[eB.vf]={};for(let e=0;e<t.length;++e){let i=t[e];for(let e in i)r[e]=i[e]}return Object.freeze(r),r}(this,e),this.id=this.props.id,this.count=e6++}clone(e){let{props:t}=this,i={};for(let e in t[eB.jA])e in t[eB.vf]?i[e]=t[eB.vf][e]:e in t[eB.YN]&&(i[e]=t[eB.YN][e]);return new this.constructor({...t,...i,...e})}}e4.componentName="Component",e4.defaultProps={};let e5=e4,e8=Object.freeze({});class e7{constructor(e){this.component=e,this.asyncProps={},this.onAsyncPropUpdated=()=>{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let e in this.asyncProps){let t=this.asyncProps[e];t&&t.type&&t.type.release&&t.type.release(t.resolvedValue,t.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||e8}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(e){return e in this.asyncProps}getAsyncProp(e){let t=this.asyncProps[e];return t&&t.resolvedValue}isAsyncPropLoading(e){if(e){let t=this.asyncProps[e];return!!(t&&t.pendingLoadCount>0&&t.pendingLoadCount!==t.resolvedLoadCount)}for(let e in this.asyncProps)if(this.isAsyncPropLoading(e))return!0;return!1}reloadAsyncProp(e,t){this._watchPromise(e,Promise.resolve(t))}setAsyncProps(e){this.component=e[eB.r3]||this.component;let t=e[eB.vf]||{},i=e[eB.YN]||e,r=e[eB.jA]||{};for(let e in t){let i=t[e];this._createAsyncPropData(e,r[e]),this._updateAsyncProp(e,i),t[e]=this.getAsyncProp(e)}for(let e in i){let t=i[e];this._createAsyncPropData(e,r[e]),this._updateAsyncProp(e,t)}}_fetch(e,t){return null}_onResolve(e,t){}_onError(e,t){}_updateAsyncProp(e,t){if(this._didAsyncInputValueChange(e,t)){if("string"==typeof t&&(t=this._fetch(e,t)),t instanceof Promise)return void this._watchPromise(e,t);if(E(t))return void this._resolveAsyncIterable(e,t);this._setPropValue(e,t)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps)for(let e in this.oldAsyncProps=Object.create(this.oldProps),this.asyncProps)Object.defineProperty(this.oldAsyncProps,e,{enumerable:!0,value:this.oldProps[e]})}_didAsyncInputValueChange(e,t){let i=this.asyncProps[e];return t!==i.resolvedValue&&t!==i.lastValue&&(i.lastValue=t,!0)}_setPropValue(e,t){this._freezeAsyncOldProps();let i=this.asyncProps[e];i&&(t=this._postProcessValue(i,t),i.resolvedValue=t,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(e,t,i){let r=this.asyncProps[e];r&&i>=r.resolvedLoadCount&&void 0!==t&&(this._freezeAsyncOldProps(),r.resolvedValue=t,r.resolvedLoadCount=i,this.onAsyncPropUpdated(e,t))}_watchPromise(e,t){let i=this.asyncProps[e];if(i){i.pendingLoadCount++;let r=i.pendingLoadCount;t.then(t=>{this.component&&(t=this._postProcessValue(i,t),this._setAsyncPropValue(e,t,r),this._onResolve(e,t))}).catch(t=>{this._onError(e,t)})}}async _resolveAsyncIterable(e,t){if("data"!==e)return void this._setPropValue(e,t);let i=this.asyncProps[e];if(!i)return;i.pendingLoadCount++;let r=i.pendingLoadCount,s=[],n=0;for await(let i of t){if(!this.component)return;let{dataTransform:t}=this.component.props;Object.defineProperty(s=t?t(i,s):s.concat(i),"__diff",{enumerable:!1,value:[{startRow:n,endRow:s.length}]}),n=s.length,this._setAsyncPropValue(e,s,r)}
277this._onResolve(e,s)}_postProcessValue(e,t){let i=e.type;return i&&this.component&&(i.release&&i.release(e.resolvedValue,i,this.component),i.transform)?i.transform(t,i,this.component):t}_createAsyncPropData(e,t){if(!this.asyncProps[e]){let i=this.component&&this.component.props[eB.fW];this.asyncProps[e]={type:i&&i[e],lastValue:null,resolvedValue:t,pendingLoadCount:0,resolvedLoadCount:0}}}}class e9 extends e7{constructor({attributeManager:e,layer:t}){super(t),this.attributeManager=e,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(e,t){let i=this.layer,r=i?.props.fetch;return r?r(t,{propName:e,layer:i}):super._fetch(e,t)}_onResolve(e,t){let i=this.layer;if(i){let r=i.props.onDataLoad;"data"===e&&r&&r(t,{propName:e,layer:i})}}_onError(e,t){let i=this.layer;i&&i.raiseError(t,`loading ${e} of ${this.layer}`)}}var te=i(7334);let tt=Object.freeze([]),ti=(0,w.A)(({oldViewport:e,viewport:t})=>e.equals(t)),tr=new Uint8ClampedArray(0),ts={data:{type:"data",value:tt,async:!0},dataComparator:{type:"function",value:null,optional:!0},_dataDiff:{type:"function",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:"function",value:null,optional:!0},onDataLoad:{type:"function",value:null,optional:!0},onError:{type:"function",value:null,optional:!0},fetch:{type:"function",value:(e,{propName:t,layer:i,loaders:r,loadOptions:s,signal:n})=>{let{resourceManager:o}=i.context;s=s||i.getLoadOptions(),r=r||i.props.loaders,n&&(s={...s,fetch:{...s?.fetch,signal:n}});let a=o.contains(e);return(a||s||(o.add({resourceId:e,data:(0,te.H)(e,r),persistent:!1}),a=!0),a)?o.subscribe({resourceId:e,onChange:e=>i.internalState?.reloadAsyncProp(t,e),consumerId:i.id,requestId:t}):(0,te.H)(e,r,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:"draw",onHover:{type:"function",value:null,optional:!0},onClick:{type:"function",value:null,optional:!0},onDragStart:{type:"function",value:null,optional:!0},onDrag:{type:"function",value:null,optional:!0},onDragEnd:{type:"function",value:null,optional:!0},coordinateSystem:s.rf.DEFAULT,coordinateOrigin:{type:"array",value:[0,0,0],compare:!0},modelMatrix:{type:"array",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:"XYZ",colorFormat:"RGBA",parameters:{type:"object",value:{},optional:!0,compare:2},loadOptions:{type:"object",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:"array",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:"function",value:({layerIndex:e})=>[0,-(100*e)]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}};class tn extends e5{constructor(){super(...arguments),this.internalState=null,this.lifecycle=eB.VD.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,"layerName")?this.layerName:""}get root(){let e=this;for(;e.parent;)e=e.parent;return e}toString(){let e=this.constructor.layerName||this.constructor.name;return`${e}({id: '${this.props.id}'})`}project(e){(0,p.A)(this.internalState);let t=this.internalState.viewport||this.context.viewport,i=eY(e,{viewport:t,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[r,s,n]=(0,e$.VJ)(i,t.pixelProjectionMatrix);return 2===e.length?[r,s]:[r,s,n]}unproject(e){return(0,p.A)(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(e)}projectPosition(e,t){return(0,p.A)(this.internalState),function(e,t){let{viewport:i,coordinateSystem:r,coordinateOrigin:n,modelMatrix:o,fromCoordinateSystem:a,fromCoordinateOrigin:l}=function(e){let{viewport:t,modelMatrix:i,coordinateOrigin:r}=e,{coordinateSystem:n,fromCoordinateSystem:o,fromCoordinateOrigin:a}=e;return n===s.rf.DEFAULT&&(n=t.isGeospatial?s.rf.LNGLAT:s.rf.CARTESIAN),void 0===o&&(o=n),void 0===a&&(a=r),{viewport:t,coordinateSystem:n,coordinateOrigin:r,modelMatrix:i,fromCoordinateSystem:o,fromCoordinateOrigin:a}}(t),{autoOffset:h=!0}=t,{geospatialOrigin:u=eX,shaderCoordinateOrigin:c=eX,offsetMode:d=!1}=h?(0,ez.o)(i,r,n):{},f=eY(e,{viewport:i,modelMatrix:o,coordinateSystem:a,coordinateOrigin:l,offsetMode:d});
277if(d){let e=i.projectPosition(u||c);eH.jb(f,f,e)}return f}(e,{viewport:this.internalState.viewport||this.context.viewport,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...t})}get isComposite(){return!1}setState(e){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,e),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return!!this.internalState&&!this.internalState.isAsyncPropLoading()}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){let e=this.state;return e&&(e.models||e.model&&[e.model])||[]}setModuleParameters(e){for(let t of this.getModels())t.updateModuleSettings(e)}setShaderModuleProps(...e){for(let t of this.getModels())t.shaderInputs.setProps(...e)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:e}=this.props;return e===s.rf.DEFAULT||e===s.rf.LNGLAT||e===s.rf.CARTESIAN}onHover(e,t){return!!this.props.onHover&&(this.props.onHover(e,t)||!1)}onClick(e,t){return!!this.props.onClick&&(this.props.onClick(e,t)||!1)}nullPickingColor(){return[0,0,0]}encodePickingColor(e,t=[]){return t[0]=e+1&255,t[1]=e+1>>8&255,t[2]=e+1>>8>>8&255,t}decodePickingColor(e){(0,p.A)(e instanceof Uint8Array);let[t,i,r]=e;return t+256*i+65536*r-1}getNumInstances(){if(Number.isFinite(this.props.numInstances))return this.props.numInstances;if(this.state&&void 0!==this.state.numInstances)return this.state.numInstances;var e,t,i=this.props.data;if(null===(e=i)||"object"!=typeof e)throw Error("count(): argument not an object");if("function"==typeof i.count)return i.count();if(Number.isFinite(i.size))return i.size;if(Number.isFinite(i.length))return i.length;if(null!==(t=i)&&"object"==typeof t&&t.constructor===Object)return Object.keys(i).length;throw Error("count(): argument not a container")}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){return this.getAttributeManager()?.getBounds(["positions","instancePositions"])}getShaders(e){for(let t of(e=eV(e,{disableWarnings:!0,modules:this.context.defaultShaderModules}),this.props.extensions))e=eV(e,t.getShaders.call(this,t));return e}shouldUpdateState(e){return e.changeFlags.propsOrDataChanged}updateState(e){let t=this.getAttributeManager(),{dataChanged:i}=e.changeFlags;if(i&&t)if(Array.isArray(i))for(let e of i)t.invalidateAll(e);else t.invalidateAll();if(t){let{props:i}=e,r=this.internalState.hasPickingBuffer,s=Number.isInteger(i.highlightedObjectIndex)||i.pickable||i.extensions.some(e=>e.getNeedsPickingBuffer.call(this,e));if(r!==s){this.internalState.hasPickingBuffer=s;let{pickingColors:e,instancePickingColors:i}=t.attributes,r=e||i;r&&(s&&r.constant&&(r.constant=!1,t.invalidate(r.id)),r.value||s||(r.constant=!0,r.value=[0,0,0]))}}}finalizeState(e){for(let e of this.getModels())e.destroy();let t=this.getAttributeManager();t&&t.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(e){for(let t of this.getModels())t.draw(e)}getPickingInfo({info:e,mode:t,sourceLayer:i}){let{index:r}=e;return r>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[r]),e}raiseError(e,t){t&&(e=Error(`${t}: ${e.message}`,{cause:e})),this.props.onError?.(e)||this.context?.onError?.(e,this)}getNeedsRedraw(e={clearRedrawFlags:!1}){return this._getNeedsRedraw(e)}needsUpdate(){return!!this.internalState&&(this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()))}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(e){if(!this.internalState)return;let t=this.internalState.viewport;this.internalState.viewport=e,t&&ti({oldViewport:t,viewport:e})||(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(e="all"){let t=this.getAttributeManager();
277t&&("all"===e?t.invalidateAll():t.invalidate(e))}updateAttributes(e){let t=!1;for(let i in e)e[i].layoutChanged()&&(t=!0);for(let i of this.getModels())this._setModelAttributes(i,e,t)}_updateAttributes(){let e=this.getAttributeManager();if(!e)return;let t=this.props,i=this.getNumInstances(),r=this.getStartIndices();e.update({data:t.data,numInstances:i,startIndices:r,props:t,transitions:t.transitions,buffers:t.data.attributes,context:this});let s=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(s)}_updateAttributeTransition(){let e=this.getAttributeManager();e&&e.updateTransition()}_updateUniformTransition(){let{uniformTransitions:e}=this.internalState;if(e.active){let t=e.update(),i=Object.create(this.props);for(let e in t)Object.defineProperty(i,e,{value:t[e]});return i}return this.props}calculateInstancePickingColors(e,{numInstances:t}){if(e.constant)return;let i=Math.floor(tr.length/4);if(this.internalState.usesPickingColorCache=!0,i<t){t>0xffffff&&c.A.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")();let e=Math.floor((tr=h.A.allocate(tr,t,{size:4,copy:!0,maxCount:Math.max(t,0xffffff)})).length/4),r=[];for(let t=i;t<e;t++)this.encodePickingColor(t,r),tr[4*t+0]=r[0],tr[4*t+1]=r[1],tr[4*t+2]=r[2]}e.value=tr.subarray(0,4*t)}_setModelAttributes(e,t,i=!1){if(!Object.keys(t).length)return;if(i){let i=this.getAttributeManager();e.setBufferLayout(i.getBufferLayouts(e)),t=i.getAttributes()}let s=e.userData?.excludeAttributes||{},n={},o={};for(let i in t){if(s[i])continue;let a=t[i].getValue();for(let s in a){let l=a[s];l instanceof r.h?t[i].settings.isIndexed?e.setIndexBuffer(l):n[s]=l:l&&(o[s]=l)}}e.setAttributes(n),e.setConstantAttributes(o)}disablePickingIndex(e){let t=this.props.data;if(!("attributes"in t))return void this._disablePickingIndex(e);let{pickingColors:i,instancePickingColors:r}=this.getAttributeManager().attributes,s=i||r,n=s&&t.attributes&&t.attributes[s.id];if(n&&n.value){let i=n.value,r=this.encodePickingColor(e);for(let e=0;e<t.length;e++){let t=s.getVertexOffset(e);i[t]===r[0]&&i[t+1]===r[1]&&i[t+2]===r[2]&&this._disablePickingIndex(e)}}else this._disablePickingIndex(e)}_disablePickingIndex(e){let{pickingColors:t,instancePickingColors:i}=this.getAttributeManager().attributes,r=t||i;if(!r)return;let s=r.getVertexOffset(e),n=r.getVertexOffset(e+1);r.buffer.write(new Uint8Array(n-s),s)}restorePickingColors(){let{pickingColors:e,instancePickingColors:t}=this.getAttributeManager().attributes,i=e||t;i&&(this.internalState.usesPickingColorCache&&i.value.buffer!==tr.buffer&&(i.value=tr.subarray(0,i.value.length)),i.updateSubBuffer({startOffset:0}))}_initialize(){(0,p.A)(!this.internalState),(0,p.A)(Number.isFinite(this.props.coordinateSystem)),(0,P.A)("layer.initialize",this);let e=this._getAttributeManager();for(let t of(e&&e.addInstanced({instancePickingColors:{type:"uint8",size:4,noAlloc:!0,update:this.calculateInstancePickingColors}}),this.internalState=new e9({attributeManager:e,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(c.A.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),e)}),this.internalState.uniformTransitions=new eD(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context),this.props.extensions))t.initializeState.call(this,this.context,t);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(e){(0,P.A)("layer.matched",this,this===e);let{state:t,internalState:i}=e;this!==e&&(this.internalState=i,this.state=t,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let e=this.needsUpdate();if((0,P.A)("layer.update",this,e),!e)return;let t=this.props,i=this.context,r=this.internalState,s=i.viewport,n=this._updateUniformTransition();r.propsInTransition=n,i.viewport=r.viewport||s,this.props=n;
277try{let e=this._getUpdateParams(),t=this.getModels();if(i.device)this.updateState(e);else try{this.updateState(e)}catch(e){}for(let t of this.props.extensions)t.updateState.call(this,e,t);let r=this.getModels()[0]!==t[0];this._postUpdate(e,r)}finally{i.viewport=s,this.props=t,this._clearChangeFlags(),r.needsUpdate=!1,r.resetOldProps()}}_finalize(){for(let e of((0,P.A)("layer.finalize",this),this.finalizeState(this.context),this.props.extensions))e.finalizeState.call(this,this.context,e)}_drawLayer({renderPass:e,moduleParameters:t=null,uniforms:i={},parameters:r={}}){this._updateAttributeTransition();let s=this.props,n=this.context;this.props=this.internalState.propsInTransition||s,i.opacity=Math.pow(this.props.opacity,1/2.2);try{if(t){let{isActive:e,isAttribute:i}=t.picking;this.setModuleParameters(t),this.setShaderModuleProps({picking:{isActive:e,isAttribute:i}})}let{getPolygonOffset:s}=this.props,o=s&&s(i)||[0,0];for(let e of(n.device.setParametersWebGL({polygonOffset:o}),this.getModels()))e.setParameters(r);n.device.withParametersWebGL(r,()=>{let s={renderPass:e,moduleParameters:t,uniforms:i,parameters:r,context:n};for(let e of this.props.extensions)e.draw.call(this,s,e);this.draw(s)})}finally{this.props=s}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(e){if(!this.internalState)return;let{changeFlags:t}=this.internalState;for(let i in e)if(e[i]){let r=!1;if("dataChanged"===i){let s=e[i],n=t[i];s&&Array.isArray(n)&&(t.dataChanged=Array.isArray(s)?n.concat(s):s,r=!0)}t[i]||(t[i]=e[i],r=!0),r&&(0,P.A)("layer.changeFlag",this,i,e)}let i=!!(t.dataChanged||t.updateTriggersChanged||t.propsChanged||t.extensionsChanged);t.propsOrDataChanged=i,t.somethingChanged=i||t.viewportChanged||t.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(e,t){let i=function(e,t){let i=eU({newProps:e,oldProps:t,propTypes:e[eB.fW],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),r=function(e,t){if(null===t)return"oldProps is null, initial diff";let i=!1,{dataComparator:r,_dataDiff:s}=e;return r?r(e.data,t.data)||(i="Data comparator detected a change"):e.data!==t.data&&(i="A new data container was supplied"),i&&s&&(i=s(e.data,t.data)||i),i}(e,t),s=!1;return r||(s=function(e,t){if(null===t||"all"in e.updateTriggers&&eG(e,t,"all"))return{all:!0};let i={},r=!1;for(let s in e.updateTriggers)"all"!==s&&eG(e,t,s)&&(i[s]=!0,r=!0);return!!r&&i}(e,t)),{dataChanged:r,propsChanged:i,updateTriggersChanged:s,extensionsChanged:function(e,t){if(null===t)return!0;let i=t.extensions,{extensions:r}=e;if(r===i)return!1;if(!i||!r||r.length!==i.length)return!0;for(let e=0;e<r.length;e++)if(!r[e].equals(i[e]))return!0;return!1}(e,t),transitionsChanged:function(e,t){if(!e.transitions)return!1;let i={},r=e[eB.fW],s=!1;for(let n in e.transitions){let o=r[n],a=o&&o.type;("number"===a||"color"===a||"array"===a)&&ek(e[n],t[n],o)&&(i[n]=!0,s=!0)}return!!s&&i}(e,t)}}(e,t);if(i.updateTriggersChanged)for(let e in i.updateTriggersChanged)i.updateTriggersChanged[e]&&this.invalidateAttribute(e);if(i.transitionsChanged)for(let r in i.transitionsChanged)this.internalState.uniformTransitions.add(r,t[r],e[r],e.transitions?.[r]);return this.setChangeFlags(i)}validateProps(){!function(e){let t=e[eB.fW];for(let i in t){let r=t[i],{validate:s}=r;if(s&&!s(e[i],r))throw Error(`Invalid prop ${i}: ${e[i]}`)}}(this.props)}updateAutoHighlight(e){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(e)}_updateAutoHighlight(e){let t={highlightedObjectColor:e.picked?e.color:null},{highlightColor:i}=this.props;e.picked&&"function"==typeof i&&(t.highlightColor=i(e)),this.setShaderModuleProps({picking:t}),this.setNeedsRedraw()}_getAttributeManager(){let e=this.context;return new ex(e.device,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,t){let{props:i,oldProps:r}=e;this.setNeedsRedraw(),this._updateAttributes();let s=this.state.model;s?.isInstanced&&s.setInstanceCount(this.getNumInstances());let{autoHighlight:n,highlightedObjectIndex:o,highlightColor:a}=i;if(t||r.autoHighlight!==n||r.highlightedObjectIndex!==o||r.highlightColor!==a){let e={};Array.isArray(a)&&(e.highlightColor=a),(t||r.autoHighlight!==n||o!==r.highlightedObjectIndex)&&(e.highlightedObjectColor=Number.isFinite(o)&&o>=0?this.encodePickingColor(o):null),this.setShaderModuleProps({picking:e})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(e){if(!this.internalState)return!1;let t=!1;t=this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),r=!!i&&i.getNeedsRedraw(e);if(t=t||r)for(let e of this.props.extensions)e.onNeedsRedraw.call(this,e);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags,t}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}tn.defaultProps=ts,tn.layerName="Layer";let to=tn;class ta extends to{get isComposite(){return!0}
277get isLoaded(){return super.isLoaded&&this.getSubLayers().every(e=>e.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(e){}setState(e){super.setState(e),this.setNeedsUpdate()}getPickingInfo({info:e}){let{object:t}=e;return t&&t.__source&&t.__source.parent&&t.__source.parent.id===this.id&&(e.object=t.__source.object,e.index=t.__source.index),e}filterSubLayer(e){return!0}shouldRenderSubLayer(e,t){return t&&t.length}getSubLayerClass(e,t){let{_subLayerProps:i}=this.props;return i&&i[e]&&i[e].type||t}getSubLayerRow(e,t,i){return e.__source={parent:this,object:t,index:i},e}getSubLayerAccessor(e){if("function"==typeof e){let t={index:-1,data:this.props.data,target:[]};return(i,r)=>i&&i.__source?(t.index=i.__source.index,e(i.__source.object,t)):e(i,r)}return e}getSubLayerProps(e={}){let{opacity:t,pickable:i,visible:r,parameters:s,getPolygonOffset:n,highlightedObjectIndex:o,autoHighlight:a,highlightColor:l,coordinateSystem:h,coordinateOrigin:u,wrapLongitude:c,positionFormat:d,modelMatrix:f,extensions:p,fetch:g,operation:_,_subLayerProps:m}=this.props,E={id:"",updateTriggers:{},opacity:t,pickable:i,visible:r,parameters:s,getPolygonOffset:n,highlightedObjectIndex:o,autoHighlight:a,highlightColor:l,coordinateSystem:h,coordinateOrigin:u,wrapLongitude:c,positionFormat:d,modelMatrix:f,extensions:p,fetch:g,operation:_},v=m&&e.id&&m[e.id],y=v&&v.updateTriggers,b=e.id||"sublayer";if(v){let t=this.props[eB.fW],i=e.type?e.type._propTypes:{};for(let e in v){let r=i[e]||t[e];r&&"accessor"===r.type&&(v[e]=this.getSubLayerAccessor(v[e]))}}for(let t of(Object.assign(E,e,v),E.id=`${this.props.id}-${b}`,E.updateTriggers={all:this.props.updateTriggers?.all,...e.updateTriggers,...y},p)){let e=t.getSubLayerProps.call(this,t);e&&Object.assign(E,e,{updateTriggers:Object.assign(E.updateTriggers,e.updateTriggers)})}return E}_updateAutoHighlight(e){for(let t of this.getSubLayers())t.updateAutoHighlight(e)}_getAttributeManager(){return null}_postUpdate(e,t){let i=this.internalState.subLayers,r=!i||this.needsUpdate();if(r){let e=this.renderLayers();i=(0,y.B)(e,Boolean),this.internalState.subLayers=i}for(let e of((0,P.A)("compositeLayer.renderLayers",this,r,i),i))e.parent=this}}ta.layerName="CompositeLayer";let tl=ta;var th=i(24265);let tu=` 278vec4 project_position_to_clipspace( 279 vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition 280) { 281 vec3 projectedPosition = project_position(position, position64Low); 282 mat3 rotation; 283 if (project_needs_rotation(projectedPosition, rotation)) { 284 // offset is specified as ENU 285 // when in globe projection, rotate offset so that the ground alighs with the surface of the globe 286 offset = rotation * offset; 287 } 288 commonPosition = vec4(projectedPosition + offset, 1.0); 289 return project_common_position_to_clipspace(commonPosition); 290} 291 292vec4 project_position_to_clipspace( 293 vec3 position, vec3 position64Low, vec3 offset 294) { 295 vec4 commonPosition; 296 return project_position_to_clipspace(position, position64Low, offset, commonPosition); 297} 298`,tc={name:"project32",dependencies:[th.A],vs:tu},td={name:"picking",vs:`\ 299uniform pickingUniforms { 300float isActive; 301float isAttribute; 302float isHighlightActive; 303float useFloatColors; 304vec3 highlightedObjectColor; 305vec4 highlightColor; 306} picking; 307out vec4 picking_vRGBcolor_Avalid; 308vec3 picking_normalizeColor(vec3 color) { 309return picking.useFloatColors > 0.5 ? color : color / 255.0; 310} 311vec4 picking_normalizeColor(vec4 color) { 312return picking.useFloatColors > 0.5 ? color : color / 255.0; 313} 314bool picking_isColorZero(vec3 color) { 315return dot(color, vec3(1.0)) < 0.00001; 316} 317bool picking_isColorValid(vec3 color) { 318return dot(color, vec3(1.0)) > 0.00001; 319} 320bool isVertexHighlighted(vec3 vertexColor) { 321vec3 highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor); 322return 323bool(picking.isHighlightActive) && picking_isColorZero(abs(vertexColor - highlightedObjectColor)); 324} 325void picking_setPickingColor(vec3 pickingColor) { 326pickingColor = picking_normalizeColor(pickingColor); 327if (bool(picking.isActive)) {
328picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor)); 329if (!bool(picking.isAttribute)) { 330picking_vRGBcolor_Avalid.rgb = pickingColor; 331} 332} else { 333picking_vRGBcolor_Avalid.a = float(isVertexHighlighted(pickingColor)); 334} 335} 336void picking_setPickingAttribute(float value) { 337if (bool(picking.isAttribute)) { 338picking_vRGBcolor_Avalid.r = value; 339} 340} 341void picking_setPickingAttribute(vec2 value) { 342if (bool(picking.isAttribute)) { 343picking_vRGBcolor_Avalid.rg = value; 344} 345} 346void picking_setPickingAttribute(vec3 value) { 347if (bool(picking.isAttribute)) { 348picking_vRGBcolor_Avalid.rgb = value; 349} 350} 351`,fs:`\ 352uniform pickingUniforms { 353float isActive; 354float isAttribute; 355float isHighlightActive; 356float useFloatColors; 357vec3 highlightedObjectColor; 358vec4 highlightColor; 359} picking; 360in vec4 picking_vRGBcolor_Avalid; 361vec4 picking_filterHighlightColor(vec4 color) { 362if (picking.isActive > 0.5) { 363return color; 364} 365bool selected = bool(picking_vRGBcolor_Avalid.a); 366if (selected) { 367float highLightAlpha = picking.highlightColor.a; 368float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha); 369float highLightRatio = highLightAlpha / blendedAlpha; 370vec3 blendedRGB = mix(color.rgb, picking.highlightColor.rgb, highLightRatio); 371return vec4(blendedRGB, blendedAlpha); 372} else { 373return color; 374} 375} 376vec4 picking_filterPickingColor(vec4 color) { 377if (bool(picking.isActive)) { 378if (picking_vRGBcolor_Avalid.a == 0.0) { 379discard; 380} 381return picking_vRGBcolor_Avalid; 382} 383return color; 384} 385vec4 picking_filterColor(vec4 color) { 386vec4 highlightColor = picking_filterHighlightColor(color); 387return picking_filterPickingColor(highlightColor); 388} 389`,uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useFloatColors:"f32",highlightedObjectColor:"vec3<f32>",highlightColor:"vec4<f32>"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useFloatColors:!0,highlightedObjectColor:[0,0,0],highlightColor:[0,1,1,1]},getUniforms:function(e={},t){let i={};if(void 0===e.highlightedObjectColor||(null===e.highlightedObjectColor?i.isHighlightActive=!1:(i.isHighlightActive=!0,i.highlightedObjectColor=e.highlightedObjectColor.slice(0,3))),e.highlightColor){let t=Array.from(e.highlightColor,e=>e/255);Number.isFinite(t[3])||(t[3]=1),i.highlightColor=t}return void 0!==e.isActive&&(i.isActive=!!e.isActive,i.isAttribute=!!e.isAttribute),void 0!==e.useFloatColors&&(i.useFloatColors=!!e.useFloatColors),i}},tf={...td,defaultUniforms:{...td.defaultUniforms,useFloatColors:!1},inject:{"vs:DECKGL_FILTER_GL_POSITION":` 390 // for picking depth values 391 picking_setPickingAttribute(position.z / position.w); 392 `,"vs:DECKGL_FILTER_COLOR":` 393 picking_setPickingColor(geometry.pickingColor); 394 `,"fs:DECKGL_FILTER_COLOR":{order:99,injection:` 395 // use highlight color if this fragment belongs to the selected object. 396 color = picking_filterHighlightColor(color); 397 398 // use picking color if rendering to picking FBO. 399 color = picking_filterPickingColor(color); 400 `}}};class tp{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:t={},indices:i=null,vertexCount:r=null}=e;for(let[r,s]of(this.id=e.id||(0,z.L)("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={},Object.entries(t))){let e=ArrayBuffer.isView(s)?{value:s}:s;(0,C.v)(ArrayBuffer.isView(e.value),`${this._print(r)}: must be typed array or object with value as typed array`),"POSITION"!==r&&"positions"!==r||e.size||(e.size=3),"indices"===r?((0,C.v)(!this.indices),this.indices=e):this.attributes[r]=e}this.indices&&void 0!==this.indices.isIndexed&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=r||this._calculateVertexCount(this.attributes,this.indices)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return`Geometry ${this.id} attribute ${e}`}_setAttributes(e,t){return this}_calculateVertexCount(e,t){if(t)return t.value.length;let i=1/0;for(let t of Object.values(e)){let{value:e,size:r,constant:s}=t;!s&&e&&r>=1&&(i=Math.min(i,e.length/r))}return(0,C.v)(Number.isFinite(i)),i}}let tg=`\ 401#version 300 es 402#define SHADER_NAME icon-layer-vertex-shader 403in vec2 positions; 404in vec3 instancePositions; 405in vec3 instancePositions64Low; 406in float instanceSizes; 407in float instanceAngles; 408in vec4 instanceColors; 409in vec3 instancePickingColors; 410in vec4 instanceIconFrames; 411in float instanceColorModes; 412in vec2 instanceOffsets; 413in vec2 instancePixelOffset; 414uniform float sizeScale; 415uniform vec2 iconsTextureDim;
416uniform float sizeMinPixels; 417uniform float sizeMaxPixels; 418uniform bool billboard; 419uniform int sizeUnits; 420out float vColorMode; 421out vec4 vColor; 422out vec2 vTextureCoords; 423out vec2 uv; 424vec2 rotate_by_angle(vec2 vertex, float angle) { 425float angle_radian = angle * PI / 180.0; 426float cos_angle = cos(angle_radian); 427float sin_angle = sin(angle_radian); 428mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle); 429return rotationMatrix * vertex; 430} 431void main(void) { 432geometry.worldPosition = instancePositions; 433geometry.uv = positions; 434geometry.pickingColor = instancePickingColors; 435uv = positions; 436vec2 iconSize = instanceIconFrames.zw; 437float sizePixels = clamp( 438project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), 439sizeMinPixels, sizeMaxPixels 440); 441float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y; 442vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets; 443pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale; 444pixelOffset += instancePixelOffset; 445pixelOffset.y *= -1.0; 446if (billboard) { 447gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); 448DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 449vec3 offset = vec3(pixelOffset, 0.0); 450DECKGL_FILTER_SIZE(offset, geometry); 451gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); 452} else { 453vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0); 454DECKGL_FILTER_SIZE(offset_common, geometry); 455gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); 456DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 457} 458vTextureCoords = mix( 459instanceIconFrames.xy, 460instanceIconFrames.xy + iconSize, 461(positions.xy + 1.0) / 2.0 462) / iconsTextureDim; 463vColor = instanceColors; 464DECKGL_FILTER_COLOR(vColor, geometry); 465vColorMode = instanceColorModes; 466} 467`,t_=`\ 468#version 300 es 469#define SHADER_NAME icon-layer-fragment-shader 470precision highp float; 471uniform float opacity; 472uniform sampler2D iconsTexture; 473uniform float alphaCutoff; 474in float vColorMode; 475in vec4 vColor; 476in vec2 vTextureCoords; 477in vec2 uv; 478out vec4 fragColor; 479void main(void) { 480geometry.uv = uv; 481vec4 texColor = texture(iconsTexture, vTextureCoords); 482vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode); 483float a = texColor.a * opacity * vColor.a; 484if (a < alphaCutoff) { 485discard; 486} 487fragColor = vec4(color, a); 488DECKGL_FILTER_COLOR(fragColor, geometry); 489} 490`,tm=()=>{},tE={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},tv={x:0,y:0,width:0,height:0};function ty(e){return e&&(e.id||e.url)}function tb(e,t,i){for(let r=0;r<t.length;r++){let{icon:s,xOffset:n}=t[r];e[ty(s)]={...s,x:n,y:i}}}class tA{constructor(e,{onUpdate:t=tm,onError:i=tm}){this._loadOptions=null,this._texture=null,this._externalTexture=null,this._mapping={},this._textureParameters=null,this._pendingCount=0,this._autoPacking=!1,this._xOffset=0,this._yOffset=0,this._rowHeight=0,this._buffer=4,this._canvasWidth=1024,this._canvasHeight=0,this._canvas=null,this.device=e,this.onUpdate=t,this.onError=i}finalize(){this._texture?.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(e){let t=this._autoPacking?ty(e):e;return this._mapping[t]||tv}setProps({loadOptions:e,autoPacking:t,iconAtlas:i,iconMapping:r,textureParameters:s}){e&&(this._loadOptions=e),void 0!==t&&(this._autoPacking=t),r&&(this._mapping=r),i&&(this._texture?.delete(),this._texture=null,this._externalTexture=i),s&&(this._textureParameters=s)}get isLoaded(){return 0===this._pendingCount}packIcons(e,t){if(!this._autoPacking||"undefined"==typeof document)return;let i=Object.values(function(e,t,i){if(!e||!t)return null;i=i||{};let r={},{iterable:s,objectInfo:n}=m(e);for(let e of s){n.index++;let s=t(e,n),o=ty(s);if(!s)throw Error("Icon is missing.");if(!s.url)throw Error("Icon url is missing.");r[o]||i[o]&&s.url===i[o].url||(r[o]={...s,source:e,sourceIndex:n.index})}return r}(e,t,this._mapping)||{});if(i.length>0){let{mapping:e,xOffset:t,yOffset:r,rowHeight:s,canvasHeight:n}=function({icons:e,buffer:t,mapping:i={},xOffset:r=0,yOffset:s=0,rowHeight:n=0,canvasWidth:o}){let a=[];for(let l=0;l<e.length;l++){let h=e[l];
490if(!i[ty(h)]){let{height:e,width:l}=h;r+l+t>o&&(tb(i,a,s),r=0,s=n+s+t,n=0,a=[]),a.push({icon:h,xOffset:r}),r=r+l+t,n=Math.max(n,e)}}return a.length>0&&tb(i,a,s),{mapping:i,rowHeight:n,xOffset:r,yOffset:s,canvasWidth:o,canvasHeight:Math.pow(2,Math.ceil(Math.log2(n+s+t)))}}({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=s,this._mapping=e,this._xOffset=t,this._yOffset=r,this._canvasHeight=n,this._texture||(this._texture=this.device.createTexture({format:"rgba8unorm",width:this._canvasWidth,height:this._canvasHeight,sampler:this._textureParameters||tE})),this._texture.height!==this._canvasHeight&&(this._texture=function(e,t,i,r){let{width:s,height:n,device:o}=e,a=o.createTexture({format:"rgba8unorm",width:t,height:i,sampler:r}),l=o.createCommandEncoder();return l.copyTextureToTexture({source:e,destination:a,width:s,height:n}),l.finish(),e.destroy(),a}(this._texture,this._canvasWidth,this._canvasHeight,this._textureParameters||tE)),this.onUpdate(),this._canvas=this._canvas||document.createElement("canvas"),this._loadIcons(i)}}_loadIcons(e){let t=this._canvas.getContext("2d",{willReadFrequently:!0});for(let i of e)this._pendingCount++,(0,te.H)(i.url,this._loadOptions).then(e=>{let r=ty(i),s=this._mapping[r],{x:n,y:o,width:a,height:l}=s,{data:h,width:u,height:c}=function(e,t,i,r){let s=Math.min(i/t.width,r/t.height),n=Math.floor(t.width*s),o=Math.floor(t.height*s);return 1===s?{data:t,width:n,height:o}:(e.canvas.height=o,e.canvas.width=n,e.clearRect(0,0,n,o),e.drawImage(t,0,0,t.width,t.height,0,0,n,o),{data:e.canvas,width:n,height:o})}(t,e,a,l);this._texture.setSubImageData({data:h,x:n+(a-u)/2,y:o+(l-c)/2,width:u,height:c}),s.width=u,s.height=c,this._texture.generateMipmap(),this.onUpdate()}).catch(e=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:e})}).finally(()=>{this._pendingCount--})}}let tT=[0,0,0,255],tR={iconAtlas:{type:"image",value:null,async:!0},iconMapping:{type:"object",value:{},async:!0},sizeScale:{type:"number",value:1,min:0},billboard:!0,sizeUnits:"pixels",sizeMinPixels:{type:"number",min:0,value:0},sizeMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},alphaCutoff:{type:"number",value:.05,min:0,max:1},getPosition:{type:"accessor",value:e=>e.position},getIcon:{type:"accessor",value:e=>e.icon},getColor:{type:"accessor",value:tT},getSize:{type:"accessor",value:1},getAngle:{type:"accessor",value:0},getPixelOffset:{type:"accessor",value:[0,0]},onIconError:{type:"function",value:null,optional:!0},textureParameters:{type:"object",ignore:!0,value:null}};class tS extends to{getShaders(){return super.getShaders({vs:tg,fs:t_,modules:[tc,tf]})}initializeState(){this.state={iconManager:new tA(this.context.device,{onUpdate:this._onUpdate.bind(this),onError:this._onError.bind(this)})},this.getAttributeManager().addInstanced({instancePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceSizes:{size:1,transition:!0,accessor:"getSize",defaultValue:1},instanceOffsets:{size:2,accessor:"getIcon",transform:this.getInstanceOffset},instanceIconFrames:{size:4,accessor:"getIcon",transform:this.getInstanceIconFrame},instanceColorModes:{size:1,type:"uint8",accessor:"getIcon",transform:this.getInstanceColorMode},instanceColors:{size:this.props.colorFormat.length,type:"unorm8",transition:!0,accessor:"getColor",defaultValue:tT},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instancePixelOffset:{size:2,transition:!0,accessor:"getPixelOffset"}})}updateState(e){super.updateState(e);let{props:t,oldProps:i,changeFlags:r}=e,s=this.getAttributeManager(),{iconAtlas:n,iconMapping:o,data:a,getIcon:l,textureParameters:h}=t,{iconManager:u}=this.state;if("string"==typeof n)return;let c=n||this.internalState.isAsyncPropLoading("iconAtlas");u.setProps({loadOptions:t.loadOptions,autoPacking:!c,iconAtlas:n,iconMapping:c?o:null,textureParameters:h}),c?i.iconMapping!==t.iconMapping&&s.invalidate("getIcon"):(r.dataChanged||r.updateTriggersChanged&&(r.updateTriggersChanged.all||r.updateTriggersChanged.getIcon))&&u.packIcons(a,l),r.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),s.invalidateAll())}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(e){super.finalizeState(e),this.state.iconManager.finalize()}draw({uniforms:e}
490){let{sizeScale:t,sizeMinPixels:i,sizeMaxPixels:r,sizeUnits:n,billboard:o,alphaCutoff:a}=this.props,{iconManager:l}=this.state,h=l.getTexture();if(h){let l=this.state.model;l.setBindings({iconsTexture:h}),l.setUniforms(e),l.setUniforms({iconsTextureDim:[h.width,h.height],sizeUnits:s.p5[n],sizeScale:t,sizeMinPixels:i,sizeMaxPixels:r,billboard:o,alphaCutoff:a}),l.draw(this.context.renderPass)}}_getModel(){return new es(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new tp({topology:"triangle-strip",attributes:{positions:{size:2,value:new Float32Array([-1,-1,1,-1,-1,1,1,1])}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(e){let t=this.getCurrentLayer()?.props.onIconError;t?t(e):c.A.error(e.error.message)()}getInstanceOffset(e){let{width:t,height:i,anchorX:r=t/2,anchorY:s=i/2}=this.state.iconManager.getIconMapping(e);return[t/2-r,i/2-s]}getInstanceColorMode(e){return+!!this.state.iconManager.getIconMapping(e).mask}getInstanceIconFrame(e){let{x:t,y:i,width:r,height:s}=this.state.iconManager.getIconMapping(e);return[t,i,r,s]}}tS.defaultProps=tR,tS.layerName="IconLayer";let tw=tS,tP=`\ 491#version 300 es 492#define SHADER_NAME scatterplot-layer-vertex-shader 493in vec3 positions; 494in vec3 instancePositions; 495in vec3 instancePositions64Low; 496in float instanceRadius; 497in float instanceLineWidths; 498in vec4 instanceFillColors; 499in vec4 instanceLineColors; 500in vec3 instancePickingColors; 501uniform float opacity; 502uniform float radiusScale; 503uniform float radiusMinPixels; 504uniform float radiusMaxPixels; 505uniform float lineWidthScale; 506uniform float lineWidthMinPixels; 507uniform float lineWidthMaxPixels; 508uniform float stroked; 509uniform bool filled; 510uniform bool antialiasing; 511uniform bool billboard; 512uniform int radiusUnits; 513uniform int lineWidthUnits; 514out vec4 vFillColor; 515out vec4 vLineColor; 516out vec2 unitPosition; 517out float innerUnitRadius; 518out float outerRadiusPixels; 519void main(void) { 520geometry.worldPosition = instancePositions; 521outerRadiusPixels = clamp( 522project_size_to_pixel(radiusScale * instanceRadius, radiusUnits), 523radiusMinPixels, radiusMaxPixels 524); 525float lineWidthPixels = clamp( 526project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits), 527lineWidthMinPixels, lineWidthMaxPixels 528); 529outerRadiusPixels += stroked * lineWidthPixels / 2.0; 530float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0; 531unitPosition = edgePadding * positions.xy; 532geometry.uv = unitPosition; 533geometry.pickingColor = instancePickingColors; 534innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels; 535if (billboard) { 536gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); 537DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 538vec3 offset = edgePadding * positions * outerRadiusPixels; 539DECKGL_FILTER_SIZE(offset, geometry); 540gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); 541} else { 542vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels); 543DECKGL_FILTER_SIZE(offset, geometry); 544gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position); 545DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 546} 547vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity); 548DECKGL_FILTER_COLOR(vFillColor, geometry); 549vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity); 550DECKGL_FILTER_COLOR(vLineColor, geometry); 551} 552`,tC=`\ 553#version 300 es 554#define SHADER_NAME scatterplot-layer-fragment-shader 555precision highp float; 556uniform bool filled; 557uniform float stroked; 558uniform bool antialiasing; 559in vec4 vFillColor; 560in vec4 vLineColor; 561in vec2 unitPosition; 562in float innerUnitRadius; 563in float outerRadiusPixels; 564out vec4 fragColor; 565void main(void) { 566geometry.uv = unitPosition; 567float distToCenter = length(unitPosition) * outerRadiusPixels; 568float inCircle = antialiasing ? 569smoothedge(distToCenter, outerRadiusPixels) : 570step(distToCenter, outerRadiusPixels); 571if (inCircle == 0.0) { 572discard; 573} 574if (stroked > 0.5) { 575float isLine = antialiasing ? 576smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) : 577step(innerUnitRadius * outerRadiusPixels, distToCenter); 578if (filled) { 579fragColor = mix(vFillColor, vLineColor, isLine); 580} else { 581if (isLine == 0.0) { 582discard; 583} 584fragColor = vec4(vLineColor.rgb, vLineColor.a * isLine); 585} 586} else if (!filled) { 587discard; 588} else { 589fragColor = vFillColor; 590} 591fragColor.a *= inCircle; 592DECKGL_FILTER_COLOR(fragColor, geometry); 593}
594`,tx=[0,0,0,255],tL={radiusUnits:"meters",radiusScale:{type:"number",min:0,value:1},radiusMinPixels:{type:"number",min:0,value:0},radiusMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},lineWidthUnits:"meters",lineWidthScale:{type:"number",min:0,value:1},lineWidthMinPixels:{type:"number",min:0,value:0},lineWidthMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},stroked:!1,filled:!0,billboard:!1,antialiasing:!0,getPosition:{type:"accessor",value:e=>e.position},getRadius:{type:"accessor",value:1},getFillColor:{type:"accessor",value:tx},getLineColor:{type:"accessor",value:tx},getLineWidth:{type:"accessor",value:1},strokeWidth:{deprecatedFor:"getLineWidth"},outline:{deprecatedFor:"stroked"},getColor:{deprecatedFor:["getFillColor","getLineColor"]}};class tM extends to{getShaders(){return super.getShaders({vs:tP,fs:tC,modules:[tc,tf]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceRadius:{size:1,transition:!0,accessor:"getRadius",defaultValue:1},instanceFillColors:{size:this.props.colorFormat.length,transition:!0,type:"unorm8",accessor:"getFillColor",defaultValue:[0,0,0,255]},instanceLineColors:{size:this.props.colorFormat.length,transition:!0,type:"unorm8",accessor:"getLineColor",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:"getLineWidth",defaultValue:1}})}updateState(e){super.updateState(e),e.changeFlags.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),this.getAttributeManager().invalidateAll())}draw({uniforms:e}){let{radiusUnits:t,radiusScale:i,radiusMinPixels:r,radiusMaxPixels:n,stroked:o,filled:a,billboard:l,antialiasing:h,lineWidthUnits:u,lineWidthScale:c,lineWidthMinPixels:d,lineWidthMaxPixels:f}=this.props,p=this.state.model;p.setUniforms(e),p.setUniforms({stroked:+!!o,filled:a,billboard:l,antialiasing:h,radiusUnits:s.p5[t],radiusScale:i,radiusMinPixels:r,radiusMaxPixels:n,lineWidthUnits:s.p5[u],lineWidthScale:c,lineWidthMinPixels:d,lineWidthMaxPixels:f}),p.draw(this.context.renderPass)}_getModel(){return new es(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new tp({topology:"triangle-strip",attributes:{positions:{size:3,value:new Float32Array([-1,-1,0,1,-1,0,-1,1,0,1,1,0])}}}),isInstanced:!0})}}tM.defaultProps=tL,tM.layerName="ScatterplotLayer";let tI=`\ 595#version 300 es 596#define SHADER_NAME multi-icon-layer-fragment-shader 597precision highp float; 598uniform float opacity; 599uniform sampler2D iconsTexture; 600uniform float gamma; 601uniform bool sdf; 602uniform float alphaCutoff; 603uniform float sdfBuffer; 604uniform float outlineBuffer; 605uniform vec4 outlineColor; 606in vec4 vColor; 607in vec2 vTextureCoords; 608in vec2 uv; 609out vec4 fragColor; 610void main(void) { 611geometry.uv = uv; 612if (!bool(picking.isActive)) { 613float alpha = texture(iconsTexture, vTextureCoords).a; 614vec4 color = vColor; 615if (sdf) { 616float distance = alpha; 617alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance); 618if (outlineBuffer > 0.0) { 619float inFill = alpha; 620float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance); 621color = mix(outlineColor, vColor, inFill); 622alpha = inBorder; 623} 624} 625float a = alpha * color.a; 626if (a < alphaCutoff) { 627discard; 628} 629fragColor = vec4(color.rgb, a * opacity); 630} 631DECKGL_FILTER_COLOR(fragColor, geometry); 632} 633`,tO=[];
633class tN extends tw{getShaders(){return{...super.getShaders(),fs:tI}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:"getIconOffsets"},instancePickingColors:{type:"uint8",size:3,accessor:(e,{index:t,target:i})=>this.encodePickingColor(t,i)}})}updateState(e){super.updateState(e);let{props:t,oldProps:i}=e,{outlineColor:r}=t;r!==i.outlineColor&&((r=r.map(e=>e/255))[3]=Number.isFinite(r[3])?r[3]:1,this.setState({outlineColor:r})),!t.sdf&&t.outlineWidth&&c.A.warn(`${this.id}: fontSettings.sdf is required to render outline`)()}draw(e){let{sdf:t,smoothing:i,outlineWidth:r}=this.props,{outlineColor:s}=this.state,n=r?Math.max(i,.75*(1-r)):-1;if(e.uniforms={...e.uniforms,sdfBuffer:.75,outlineBuffer:n,gamma:i,sdf:!!t,outlineColor:s},super.draw(e),t&&r){let{iconManager:e}=this.state,t=e.getTexture(),i=this.state.model;t&&(i.setUniforms({outlineBuffer:.75}),i.draw(this.context.renderPass))}}getInstanceOffset(e){return e?Array.from(e).flatMap(e=>super.getInstanceOffset(e)):tO}getInstanceColorMode(e){return 1}getInstanceIconFrame(e){return e?Array.from(e).flatMap(e=>super.getInstanceIconFrame(e)):tO}}tN.defaultProps={getIconOffsets:{type:"accessor",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:"color",value:[0,0,0,255]}},tN.layerName="MultiIconLayer";class tF{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:r=.25,fontFamily:s="sans-serif",fontWeight:n="normal",fontStyle:o="normal"}={}){this.buffer=t,this.cutoff=r,this.radius=i;let a=this.size=e+4*t,l=this._createCanvas(a),h=this.ctx=l.getContext("2d",{willReadFrequently:!0});h.font=`${o} ${n} ${e}px ${s}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Uint16Array(a)}_createCanvas(e){let t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){let{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:s,actualBoundingBoxRight:n}=this.ctx.measureText(e),o=Math.ceil(i),a=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(n-s))),l=Math.min(this.size-this.buffer,o+Math.ceil(r)),h=a+2*this.buffer,u=l+2*this.buffer,c=Math.max(h*u,0),d=new Uint8ClampedArray(c),f={data:d,width:h,height:u,glyphWidth:a,glyphHeight:l,glyphTop:o,glyphLeft:0,glyphAdvance:t};if(0===a||0===l)return f;let{ctx:p,buffer:g,gridInner:_,gridOuter:m}=this;p.clearRect(g,g,a,l),p.fillText(e,g,g+o);let E=p.getImageData(g,g,a,l);m.fill(1e20,0,c),_.fill(0,0,c);for(let e=0;e<l;e++)for(let t=0;t<a;t++){let i=E.data[4*(e*a+t)+3]/255;if(0===i)continue;let r=(e+g)*h+t+g;if(1===i)m[r]=0,_[r]=1e20;else{let e=.5-i;m[r]=e>0?e*e:0,_[r]=e<0?e*e:0}}tD(m,0,0,h,u,h,this.f,this.v,this.z),tD(_,g,g,a,l,h,this.f,this.v,this.z);for(let e=0;e<c;e++){let t=Math.sqrt(m[e])-Math.sqrt(_[e]);d[e]=Math.round(255-255*(t/this.radius+this.cutoff))}return f}}function tD(e,t,i,r,s,n,o,a,l){for(let h=t;h<t+r;h++)tB(e,i*n+h,n,s,o,a,l);for(let h=i;h<i+s;h++)tB(e,h*n+t,1,r,o,a,l)}function tB(e,t,i,r,s,n,o){n[0]=0,o[0]=-1e20,o[1]=1e20,s[0]=e[t];for(let a=1,l=0,h=0;a<r;a++){s[a]=e[t+a*i];let r=a*a;do{let e=n[l];h=(s[a]-s[e]+r-e*e)/(a-e)/2}while(h<=o[l]&&--l>-1);n[++l]=a,o[l]=h,o[l+1]=1e20}for(let a=0,l=0;a<r;a++){for(;o[l+1]<a;)l++;let r=n[l],h=a-r;e[t+a*i]=s[r]+h*h}}let tU=[];function tk(e,t,i,r){let s=0;for(let n=t;n<i;n++){let t=e[n];s+=r[t]?.layoutWidth||0}return s}function tG(e,t,i,r,s,n){let o=t,a=0;for(let l=t;l<i;l++){let t=tk(e,l,l+1,s);a+t>r&&(o<l&&n.push(l),o=l,a=0),a+=t}return a}class tV{constructor(e=5){this._cache={},this._order=[],this.limit=e}get(e){let t=this._cache[e];return t&&(this._deleteOrder(e),this._appendOrder(e)),t}set(e,t){this._cache[e]?this.delete(e):Object.keys(this._cache).length===this.limit&&this.delete(this._order[0]),this._cache[e]=t,this._appendOrder(e)}delete(e){this._cache[e]&&(delete this._cache[e],this._deleteOrder(e))}_deleteOrder(e){let t=this._order.indexOf(e);t>=0&&this._order.splice(t,1)}_appendOrder(e){this._order.push(e)}}let tz={fontFamily:"Monaco, monospace",fontWeight:"normal",characterSet:function(){let e=[];for(let t=32;t<128;t++)e.push(String.fromCharCode(t));return e}(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},tW=new tV(3);function tj(e,t,i,r){e.font=`${r} ${i}px ${t}`,e.fillStyle="#000",e.textBaseline="alphabetic",e.textAlign="left"}class tH{constructor(){this.props={...tz}}get atlas(){return this._atlas}get mapping(){return this._atlas&&this._atlas.mapping}get scale(){let{fontSize:e,buffer:t}=this.props;return(1.2*e+2*t)/e}setProps(e={}){Object.assign(this.props,e),this._key=this._getKey();let t=function(e,t){let i;i=new Set("string"==typeof t?Array.from(t):t);let r=tW.get(e);if(!r)return i;for(let e in r.mapping)i.has(e)&&i.delete(e);return i}(this._key,this.props.characterSet),i=tW.get(this._key);if(i&&0===t.size){this._atlas!==i&&(this._atlas=i);return}let r=this._generateFontAtlas(t,i);this._atlas=r,tW.set(this._key,r)}_generateFontAtlas(e,t){let{fontFamily:i,fontWeight:r,fontSize:s,buffer:n,sdf:o,radius:a,cutoff:l}=this.props,h=t&&t.data;h||((h=document.createElement("canvas")).width=1024);let u=h.getContext("2d",{willReadFrequently:!0});tj(u,i,s,r);let{mapping:c,canvasHeight:d,xOffset:f,yOffset:p}=function({characterSet:e,getFontWidth:t,fontHeight:i,buffer:r,maxCanvasWidth:s,mapping:n={},xOffset:o=0,yOffset:a=0}){let l=0,h=o,u=i+2*r;for(let o of e)if(!n[o]){let e=t(o);h+e+2*r>s&&(h=0,l++),n[o]={x:h+r,y:a+l*u+r,width:e,height:u,layoutWidth:e,layoutHeight:i},h+=e+2*r}return{mapping:n,xOffset:h,yOffset:a+l*u,canvasHeight:Math.pow(2,Math.ceil(Math.log2(a+(l+1)*u)))}}({getFontWidth:e=>u.measureText(e).width,fontHeight:1.2*s,buffer:n,characterSet:e,maxCanvasWidth:1024,...t&&{mapping:t.mapping,xOffset:t.xOffset,yOffset:t.yOffset}});if(h.height!==d){let e=u.getImageData(0,0,h.width,h.height);h.height=d,u.putImageData(e,0,0)}if(tj(u,i,s,r),o){let t=new tF({fontSize:s,buffer:n,radius:a,cutoff:l,fontFamily:i,fontWeight:`${r}`});for(let i of e){let{data:e,width:r,height:n,glyphTop:o}=t.draw(i);c[i].width=r,c[i].layoutOffsetY=.9*s-o;let a=u.createImageData(r,n);for(let t=0;t<e.length;t++)a.data[4*t+3]=e[t];u.putImageData(a,c[i].x,c[i].y)}}else for(let t of e)u.fillText(t,c[t].x,c[t].y+n+.9*s);return{xOffset:f,yOffset:p,mapping:c,data:h,width:h.width,height:h.height}}_getKey(){let{fontFamily:e,fontWeight:t,fontSize:i,buffer:r,sdf:s,radius:n,cutoff:
633o}=this.props;return s?`${e} ${t} ${i} ${r} ${n} ${o}`:`${e} ${t} ${i} ${r}`}}let t$=`\ 634#version 300 es 635#define SHADER_NAME text-background-layer-vertex-shader 636in vec2 positions; 637in vec3 instancePositions; 638in vec3 instancePositions64Low; 639in vec4 instanceRects; 640in float instanceSizes; 641in float instanceAngles; 642in vec2 instancePixelOffsets; 643in float instanceLineWidths; 644in vec4 instanceFillColors; 645in vec4 instanceLineColors; 646in vec3 instancePickingColors; 647uniform bool billboard; 648uniform float opacity; 649uniform float sizeScale; 650uniform float sizeMinPixels; 651uniform float sizeMaxPixels; 652uniform vec4 padding; 653uniform int sizeUnits; 654out vec4 vFillColor; 655out vec4 vLineColor; 656out float vLineWidth; 657out vec2 uv; 658out vec2 dimensions; 659vec2 rotate_by_angle(vec2 vertex, float angle) { 660float angle_radian = radians(angle); 661float cos_angle = cos(angle_radian); 662float sin_angle = sin(angle_radian); 663mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle); 664return rotationMatrix * vertex; 665} 666void main(void) { 667geometry.worldPosition = instancePositions; 668geometry.uv = positions; 669geometry.pickingColor = instancePickingColors; 670uv = positions; 671vLineWidth = instanceLineWidths; 672float sizePixels = clamp( 673project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), 674sizeMinPixels, sizeMaxPixels 675); 676dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw; 677vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions); 678pixelOffset = rotate_by_angle(pixelOffset, instanceAngles); 679pixelOffset += instancePixelOffsets; 680pixelOffset.y *= -1.0; 681if (billboard) { 682gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); 683DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 684vec3 offset = vec3(pixelOffset, 0.0); 685DECKGL_FILTER_SIZE(offset, geometry); 686gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); 687} else { 688vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0); 689DECKGL_FILTER_SIZE(offset_common, geometry); 690gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); 691DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 692} 693vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity); 694DECKGL_FILTER_COLOR(vFillColor, geometry); 695vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity); 696DECKGL_FILTER_COLOR(vLineColor, geometry); 697} 698`,tX=`\ 699#version 300 es 700#define SHADER_NAME text-background-layer-fragment-shader 701precision highp float; 702uniform bool stroked; 703in vec4 vFillColor; 704in vec4 vLineColor; 705in float vLineWidth; 706in vec2 uv; 707in vec2 dimensions; 708out vec4 fragColor; 709void main(void) { 710geometry.uv = uv; 711vec2 pixelPosition = uv * dimensions; 712if (stroked) { 713float distToEdge = min( 714min(pixelPosition.x, dimensions.x - pixelPosition.x), 715min(pixelPosition.y, dimensions.y - pixelPosition.y) 716); 717float isBorder = smoothedge(distToEdge, vLineWidth); 718fragColor = mix(vFillColor, vLineColor, isBorder); 719} else { 720fragColor = vFillColor; 721} 722DECKGL_FILTER_COLOR(fragColor, geometry); 723} 724`,tK={billboard:!0,sizeScale:1,sizeUnits:"pixels",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,padding:{type:"array",value:[0,0,0,0]},getPosition:{type:"accessor",value:e=>e.position},getSize:{type:"accessor",value:1},getAngle:{type:"accessor",value:0},getPixelOffset:{type:"accessor",value:[0,0]},getBoundingRect:{type:"accessor",value:[0,0,0,0]},getFillColor:{type:"accessor",value:[0,0,0,255]},getLineColor:{type:"accessor",value:[0,0,0,255]},getLineWidth:{type:"accessor",value:1}};class tY extends to{getShaders(){return super.getShaders({vs:t$,fs:tX,modules:[tc,tf]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceSizes:{size:1,transition:!0,accessor:"getSize",defaultValue:1},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instanceRects:{size:4,accessor:"getBoundingRect"},instancePixelOffsets:{size:2,transition:!0,accessor:"getPixelOffset"},instanceFillColors:{size:4,transition:!0,type:"unorm8",accessor:"getFillColor",defaultValue:[0,0,0,255]},instanceLineColors:{size:4,transition:!0,type:"unorm8",accessor:"getLineColor",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:"getLineWidth",defaultValue:1}})}updateState(e){super.updateState(e);let{changeFlags:t}=e;t.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),this.getAttributeManager().invalidateAll())}draw({uniforms:e}
724){let{billboard:t,sizeScale:i,sizeUnits:r,sizeMinPixels:n,sizeMaxPixels:o,getLineWidth:a}=this.props,{padding:l}=this.props;l.length<4&&(l=[l[0],l[1],l[0],l[1]]);let h=this.state.model;h.setUniforms(e),h.setUniforms({billboard:t,stroked:!!a,padding:l,sizeUnits:s.p5[r],sizeScale:i,sizeMinPixels:n,sizeMaxPixels:o}),h.draw(this.context.renderPass)}_getModel(){return new es(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new tp({topology:"triangle-fan-webgl",vertexCount:4,attributes:{positions:{size:2,value:new Float32Array([0,0,1,0,1,1,0,1])}}}),isInstanced:!0})}}tY.defaultProps=tK,tY.layerName="TextBackgroundLayer";let tZ={start:1,middle:0,end:-1},tq={top:1,center:0,bottom:-1},tQ=[0,0,0,255],tJ={billboard:!0,sizeScale:1,sizeUnits:"pixels",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,background:!1,getBackgroundColor:{type:"accessor",value:[255,255,255,255]},getBorderColor:{type:"accessor",value:tQ},getBorderWidth:{type:"accessor",value:0},backgroundPadding:{type:"array",value:[0,0,0,0]},characterSet:{type:"object",value:tz.characterSet},fontFamily:tz.fontFamily,fontWeight:tz.fontWeight,lineHeight:1,outlineWidth:{type:"number",value:0,min:0},outlineColor:{type:"color",value:tQ},fontSettings:{type:"object",value:{},compare:1},wordBreak:"break-word",maxWidth:{type:"number",value:-1},getText:{type:"accessor",value:e=>e.text},getPosition:{type:"accessor",value:e=>e.position},getColor:{type:"accessor",value:tQ},getSize:{type:"accessor",value:32},getAngle:{type:"accessor",value:0},getTextAnchor:{type:"accessor",value:"middle"},getAlignmentBaseline:{type:"accessor",value:"center"},getPixelOffset:{type:"accessor",value:[0,0]},backgroundColor:{deprecatedFor:["background","getBackgroundColor"]}};class t0 extends tl{constructor(){super(...arguments),this.getBoundingRect=(e,t)=>{let{size:[i,r]}=this.transformParagraph(e,t),{fontSize:s}=this.state.fontAtlasManager.props;i/=s,r/=s;let{getTextAnchor:n,getAlignmentBaseline:o}=this.props;return[(tZ["function"==typeof n?n(e,t):n]-1)*i/2,(tq["function"==typeof o?o(e,t):o]-1)*r/2,i,r]},this.getIconOffsets=(e,t)=>{let{getTextAnchor:i,getAlignmentBaseline:r}=this.props,{x:s,y:n,rowWidth:o,size:[a,l]}=this.transformParagraph(e,t),h=tZ["function"==typeof i?i(e,t):i],u=tq["function"==typeof r?r(e,t):r],c=s.length,d=Array(2*c),f=0;for(let e=0;e<c;e++){let t=(1-h)*(a-o[e])/2;d[f++]=(h-1)*a/2+t+s[e],d[f++]=(u-1)*l/2+n[e]}return d}}initializeState(){this.state={styleVersion:0,fontAtlasManager:new tH},this.props.maxWidth>0&&c.A.warn("v8.9 breaking change: TextLayer maxWidth is now relative to text size")()}updateState(e){let{props:t,oldProps:i,changeFlags:r}=e;(r.dataChanged||r.updateTriggersChanged&&(r.updateTriggersChanged.all||r.updateTriggersChanged.getText))&&this._updateText(),(this._updateFontAtlas()||t.lineHeight!==i.lineHeight||t.wordBreak!==i.wordBreak||t.maxWidth!==i.maxWidth)&&this.setState({styleVersion:this.state.styleVersion+1})}getPickingInfo({info:e}){return e.object=e.index>=0?this.props.data[e.index]:null,e}_updateFontAtlas(){let{fontSettings:e,fontFamily:t,fontWeight:i}=this.props,{fontAtlasManager:r,characterSet:s}=this.state,n={...e,characterSet:s,fontFamily:t,fontWeight:i};if(!r.mapping)return r.setProps(n),!0;for(let e in n)if(n[e]!==r.props[e])return r.setProps(n),!0;return!1}_updateText(){let e,{data:t,characterSet:i}=this.props,r=t.attributes?.getText,{getText:s}=this.props,n=t.startIndices,o="auto"===i&&new Set;if(r&&n){let{texts:i,characterCount:a}=function({value:e,length:t,stride:i,offset:r,startIndices:s,characterSet:n}){let o=e.BYTES_PER_ELEMENT,a=i?i/o:1,l=r?r/o:0,h=s[t]||Math.ceil((e.length-l)/a),u=n&&new Set,c=Array(t),d=e;if(a>1||l>0){d=new e.constructor(h);for(let t=0;t<h;t++)d[t]=e[t*a+l]}for(let e=0;e<t;e++){let t=s[e],i=s[e+1]||h,r=d.subarray(t,i);c[e]=String.fromCodePoint.apply(null,r),u&&r.forEach(u.add,u)}if(u)for(let e of u)n.add(String.fromCodePoint(e));return{texts:c,characterCount:h}}({...ArrayBuffer.isView(r)?{value:r}:r,length:t.length,startIndices:n,characterSet:o});e=a,s=(e,{index:t})=>i[t]}else{let{iterable:i,objectInfo:r}=m(t);for(let t of(n=[0],e=0,i)){r.index++;let i=Array.from(s(t,r)||"");
724o&&i.forEach(o.add,o),e+=i.length,n.push(e)}}this.setState({getText:s,startIndices:n,numInstances:e,characterSet:o||i})}transformParagraph(e,t){let{fontAtlasManager:i}=this.state,r=i.mapping,s=this.state.getText,{wordBreak:n,lineHeight:o,maxWidth:a}=this.props;return function(e,t,i,r,s){let n=Array.from(e),o=n.length,a=Array(o),l=Array(o),h=Array(o),u=("break-word"===i||"break-all"===i)&&isFinite(r)&&r>0,d=[0,0],f=[0,0],p=0,g=0,_=0;for(let e=0;e<=o;e++){let m=n[e];if(("\n"===m||e===o)&&(_=e),_>g){let e=u?function(e,t,i,r,s=0,n){void 0===n&&(n=e.length);let o=[];return"break-all"===t?tG(e,s,n,i,r,o):!function(e,t,i,r,s,n){let o=t,a=t,l=t,h=0;for(let u=t;u<i;u++)if(" "===e[u]?l=u+1:(" "===e[u+1]||u+1===i)&&(l=u+1),l>a){let t=tk(e,a,l,s);h+t>r&&(o<a&&(n.push(a),o=a,h=0),t>r&&(t=tG(e,a,l,r,s,n),o=n[n.length-1])),a=l,h+=t}}(e,s,n,i,r,o),o}(n,i,r,s,g,_):tU;for(let i=0;i<=e.length;i++){let r=0===i?g:e[i-1],o=i<e.length?e[i]:_;!function(e,t,i,r,s,n){let o=0,a=0;for(let n=t;n<i;n++){let t=e[n],i=r[t];i?(a||(a=i.layoutHeight),s[n]=o+i.layoutWidth/2,o+=i.layoutWidth):(c.A.warn(`Missing character: ${t} (${t.codePointAt(0)})`)(),s[n]=o,o+=32)}n[0]=o,n[1]=a}(n,r,o,s,a,f);for(let e=r;e<o;e++){let t=n[e],i=s[t]?.layoutOffsetY||0;l[e]=p+f[1]/2+i,h[e]=f[0]}p+=f[1]*t,d[0]=Math.max(d[0],f[0])}g=_}"\n"===m&&(a[g]=0,l[g]=0,h[g]=0,g++)}return d[1]=p,{x:a,y:l,rowWidth:h,size:d}}(s(e,t)||"",o,n,a*i.props.fontSize,r)}renderLayers(){let{startIndices:e,numInstances:t,getText:i,fontAtlasManager:{scale:r,atlas:s,mapping:n},styleVersion:o}=this.state,{data:a,_dataDiff:l,getPosition:h,getColor:u,getSize:c,getAngle:d,getPixelOffset:f,getBackgroundColor:p,getBorderColor:g,getBorderWidth:_,backgroundPadding:m,background:E,billboard:v,fontSettings:y,outlineWidth:b,outlineColor:A,sizeScale:T,sizeUnits:R,sizeMinPixels:S,sizeMaxPixels:w,transitions:P,updateTriggers:C}=this.props,x=this.getSubLayerClass("characters",tN),L=this.getSubLayerClass("background",tY);return[E&&new L({getFillColor:p,getLineColor:g,getLineWidth:_,padding:m,getPosition:h,getSize:c,getAngle:d,getPixelOffset:f,billboard:v,sizeScale:T,sizeUnits:R,sizeMinPixels:S,sizeMaxPixels:w,transitions:P&&{getPosition:P.getPosition,getAngle:P.getAngle,getSize:P.getSize,getFillColor:P.getBackgroundColor,getLineColor:P.getBorderColor,getLineWidth:P.getBorderWidth,getPixelOffset:P.getPixelOffset}},this.getSubLayerProps({id:"background",updateTriggers:{getPosition:C.getPosition,getAngle:C.getAngle,getSize:C.getSize,getFillColor:C.getBackgroundColor,getLineColor:C.getBorderColor,getLineWidth:C.getBorderWidth,getPixelOffset:C.getPixelOffset,getBoundingRect:{getText:C.getText,getTextAnchor:C.getTextAnchor,getAlignmentBaseline:C.getAlignmentBaseline,styleVersion:o}}}),{data:a.attributes&&a.attributes.background?{length:a.length,attributes:a.attributes.background}:a,_dataDiff:l,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new x({sdf:y.sdf,smoothing:Number.isFinite(y.smoothing)?y.smoothing:tz.smoothing,outlineWidth:b/(y.radius||tz.radius),outlineColor:A,iconAtlas:s,iconMapping:n,getPosition:h,getColor:u,getSize:c,getAngle:d,getPixelOffset:f,billboard:v,sizeScale:T*r,sizeUnits:R,sizeMinPixels:S*r,sizeMaxPixels:w*r,transitions:P&&{getPosition:P.getPosition,getAngle:P.getAngle,getColor:P.getColor,getSize:P.getSize,getPixelOffset:P.getPixelOffset}},this.getSubLayerProps({id:"characters",updateTriggers:{all:C.getText,getPosition:C.getPosition,getAngle:C.getAngle,getColor:C.getColor,getSize:C.getSize,getPixelOffset:C.getPixelOffset,getIconOffsets:{getTextAnchor:C.getTextAnchor,getAlignmentBaseline:C.getAlignmentBaseline,styleVersion:o}}}),{data:a,_dataDiff:l,startIndices:e,numInstances:t,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(e){c.A.assert(Number.isFinite(e)&&e>=3,"Invalid cache limit"),tW=new tV(e)}}t0.defaultProps=tJ,t0.layerName="TextLayer";class t1{constructor(e){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:t={}}=e;this.typedArrayManager=h.A,this.attributes={},this._attributeDefs=t,this.opts=e,this.updateGeometry(e)}updateGeometry(e){Object.assign(this.opts,e);let{data:t,buffers:i={},getGeometry:r,geometryBuffer:s,positionFormat:n,dataChanged:o,normalize:a=!0}=this.opts;if(this.data=t,this.getGeometry=r,this.positionSize=s&&s.size||("XY"===n?2:3),this.buffers=i,this.normalize=a,s&&((0,p.A)(t.startIndices),this.getGeometry=this.getGeometryFromBuffer(s),a||(i.vertexPositions=s)),this.geometryBuffer=i.vertexPositions,Array.isArray(o))for(let e of o)this._rebuildGeometry(e);else this._rebuildGeometry()}updatePartialGeometry({startRow:e,endRow:t}){this._rebuildGeometry({startRow:e,endRow:t})}getGeometryFromBuffer(e){let t=e.value||e;return ArrayBuffer.isView(t)?v(t,{size:this.positionSize,offset:e.offset,stride:e.stride,startIndices:this.data.startIndices}):null}_allocate(e,t){let{attributes:i,buffers:r,_attributeDefs:s,typedArrayManager:n}=this;for(let o in s)if(o in r)n.release(i[o]),i[o]=null;else{let r=s[o];r.copy=t,i[o]=n.allocate(i[o],e,r)}}_forEachGeometry(e,t,i){let{data:r,getGeometry:s}=this,{iterable:n,objectInfo:o}=m(r,t,i);for(let t of n)o.index++,e(s?s(t,o):null,o.index)}_rebuildGeometry(e){if(!this.data)return;let{indexStarts:t,vertexStarts:i,instanceCount:s}=this,{data:n,geometryBuffer:o}=this,{startRow:a=0,endRow:l=1/0}=e||{},h={};
724if(e||(t=[0],i=[0]),this.normalize||!o)this._forEachGeometry((e,t)=>{let r=e&&this.normalizeGeometry(e);h[t]=r,i[t+1]=i[t]+(r?this.getGeometrySize(r):0)},a,l),s=i[i.length-1];else if(s=(i=n.startIndices)[n.length]||0,ArrayBuffer.isView(o))s=s||o.length/this.positionSize;else if(o instanceof r.h){let e=4*this.positionSize;s=s||o.byteLength/e}else if(o.buffer){let e=o.stride||4*this.positionSize;s=s||o.buffer.byteLength/e}else if(o.value){let e=o.value,t=o.stride/e.BYTES_PER_ELEMENT||this.positionSize;s=s||e.length/t}this._allocate(s,!!e),this.indexStarts=t,this.vertexStarts=i,this.instanceCount=s;let u={};this._forEachGeometry((e,r)=>{let n=h[r]||e;u.vertexStart=i[r],u.indexStart=t[r],u.geometrySize=(r<i.length-1?i[r+1]:s)-i[r],u.geometryIndex=r,this.updateGeometryAttributes(n,u)},a,l),this.vertexCount=t[t.length-1]}}let t3={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function t2(e,t,i={}){return function(e,t={}){return Math.sign(function(e,t={}){let{start:i=0,end:r=e.length,plane:s="xy"}=t,n=t.size||2,o=0,a=t6[s[0]],l=t6[s[1]];for(let t=i,s=r-n;t<r;t+=n)o+=(e[t+a]-e[s+a])*(e[t+l]+e[s+l]),s=t;return o/2}(e,t))}(e,i)!==t&&(function(e,t){let{start:i=0,end:r=e.length,size:s=2}=t,n=(r-i)/s,o=Math.floor(n/2);for(let t=0;t<o;++t){let r=i+t*s,o=i+(n-1-t)*s;for(let t=0;t<s;++t){let i=e[r+t];e[r+t]=e[o+t],e[o+t]=i}}}(e,i),!0)}let t6={x:0,y:1,z:2};function t4(e,t,i,r,s=[]){let n,o;if(8&i)n=(r[3]-e[1])/(t[1]-e[1]),o=3;else if(4&i)n=(r[1]-e[1])/(t[1]-e[1]),o=1;else if(2&i)n=(r[2]-e[0])/(t[0]-e[0]),o=2;else{if(!(1&i))return null;n=(r[0]-e[0])/(t[0]-e[0]),o=0}for(let i=0;i<e.length;i++)s[i]=(1&o)===i?r[o]:n*(t[i]-e[i])+e[i];return s}function t5(e,t){let i=0;return e[0]<t[0]?i|=1:e[0]>t[2]&&(i|=2),e[1]<t[1]?i|=4:e[1]>t[3]&&(i|=8),i}function t8(e,t){let i=t.length,r=e.length;if(r>0){let s=!0;for(let n=0;n<i;n++)if(e[r-i+n]!==t[n]){s=!1;break}if(s)return!1}for(let s=0;s<i;s++)e[r+s]=t[s];return!0}function t7(e,t){let i=t.length;for(let r=0;r<i;r++)e[r]=t[r]}function t9(e,t,i,r,s=[]){let n=r+t*i;for(let t=0;t<i;t++)s[t]=e[n+t];return s}function ie(e,t){let i,r,{size:s=2,broken:n=!1,gridResolution:o=10,gridOffset:a=[0,0],startIndex:l=0,endIndex:h=e.length}=t||{},u=(h-l)/s,c=[],d=[c],f=t9(e,0,s,l),p=ir(f,o,a,[]),g=[];t8(c,f);for(let t=1;t<u;t++){for(r=t5(i=t9(e,t,s,l,i),p);r;){var _,m,E;t4(f,i,r,p,g);let e=t5(g,p);e&&(t4(f,g,e,p,g),r=e),t8(c,g),t7(f,g),_=p,m=o,8&(E=r)?(_[1]+=m,_[3]+=m):4&E?(_[1]-=m,_[3]-=m):2&E?(_[0]+=m,_[2]+=m):1&E&&(_[0]-=m,_[2]-=m),n&&c.length>s&&(c=[],d.push(c),t8(c,f)),r=t5(i,p)}t8(c,i),t7(f,i)}return n?d:d[0]}function it(e,t=null,i){if(!e.length)return[];let{size:r=2,gridResolution:s=10,gridOffset:n=[0,0],edgeTypes:o=!1}=i||{},a=[],l=[{pos:e,types:o?Array(e.length/r).fill(1):null,holes:t||[]}],h=[[],[]],u=[];for(;l.length;){let{pos:e,types:t,holes:i}=l.shift();(function(e,t,i,r){let s=1/0,n=-1/0,o=1/0,a=-1/0;for(let r=0;r<i;r+=t){let t=e[r],i=e[r+1];s=t<s?t:s,n=t>n?t:n,o=i<o?i:o,a=i>a?i:a}r[0][0]=s,r[0][1]=o,r[1][0]=n,r[1][1]=a})(e,r,i[0]||e.length,h),u=ir(h[0],s,n,u);let c=t5(h[1],u);if(c){let s=ii(e,t,r,0,i[0]||e.length,u,c),n={pos:s[0].pos,types:s[0].types,holes:[]},a={pos:s[1].pos,types:s[1].types,holes:[]};l.push(n,a);for(let l=0;l<i.length;l++)(s=ii(e,t,r,i[l],i[l+1]||e.length,u,c))[0]&&(n.holes.push(n.pos.length),n.pos=is(n.pos,s[0].pos),o&&(n.types=is(n.types,s[0].types))),s[1]&&(a.holes.push(a.pos.length),a.pos=is(a.pos,s[1].pos),o&&(a.types=is(a.types,s[1].types)))}else{let r={positions:e};o&&(r.edgeTypes=t),i.length&&(r.holeIndices=i),a.push(r)}}return a}function ii(e,t,i,r,s,n,o){let a,l,h,u=(s-r)/i,c=[],d=[],f=[],p=[],g=[],_=t9(e,u-1,i,r),m=Math.sign(8&o?_[1]-n[3]:_[0]-n[2]),E=t&&t[u-1],v=0,y=0;for(let s=0;s<u;s++)a=t9(e,s,i,r,a),l=Math.sign(8&o?a[1]-n[3]:a[0]-n[2]),h=t&&t[r/i+s],l&&m&&m!==l&&(t4(_,a,o,n,g),t8(c,g)&&f.push(E),t8(d,g)&&p.push(E)),l<=0?(t8(c,a)&&f.push(h),v-=l):f.length&&(f[f.length-1]=0),l>=0?(t8(d,a)&&p.push(h),y+=l):p.length&&(p[p.length-1]=0),t7(_,a),m=l,E=h;return[v?{pos:c,types:t&&f}:null,y?{pos:d,types:t&&p}:null]}function ir(e,t,i,r){let s=Math.floor((e[0]-i[0])/t)*t+i[0],n=Math.floor((e[1]-i[1])/t)*t+i[1];return r[0]=s,r[1]=n,r[2]=s+t,r[3]=n+t,r}function is(e,t){for(let i=0;i<t.length;i++)e.push(t[i]);return e}function io(e,t,i,r){let s,n=e[0];for(let o=i;o<r;o+=t){let t=(s=e[o])-n;(t>180||t<-180)&&(s-=360*Math.round(t/360)),e[o]=n=s}}function ia(e,t){let i,r=e.length/t;for(let s=0;s<r&&((i=e[s*t])+180)%360==0;s++);let s=-(360*Math.round(i/360));if(0!==s)for(let i=0;i<r;i++)e[i*t]+=s}class il extends t1{constructor(e){super({...e,attributes:{positions:{size:3,padding:18,initialize:!0,type:e.fp64?Float64Array:Float32Array},segmentTypes:{size:1,type:Uint8ClampedArray}}})}get(e){return this.attributes[e]}getGeometryFromBuffer(e){return this.normalize?super.getGeometryFromBuffer(e):null}normalizeGeometry(e){return this.normalize?function(e,t,i,r){let s;if(Array.isArray(e[0])){s=Array(e.length*t);for(let i=0;i<e.length;i++)for(let r=0;r<t;r++)s[i*t+r]=e[i][r]||0}else s=e;return i?ie(s,{size:t,gridResolution:i}):r?function(e,t){let{size:i=2,startIndex:r=0,endIndex:s=e.length,normalize:n=!0}=t||{},o=e.slice(r,s);io(o,i,0,s-r);let a=ie(o,{size:i,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(n)for(let e of a)ia(e,i);return a}(s,{size:t}):s}(e,this.positionSize,this.opts.resolution,this.opts.wrapLongitude):e}getGeometrySize(e){if(ih(e)){let t=0;for(let i of e)t+=this.getGeometrySize(i);return t}let t=this.getPathLength(e);return t<2?0:this.isClosed(e)?t<3?0:t+2:t}updateGeometryAttributes(e,t){if(0!==t.geometrySize)if(e&&ih(e))for(let i of e){let e=this.getGeometrySize(i);t.geometrySize=e,this.updateGeometryAttributes(i,t),t.vertexStart+=e}else this._updateSegmentTypes(e,t),this._updatePositions(e,t)}_updateSegmentTypes(e,t){let i=this.attributes.segmentTypes,r=!!e&&this.isClosed(e),{vertexStart:s,geometrySize:n}=t;i.fill(0,s,s+n),r?(i[s]=4,i[s+n-2]=4):(i[s]+=1,i[s+n-2]+=2),i[s+n-1]=4}_updatePositions(e,t){let{positions:i}=this.attributes;if(!i||!e)return;let{vertexStart:r,geometrySize:s}=t,n=[,,,];for(let t=r,o=0;o<s;t++,o++)this.getPointOnPath(e,o,n),i[3*t]=n[0],i[3*t+1]=n[1],i[3*t+2]=n[2]}getPathLength(e){return e.length/this.positionSize}getPointOnPath(e,t,i=[]){let{positionSize:r}=this;t*r>=e.length&&(t+=1-e.length/r);let s=t*r;return i[0]=e[s],i[1]=e[s+1],i[2]=3===r&&e[s+2]||0,i}isClosed(e){if(!this.normalize)return!!this.opts.loop;let{positionSize:t}=this,i=e.length-t;return e[0]===e[i]&&e[1]===e[i+1]&&(2===t||e[2]===e[i+2])}}function ih(e){return Array.isArray(e[0])}let iu=`\ 725#version 300 es 726#define SHADER_NAME path-layer-vertex-shader 727in vec2 positions; 728in float instanceTypes; 729in vec3 instanceStartPositions; 730in vec3 instanceEndPositions; 731in vec3 instanceLeftPositions; 732in vec3 instanceRightPositions; 733in vec3 instanceLeftPositions64Low; 734in vec3 instanceStartPositions64Low; 735in vec3 instanceEndPositions64Low; 736in vec3 instanceRightPositions64Low; 737in float instanceStrokeWidths; 738in vec4 instanceColors; 739in vec3 instancePickingColors; 740uniform float widthScale; 741uniform float widthMinPixels; 742uniform float widthMaxPixels; 743uniform float jointType; 744uniform float capType; 745uniform float miterLimit; 746uniform bool billboard; 747uniform int widthUnits; 748uniform float opacity; 749out vec4 vColor; 750out vec2 vCornerOffset; 751out float vMiterLength; 752out vec2 vPathPosition; 753out float vPathLength; 754out float vJointType; 755const float EPSILON = 0.001; 756const vec3 ZERO_OFFSET = vec3(0.0); 757float flipIfTrue(bool flag) { 758return -(float(flag) * 2. - 1.); 759} 760vec3 getLineJoinOffset( 761vec3 prevPoint, vec3 currPoint, vec3 nextPoint, 762vec2 width 763) { 764bool isEnd = positions.x > 0.0; 765float sideOfPath = positions.y; 766float isJoint = float(sideOfPath == 0.0); 767vec3 deltaA3 = (currPoint - prevPoint); 768vec3 deltaB3 = (nextPoint - currPoint); 769mat3 rotationMatrix; 770bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix); 771if (needsRotation) { 772deltaA3 = deltaA3 * rotationMatrix; 773deltaB3 = deltaB3 * rotationMatrix; 774} 775vec2 deltaA = deltaA3.xy / width; 776vec2 deltaB = deltaB3.xy / width; 777float lenA = length(deltaA); 778float lenB = length(deltaB); 779vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0); 780vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0); 781vec2 perpA = vec2(-dirA.y, dirA.x); 782vec2 perpB = vec2(-dirB.y, dirB.x); 783vec2 tangent = dirA + dirB; 784tangent = length(tangent) > 0. ? normalize(tangent) : perpA; 785vec2 miterVec = vec2(-tangent.y, tangent.x); 786vec2 dir = isEnd ? dirA : dirB; 787vec2 perp = isEnd ? perpA : perpB; 788float L = isEnd ? lenA : lenB; 789float sinHalfA = abs(dot(miterVec, perp));
790float cosHalfA = abs(dot(dirA, miterVec)); 791float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x); 792float cornerPosition = sideOfPath * turnDirection; 793float miterSize = 1.0 / max(sinHalfA, EPSILON); 794miterSize = mix( 795min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)), 796miterSize, 797step(0.0, cornerPosition) 798); 799vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition)) 800* (sideOfPath + isJoint * turnDirection); 801bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0)); 802bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0)); 803bool isCap = isStartCap || isEndCap; 804if (isCap) { 805offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint); 806vJointType = capType; 807} else { 808vJointType = jointType; 809} 810vPathLength = L; 811vCornerOffset = offsetVec; 812vMiterLength = dot(vCornerOffset, miterVec * turnDirection); 813vMiterLength = isCap ? isJoint : vMiterLength; 814vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd); 815vPathPosition = vec2( 816dot(offsetFromStartOfPath, perp), 817dot(offsetFromStartOfPath, dir) 818); 819geometry.uv = vPathPosition; 820float isValid = step(instanceTypes, 3.5); 821vec3 offset = vec3(offsetVec * width * isValid, 0.0); 822if (needsRotation) { 823offset = rotationMatrix * offset; 824} 825return offset; 826} 827void clipLine(inout vec4 position, vec4 refPosition) { 828if (position.w < EPSILON) { 829float r = (EPSILON - refPosition.w) / (position.w - refPosition.w); 830position = refPosition + (position - refPosition) * r; 831} 832} 833void main() { 834geometry.pickingColor = instancePickingColors; 835vColor = vec4(instanceColors.rgb, instanceColors.a * opacity); 836float isEnd = positions.x; 837vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd); 838vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd); 839vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd); 840vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd); 841vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd); 842vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd); 843geometry.worldPosition = currPosition; 844vec2 widthPixels = vec2(clamp( 845project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits), 846widthMinPixels, widthMaxPixels) / 2.0); 847vec3 width; 848if (billboard) { 849vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET); 850vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position); 851vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET); 852clipLine(prevPositionScreen, currPositionScreen); 853clipLine(nextPositionScreen, currPositionScreen); 854clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd)); 855width = vec3(widthPixels, 0.0); 856DECKGL_FILTER_SIZE(width, geometry); 857vec3 offset = getLineJoinOffset( 858prevPositionScreen.xyz / prevPositionScreen.w, 859currPositionScreen.xyz / currPositionScreen.w, 860nextPositionScreen.xyz / nextPositionScreen.w, 861project_pixel_size_to_clipspace(width.xy) 862); 863DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry); 864gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w); 865} else { 866prevPosition = project_position(prevPosition, prevPosition64Low); 867currPosition = project_position(currPosition, currPosition64Low); 868nextPosition = project_position(nextPosition, nextPosition64Low); 869width = vec3(project_pixel_size(widthPixels), 0.0); 870DECKGL_FILTER_SIZE(width, geometry); 871vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy); 872geometry.position = vec4(currPosition + offset, 1.0); 873gl_Position = project_common_position_to_clipspace(geometry.position); 874DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 875} 876DECKGL_FILTER_COLOR(vColor, geometry); 877} 878`,ic=`\ 879#version 300 es 880#define SHADER_NAME path-layer-fragment-shader 881precision highp float; 882uniform float miterLimit; 883in vec4 vColor; 884in vec2 vCornerOffset; 885in float vMiterLength; 886in vec2 vPathPosition; 887in float vPathLength; 888in float vJointType; 889out vec4 fragColor; 890void main(void) { 891geometry.uv = vPathPosition; 892if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) { 893if (vJointType > 0.5 && length(vCornerOffset) > 1.0) { 894discard; 895} 896if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) { 897discard; 898} 899} 900fragColor = vColor; 901DECKGL_FILTER_COLOR(fragColor, geometry); 902} 903`,id=[0,0,0,255],ip={widthUnits:"meters",widthScale:{type:"number",min:0,value:1},widthMinPixels:{type:"number",min:0,value:0},widthMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},jointRounded:!1,capRounded:!1,miterLimit:{type:"number",min:0,value:4},billboard:!1,_pathType:null,getPath:{type:"accessor",value:e=>e.path},getColor:{type:"accessor",value:id},getWidth:{type:"accessor",value:1}
903,rounded:{deprecatedFor:["jointRounded","capRounded"]}},ig={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e};class i_ extends to{getShaders(){return super.getShaders({vs:iu,fs:ic,modules:[tc,tf]})}get wrapLongitude(){return!1}getBounds(){return this.getAttributeManager()?.getBounds(["vertexPositions"])}initializeState(){this.getAttributeManager().addInstanced({vertexPositions:{size:3,vertexOffset:1,type:"float64",fp64:this.use64bitPositions(),transition:ig,accessor:"getPath",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{instanceLeftPositions:{vertexOffset:0},instanceStartPositions:{vertexOffset:1},instanceEndPositions:{vertexOffset:2},instanceRightPositions:{vertexOffset:3}}},instanceTypes:{size:1,type:"uint8",update:this.calculateSegmentTypes,noAlloc:!0},instanceStrokeWidths:{size:1,accessor:"getWidth",transition:ig,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:"unorm8",accessor:"getColor",transition:ig,defaultValue:id},instancePickingColors:{size:4,type:"uint8",accessor:(e,{index:t,target:i})=>this.encodePickingColor(e&&e.__source?e.__source.index:t,i)}}),this.setState({pathTesselator:new il({fp64:this.use64bitPositions()})})}updateState(e){super.updateState(e);let{props:t,changeFlags:i}=e,r=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){let{pathTesselator:e}=this.state,s=t.data.attributes||{};e.updateGeometry({data:t.data,geometryBuffer:s.getPath,buffers:s,normalize:!t._pathType,loop:"loop"===t._pathType,getGeometry:t.getPath,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:e.instanceCount,startIndices:e.vertexStarts}),i.dataChanged||r.invalidateAll()}i.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),r.invalidateAll())}getPickingInfo(e){let t=super.getPickingInfo(e),{index:i}=t,r=this.props.data;return r[0]&&r[0].__source&&(t.object=r.find(e=>e.__source.index===i)),t}disablePickingIndex(e){let t=this.props.data;if(t[0]&&t[0].__source)for(let i=0;i<t.length;i++)t[i].__source.index===e&&this._disablePickingIndex(i);else super.disablePickingIndex(e)}draw({uniforms:e}){let{jointRounded:t,capRounded:i,billboard:r,miterLimit:n,widthUnits:o,widthScale:a,widthMinPixels:l,widthMaxPixels:h}=this.props,u=this.state.model;u.setUniforms(e),u.setUniforms({jointType:Number(t),capType:Number(i),billboard:r,widthUnits:s.p5[o],widthScale:a,miterLimit:n,widthMinPixels:l,widthMaxPixels:h}),u.draw(this.context.renderPass)}_getModel(){return new es(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new tp({topology:"triangle-list",attributes:{indices:new Uint16Array([0,1,2,1,4,2,1,3,4,3,5,4]),positions:{value:new Float32Array([0,0,0,-1,0,1,1,-1,1,1,1,0]),size:2}}}),isInstanced:!0})}calculatePositions(e){let{pathTesselator:t}=this.state;e.startIndices=t.vertexStarts,e.value=t.get("positions")}calculateSegmentTypes(e){let{pathTesselator:t}=this.state;e.startIndices=t.vertexStarts,e.value=t.get("segmentTypes")}}i_.defaultProps=ip,i_.layerName="PathLayer";let im=`\ 904#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX)) 905struct AmbientLight { 906vec3 color; 907}; 908struct PointLight { 909vec3 color; 910vec3 position; 911vec3 attenuation; 912}; 913struct DirectionalLight { 914vec3 color; 915vec3 direction; 916}; 917uniform AmbientLight lighting_uAmbientLight; 918uniform PointLight lighting_uPointLight[MAX_LIGHTS]; 919uniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS]; 920uniform int lighting_uPointLightCount; 921uniform int lighting_uDirectionalLightCount; 922uniform bool lighting_uEnabled; 923float getPointLightAttenuation(PointLight pointLight, float distance) { 924return pointLight.attenuation.x 925+ pointLight.attenuation.y * distance 926+ pointLight.attenuation.z * distance * distance; 927} 928#endif 929`,iE={lightSources:{}};function iv(e={}){let{color:t=[0,0,0],intensity:i=1}=e;return t.map(e=>e*i/255)}let iy={},ib={name:"gouraud-lighting",dependencies:[{name:"lights",vs:im,fs:im,getUniforms:function e(t=iE){if("lightSources"in t){let{ambientLight:e,pointLights:i,directionalLights:r}=t.lightSources||{};return e||i&&i.length>0||r&&r.length>0?Object.assign({},function({ambientLight:e,pointLights:t=[],directionalLights:i=[]}){let r={};return e?r["lighting_uAmbientLight.color"]=iv(e):r["lighting_uAmbientLight.color"]=[0,0,0],t.forEach((e,t)=>{r[`lighting_uPointLight[${t}].color`]=iv(e),r[`lighting_uPointLight[${t}].position`]=e.position,r[`lighting_uPointLight[${t}].attenuation`]=e.attenuation||[1,0,0]}
929),r.lighting_uPointLightCount=t.length,i.forEach((e,t)=>{r[`lighting_uDirectionalLight[${t}].color`]=iv(e),r[`lighting_uDirectionalLight[${t}].direction`]=e.direction}),r.lighting_uDirectionalLightCount=i.length,r}({ambientLight:e,pointLights:i,directionalLights:r}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in t){let i={pointLights:[],directionalLights:[]};for(let e of t.lights||[])switch(e.type){case"ambient":i.ambientLight=e;break;case"directional":i.directionalLights?.push(e);break;case"point":i.pointLights?.push(e)}return e({lightSources:i})}return{}},defines:{MAX_LIGHTS:3}}],vs:`\ 930uniform float lighting_uAmbient; 931uniform float lighting_uDiffuse; 932uniform float lighting_uShininess; 933uniform vec3 lighting_uSpecularColor; 934vec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) { 935vec3 halfway_direction = normalize(light_direction + view_direction); 936float lambertian = dot(light_direction, normal_worldspace); 937float specular = 0.0; 938if (lambertian > 0.0) { 939float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0); 940specular = pow(specular_angle, lighting_uShininess); 941} 942lambertian = max(lambertian, 0.0); 943return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color; 944} 945vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) { 946vec3 lightColor = surfaceColor; 947if (lighting_uEnabled) { 948vec3 view_direction = normalize(cameraPosition - position_worldspace); 949lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color; 950for (int i = 0; i < MAX_LIGHTS; i++) { 951if (i >= lighting_uPointLightCount) { 952break; 953} 954PointLight pointLight = lighting_uPointLight[i]; 955vec3 light_position_worldspace = pointLight.position; 956vec3 light_direction = normalize(light_position_worldspace - position_worldspace); 957lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color); 958} 959for (int i = 0; i < MAX_LIGHTS; i++) { 960if (i >= lighting_uDirectionalLightCount) { 961break; 962} 963DirectionalLight directionalLight = lighting_uDirectionalLight[i]; 964lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color); 965} 966} 967return lightColor; 968} 969vec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) { 970vec3 lightColor = vec3(0, 0, 0); 971vec3 surfaceColor = vec3(0, 0, 0); 972if (lighting_uEnabled) { 973vec3 view_direction = normalize(cameraPosition - position_worldspace); 974for (int i = 0; i < MAX_LIGHTS; i++) { 975if (i >= lighting_uPointLightCount) { 976break; 977} 978PointLight pointLight = lighting_uPointLight[i]; 979vec3 light_position_worldspace = pointLight.position; 980vec3 light_direction = normalize(light_position_worldspace - position_worldspace); 981lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color); 982} 983for (int i = 0; i < MAX_LIGHTS; i++) { 984if (i >= lighting_uDirectionalLightCount) { 985break; 986} 987DirectionalLight directionalLight = lighting_uDirectionalLight[i]; 988lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color); 989} 990} 991return lightColor; 992} 993`,defines:{LIGHTING_VERTEX:1},getUniforms:function(e=iy){if(!("material"in e))return{};let{material:t}=e;if(!t)return{lighting_uEnabled:!1};let{ambient:i=.35,diffuse:r=.6,shininess:s=32,specularColor:n=[30,30,30]}=t;return{lighting_uAmbient:i,lighting_uDiffuse:r,lighting_uShininess:s,lighting_uSpecularColor:n.map(e=>e/255)}}};var iA=i(16154);let iT=t3.CLOCKWISE,iR=t3.COUNTER_CLOCKWISE,iS={isClosed:!0};function iw(e){return"positions"in e?e.positions:e}function iP(e){return"holeIndices"in e?e.holeIndices:null}function iC(e,t,i,r,s){let n=t,o=i.length;for(let t=0;t<o;t++)for(let s=0;s<r;s++)e[n++]=i[t][s]||0;if(!function(e){let t=e[0],i=e[e.length-1];return t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]}(i))for(let t=0;t<r;t++)e[n++]=i[0][t]||0;return iS.start=t,iS.end=n,iS.size=r,t2(e,s,iS),n}function ix(e,t,i,r,s=0,n,o){let a=(n=n||i.length)-s;if(a<=0)return t;let l=t;for(let t=0;t<a;t++)e[l++]=i[s+t];if(!function(e,t,i,r){for(let s=0;s<t;s++)if(e[i+s]!==e[r-t+s])return!1;return!0}(i,r,s,n))for(let t=0;t<r;t++)e[l++]=i[s+t];return iS.start=t,iS.end=l,iS.size=r,t2(e,o,iS),l}function iL(e,t,i){let r=e.length/3,s=0;for(let n=0;n<r;n++){let o=(n+1)%r;s+=e[3*n+t]*e[3*o+i],s-=e[3*o+t]*e[3*n+i]}return Math.abs(s/2)}function iM(e,t,i,r){let s=e.length/3;for(let n=0;n<s;n++){let s=3*n,o=e[s+0],a=e[s+1],l=e[s+2];e[s+t]=o,e[s+i]=a,e[s+r]=l}}class iI extends t1{constructor(e){let{fp64:t,IndexType:i=Uint32Array}=e;super({...e,attributes:{positions:{size:3,type:t?Float64Array:Float32Array},vertexValid:{type:Uint16Array,size:1},indices:{type:i,size:1}}})}get(e){let{attributes:t}=this;return"indices"===e?t.indices&&t.indices.subarray(0,this.vertexCount):t[e]}updateGeometry(e){super.updateGeometry(e);let t=this.buffers.indices;if(t)this.vertexCount=(t.value||t).length;else if(this.data&&!this.getGeometry)throw Error("missing indices buffer")}normalizeGeometry(e){if(this.normalize){let t=function(e,t){var i,r=e;if(!Array.isArray(r=r&&r.positions||r)&&!ArrayBuffer.isView(r))throw Error("invalid polygon");let s=[],n=[];if("positions"in e){let{positions:i,holeIndices:r}=e;if(r){let e=0;for(let o=0;o<=r.length;o++)e=ix(s,e,i,t,r[o-1],r[o],0===o?iT:iR),n.push(e);return n.pop(),{positions:s,holeIndices:n}}e=i}if(!Array.isArray(e[0]))return ix(s,0,e,t,0,s.length,iT),s;if(!((i=e).length>=1&&i[0].length>=2&&Number.isFinite(i[0][0]))){let i=0;for(let[r,o]of e.entries())i=iC(s,i,o,t,0===r?iT:iR),n.push(i);return n.pop(),{positions:s,holeIndices:n}}return iC(s,0,e,t,iT),s}(e,this.positionSize);return this.opts.resolution?it(iw(t),iP(t),{size:this.positionSize,gridResolution:this.opts.resolution,edgeTypes:!0}):this.opts.wrapLongitude?function(e,t=null,i){let{size:r=2,normalize:s=!0,edgeTypes:n=!1}=i||{};t=t||[];let o=[],a=[],l=0,h=0;for(let s=0;s<=t.length;s++){let n=t[s]||e.length,u=h,c=function(e,t,i,r){let s=-1,n=-1;for(let o=i+1;o<r;o+=t){let t=Math.abs(e[o]);t>s&&(s=t,n=o-1)}return n}(e,r,l,n);for(let t=c;t<n;t++)o[h++]=e[t];for(let t=l;t<c;t++)o[h++]=e[t];io(o,r,u,h),function(e,t,i,r,s=85.051129){let n=e[i],o=e[r-t];if(Math.abs(n-o)>180){let r=t9(e,0,t,i);r[0]+=360*Math.round((o-n)/360),t8(e,r),r[1]=Math.sign(r[1])*s,t8(e,r),r[0]=n,t8(e,r)}}(o,r,u,h,i?.maxLatitude),l=n,a[s]=h}a.pop();let u=it(o,a,{size:r,gridResolution:360,gridOffset:[-180,-180],edgeTypes:n});if(s)for(let e of u)ia(e.positions,r);return u}(iw(t),iP(t),{size:this.positionSize,maxLatitude:86,edgeTypes:!0}):t}return e}getGeometrySize(e){if(iO(e)){let t=0;for(let i of e)t+=this.getGeometrySize(i);return t}return iw(e).length/this.positionSize}getGeometryFromBuffer(e){return this.normalize||!this.buffers.indices?super.getGeometryFromBuffer(e):null}updateGeometryAttributes(e,t){if(e&&iO(e))for(let i of e){let e=this.getGeometrySize(i);t.geometrySize=e,this.updateGeometryAttributes(i,t),t.vertexStart+=e,t.indexStart=this.indexStarts[t.geometryIndex+1]}else this._updateIndices(e,t),this._updatePositions(e,t),this._updateVertexValid(e,t)}_updateIndices(e,{geometryIndex:t,vertexStart:i,indexStart:r}){let{attributes:s,indexStarts:n,typedArrayManager:o}=this,a=s.indices;if(!a||!e)return;let l=r,h=function(e,t,i,r){let s=iP(e);s&&(s=s.map(e=>e/t));let n=iw(e),o=r&&3===t;if(i){let e=n.length;n=n.slice();let r=[];for(let s=0;s<e;s+=t){r[0]=n[s],r[1]=n[s+1],o&&(r[2]=n[s+2]);let e=i(r);n[s]=e[0],n[s+1]=e[1],o&&(n[s+2]=e[2])}}if(o){let e=iL(n,0,1),t=iL(n,0,2),r=iL(n,1,2);
993if(!e&&!t&&!r)return[];e>t&&e>r||(t>r?(i||(n=n.slice()),iM(n,0,2,1)):(i||(n=n.slice()),iM(n,2,0,1)))}return iA(n,s,t)}(e,this.positionSize,this.opts.preproject,this.opts.full3d);a=o.allocate(a,r+h.length,{copy:!0});for(let e=0;e<h.length;e++)a[l++]=h[e]+i;n[t+1]=r+h.length,s.indices=a}_updatePositions(e,{vertexStart:t,geometrySize:i}){let{attributes:{positions:r},positionSize:s}=this;if(!r||!e)return;let n=iw(e);for(let e=t,o=0;o<i;e++,o++){let t=n[o*s],i=n[o*s+1],a=s>2?n[o*s+2]:0;r[3*e]=t,r[3*e+1]=i,r[3*e+2]=a}}_updateVertexValid(e,{vertexStart:t,geometrySize:i}){let{positionSize:r}=this,s=this.attributes.vertexValid,n=e&&iP(e);if(e&&e.edgeTypes?s.set(e.edgeTypes,t):s.fill(1,t,t+i),n)for(let e=0;e<n.length;e++)s[t+n[e]/r-1]=0;s[t+i-1]=0}}function iO(e){return Array.isArray(e)&&e.length>0&&!Number.isFinite(e[0])}let iN=`\ 994uniform bool extruded; 995uniform bool isWireframe; 996uniform float elevationScale; 997uniform float opacity; 998in vec4 fillColors; 999in vec4 lineColors; 1000in vec3 pickingColors; 1001out vec4 vColor; 1002struct PolygonProps { 1003vec3 positions; 1004vec3 positions64Low; 1005vec3 normal; 1006float elevations; 1007}; 1008vec3 project_offset_normal(vec3 vector) { 1009if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT || 1010project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) { 1011return normalize(vector * project_uCommonUnitsPerWorldUnit); 1012} 1013return project_normal(vector); 1014} 1015void calculatePosition(PolygonProps props) { 1016vec3 pos = props.positions; 1017vec3 pos64Low = props.positions64Low; 1018vec3 normal = props.normal; 1019vec4 colors = isWireframe ? lineColors : fillColors; 1020geometry.worldPosition = props.positions; 1021geometry.pickingColor = pickingColors; 1022if (extruded) { 1023pos.z += props.elevations * elevationScale; 1024} 1025gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position); 1026DECKGL_FILTER_GL_POSITION(gl_Position, geometry); 1027if (extruded) { 1028#ifdef IS_SIDE_VERTEX 1029normal = project_offset_normal(normal); 1030#else 1031normal = project_normal(normal); 1032#endif 1033geometry.normal = normal; 1034vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal); 1035vColor = vec4(lightColor, colors.a * opacity); 1036} else { 1037vColor = vec4(colors.rgb, colors.a * opacity); 1038} 1039DECKGL_FILTER_COLOR(vColor, geometry); 1040} 1041`,iF=`\ 1042#version 300 es 1043#define SHADER_NAME solid-polygon-layer-vertex-shader 1044in vec3 vertexPositions; 1045in vec3 vertexPositions64Low; 1046in float elevations; 1047${iN} 1048void main(void) { 1049PolygonProps props; 1050props.positions = vertexPositions; 1051props.positions64Low = vertexPositions64Low; 1052props.elevations = elevations; 1053props.normal = vec3(0.0, 0.0, 1.0); 1054calculatePosition(props); 1055} 1056`,iD=`\ 1057#version 300 es 1058#define SHADER_NAME solid-polygon-layer-vertex-shader-side 1059#define IS_SIDE_VERTEX 1060in vec2 positions; 1061in vec3 vertexPositions; 1062in vec3 nextVertexPositions; 1063in vec3 vertexPositions64Low; 1064in vec3 nextVertexPositions64Low; 1065in float elevations; 1066in float instanceVertexValid; 1067${iN} 1068void main(void) { 1069if(instanceVertexValid < 0.5){ 1070gl_Position = vec4(0.); 1071return; 1072} 1073PolygonProps props; 1074vec3 pos; 1075vec3 pos64Low; 1076vec3 nextPos; 1077vec3 nextPos64Low; 1078#if RING_WINDING_ORDER_CW == 1 1079pos = vertexPositions; 1080pos64Low = vertexPositions64Low; 1081nextPos = nextVertexPositions; 1082nextPos64Low = nextVertexPositions64Low; 1083#else 1084pos = nextVertexPositions; 1085pos64Low = nextVertexPositions64Low; 1086nextPos = vertexPositions; 1087nextPos64Low = vertexPositions64Low; 1088#endif 1089props.positions = mix(pos, nextPos, positions.x); 1090props.positions64Low = mix(pos64Low, nextPos64Low, positions.x); 1091props.normal = vec3( 1092pos.y - nextPos.y + (pos64Low.y - nextPos64Low.y), 1093nextPos.x - pos.x + (nextPos64Low.x - pos64Low.x), 10940.0); 1095props.elevations = elevations * positions.y; 1096calculatePosition(props); 1097} 1098`,iB=`\ 1099#version 300 es 1100#define SHADER_NAME solid-polygon-layer-fragment-shader 1101precision highp float; 1102in vec4 vColor; 1103out vec4 fragColor; 1104void main(void) { 1105fragColor = vColor; 1106geometry.uv = vec2(0.); 1107DECKGL_FILTER_COLOR(fragColor, geometry); 1108} 1109`,iU=[0,0,0,255],ik={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e};class iG extends to{getShaders(e){return super.getShaders({vs:"top"===e?iF:iD,fs:iB,defines:{RING_WINDING_ORDER_CW:this.props._normalize||"CCW"!==this.props._windingOrder?1:0},modules:[tc,ib,tf]})}get wrapLongitude(){return!1}getBounds(){return this.getAttributeManager()?.getBounds(["vertexPositions"])}initializeState(){let e,{viewport:t}=this.context,{coordinateSystem:i}=this.props,{_full3d:r}=this.props;t.isGeospatial&&i===s.rf.DEFAULT&&(i=s.rf.LNGLAT),i===s.rf.LNGLAT&&(e=r?t.projectPosition.bind(t):t.projectFlat.bind(t)),this.setState({numInstances:0,polygonTesselator:new iI({preproject:e,fp64:this.use64bitPositions(),IndexType:Uint32Array})});let n=this.getAttributeManager();n.remove(["instancePickingColors"]),n.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:!0},vertexPositions:{size:3,type:"float64",stepMode:"dynamic",fp64:this.use64bitPositions(),transition:ik,accessor:"getPolygon",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{nextVertexPositions:{vertexOffset:1}}},instanceVertexValid:{size:1,type:"uint16",stepMode:"instance",update:this.calculateVertexValid,noAlloc:!0},elevations:{size:1,stepMode:"dynamic",transition:ik,accessor:"getElevation"},fillColors:{size:this.props.colorFormat.length,type:"unorm8",stepMode:"dynamic",transition:ik,accessor:"getFillColor",defaultValue:iU},lineColors:{size:this.props.colorFormat.length,type:"unorm8",stepMode:"dynamic",transition:ik,accessor:"getLineColor",defaultValue:iU},pickingColors:{size:4,type:"uint8",stepMode:"dynamic",accessor:(e,{index:t,target:i})=>this.encodePickingColor(e&&e.__source?e.__source.index:t,i)}})}getPickingInfo(e){let t=super.getPickingInfo(e),{index:i}=t,r=this.props.data;return r[0]&&r[0].__source&&(t.object=r.find(e=>e.__source.index===i)),t}disablePickingIndex(e){let t=this.props.data;if(t[0]&&t[0].__source)for(let i=0;i<t.length;i++)t[i].__source.index===e&&this._disablePickingIndex(i);else super.disablePickingIndex(e)}draw({uniforms:e}){let{extruded:t,filled:i,wireframe:r,elevationScale:s}=this.props,{topModel:n,sideModel:o,wireframeModel:a,polygonTesselator:l}=this.state,h={...e,extruded:!!t,elevationScale:s};a&&r&&(a.setInstanceCount(l.instanceCount-1),a.setUniforms(h),a.draw(this.context.renderPass)),o&&i&&(o.setInstanceCount(l.instanceCount-1),o.setUniforms(h),o.draw(this.context.renderPass)),n&&i&&(n.setVertexCount(l.vertexCount),n.setUniforms(h),n.draw(this.context.renderPass))}updateState(e){super.updateState(e),this.updateGeometry(e);let{props:t,oldProps:i,changeFlags:r}=e,s=this.getAttributeManager();(r.extensionsChanged||t.filled!==i.filled||t.extruded!==i.extruded)&&(this.state.models?.forEach(e
1109=>e.destroy()),this.setState(this._getModels()),s.invalidateAll())}updateGeometry({props:e,oldProps:t,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){let{polygonTesselator:t}=this.state,r=e.data.attributes||{};t.updateGeometry({data:e.data,normalize:e._normalize,geometryBuffer:r.getPolygon,buffers:r,getGeometry:e.getPolygon,positionFormat:e.positionFormat,wrapLongitude:e.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged,full3d:e._full3d}),this.setState({numInstances:t.instanceCount,startIndices:t.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(){let e,t,i,{id:r,filled:s,extruded:n}=this.props;if(s){let t=this.getShaders("top");t.defines.NON_INSTANCED_MODEL=1;let i=this.getAttributeManager().getBufferLayouts({isInstanced:!1});e=new es(this.context.device,{...t,id:`${r}-top`,topology:"triangle-list",uniforms:{isWireframe:!1},bufferLayout:i,isIndexed:!0,userData:{excludeAttributes:{instanceVertexValid:!0}}})}if(n){let e=this.getAttributeManager().getBufferLayouts({isInstanced:!0});t=new es(this.context.device,{...this.getShaders("side"),id:`${r}-side`,bufferLayout:e,uniforms:{isWireframe:!1},geometry:new tp({topology:"triangle-strip",attributes:{positions:{size:2,value:new Float32Array([1,0,0,0,1,1,0,1])}}}),isInstanced:!0,userData:{excludeAttributes:{indices:!0}}}),i=new es(this.context.device,{...this.getShaders("side"),id:`${r}-wireframe`,bufferLayout:e,uniforms:{isWireframe:!0},geometry:new tp({topology:"line-strip",attributes:{positions:{size:2,value:new Float32Array([1,0,0,0,0,1,1,1])}}}),isInstanced:!0,userData:{excludeAttributes:{indices:!0}}})}return{models:[t,i,e].filter(Boolean),topModel:e,sideModel:t,wireframeModel:i}}calculateIndices(e){let{polygonTesselator:t}=this.state;e.startIndices=t.indexStarts,e.value=t.get("indices")}calculatePositions(e){let{polygonTesselator:t}=this.state;e.startIndices=t.vertexStarts,e.value=t.get("positions")}calculateVertexValid(e){e.value=this.state.polygonTesselator.get("vertexValid")}}iG.defaultProps={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:"CW",_full3d:!1,elevationScale:{type:"number",min:0,value:1},getPolygon:{type:"accessor",value:e=>e.polygon},getElevation:{type:"accessor",value:1e3},getFillColor:{type:"accessor",value:iU},getLineColor:{type:"accessor",value:iU},material:!0},iG.layerName="SolidPolygonLayer";let iV={circle:{type:tM,props:{filled:"filled",stroked:"stroked",lineWidthMaxPixels:"lineWidthMaxPixels",lineWidthMinPixels:"lineWidthMinPixels",lineWidthScale:"lineWidthScale",lineWidthUnits:"lineWidthUnits",pointRadiusMaxPixels:"radiusMaxPixels",pointRadiusMinPixels:"radiusMinPixels",pointRadiusScale:"radiusScale",pointRadiusUnits:"radiusUnits",pointAntialiasing:"antialiasing",pointBillboard:"billboard",getFillColor:"getFillColor",getLineColor:"getLineColor",getLineWidth:"getLineWidth",getPointRadius:"getRadius"}},icon:{type:tw,props:{iconAtlas:"iconAtlas",iconMapping:"iconMapping",iconSizeMaxPixels:"sizeMaxPixels",iconSizeMinPixels:"sizeMinPixels",iconSizeScale:"sizeScale",iconSizeUnits:"sizeUnits",iconAlphaCutoff:"alphaCutoff",iconBillboard:"billboard",getIcon:"getIcon",getIconAngle:"getAngle",getIconColor:"getColor",getIconPixelOffset:"getPixelOffset",getIconSize:"getSize"}},text:{type:t0,props:{textSizeMaxPixels:"sizeMaxPixels",textSizeMinPi
1109xels:"sizeMinPixels",textSizeScale:"sizeScale",textSizeUnits:"sizeUnits",textBackground:"background",textBackgroundPadding:"backgroundPadding",textFontFamily:"fontFamily",textFontWeight:"fontWeight",textLineHeight:"lineHeight",textMaxWidth:"maxWidth",textOutlineColor:"outlineColor",textOutlineWidth:"outlineWidth",textWordBreak:"wordBreak",textCharacterSet:"characterSet",textBillboard:"billboard",textFontSettings:"fontSettings",getText:"getText",getTextAngle:"getAngle",getTextColor:"getColor",getTextPixelOffset:"getPixelOffset",getTextSize:"getSize",getTextAnchor:"getTextAnchor",getTextAlignmentBaseline:"getAlignmentBaseline",getTextBackgroundColor:"getBackgroundColor",getTextBorderColor:"getBorderColor",getTextBorderWidth:"getBorderWidth"}}},iz={type:i_,props:{lineWidthUnits:"widthUnits",lineWidthScale:"widthScale",lineWidthMinPixels:"widthMinPixels",lineWidthMaxPixels:"widthMaxPixels",lineJointRounded:"jointRounded",lineCapRounded:"capRounded",lineMiterLimit:"miterLimit",lineBillboard:"billboard",getLineColor:"getColor",getLineWidth:"getWidth"}},iW={type:iG,props:{extruded:"extruded",filled:"filled",wireframe:"wireframe",elevationScale:"elevationScale",material:"material",_full3d:"_full3d",getElevation:"getElevation",getFillColor:"getFillColor",getLineColor:"getLineColor"}};function ij({type:e,props:t}){let i={};for(let r in t)i[r]=e.defaultProps[t[r]];return i}function iH(e,t){let{transitions:i,updateTriggers:r}=e.props,s={updateTriggers:{},transitions:i&&{getPosition:i.geometry}};for(let n in t){let o=t[n],a=e.props[n];n.startsWith("get")&&(a=e.getSubLayerAccessor(a),s.updateTriggers[o]=r[n],i&&(s.transitions[o]=i[n])),s[o]=a}return s}function i$(e,t,i={}){let r={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:s=0,endRow:n=e.length}=i;for(let i=s;i<n;i++){let s=e[i],{geometry:n}=s;if(n)if("GeometryCollection"===n.type){c.A.assert(Array.isArray(n.geometries),"GeoJSON does not have geometries array");let{geometries:e}=n;for(let n=0;n<e.length;n++)iX(e[n],r,t,s,i)}else iX(n,r,t,s,i)}return r}function iX(e,t,i,r,s){let{type:n,coordinates:o}=e,{pointFeatures:a,lineFeatures:l,polygonFeatures:h,polygonOutlineFeatures:u}=t;if(!function(e,t){let i=iK[e];for(c.A.assert(i,`Unknown GeoJSON type ${e}`);t&&--i>0;)t=t[0];return t&&Number.isFinite(t[0])}(n,o))return void c.A.warn(`${n} coordinates are malformed`)();switch(n){case"Point":a.push(i({geometry:e},r,s));break;case"MultiPoint":o.forEach(e=>{a.push(i({geometry:{type:"Point",coordinates:e}},r,s))});break;case"LineString":l.push(i({geometry:e},r,s));break;case"MultiLineString":o.forEach(e=>{l.push(i({geometry:{type:"LineString",coordinates:e}},r,s))});break;case"Polygon":h.push(i({geometry:e},r,s)),o.forEach(e=>{u.push(i({geometry:{type:"LineString",coordinates:e}},r,s))});break;case"MultiPolygon":o.forEach(e=>{h.push(i({geometry:{type:"Polygon",coordinates:e}},r,s)),e.forEach(e=>{u.push(i({geometry:{type:"LineString",coordinates:e}},r,s))})})}}let iK={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function iY(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function iZ(e){return e.geometry.coordinates}let iq=["points","linestrings","polygons"],iQ={...ij(iV.circle),...ij(iV.icon),...ij(iV.text),...ij(iz),...ij(iW),stroked:!0,filled:!0,extruded:!1,wireframe:!1,_full3d:!1,iconAtlas:{type:"object",value:null},iconMapping:{type:"object",value:{}},getIcon:{type:"accessor",value:e=>e.properties.icon},getText:{type:"accessor",value:e=>e.properties.text},pointType:"circle",getRadius:{deprecatedFor:"getPointRadius"}};class iJ extends tl{initializeState(){this.state={layerProps:{},features:{},featuresDiff:{}}}updateState({props:e,changeFlags:t}){if(!t.dataChanged)return;let{data:i}=this.props,r=i&&"points"in i&&"polygons"in i&&"lines"in i;this.setState({binary:r}),r?this._updateStateBinary({props:e,changeFlags:t}):this._updateStateJSON({props:e,changeFlags:t})}_updateStateBinary({props:e,changeFlags:t}){let i=function(e,t){let i=iY(),{points:r,lines:s,polygons:n}=e,o=function(e,t){let i={points:null,lines:null,polygons:null};for(let r in i){let s=e[r].globalFeatureIds.value;i[r]=new Uint8ClampedArray(3*s.length);let n=[];for(let e=0;e<s.length;e++)t(s[e],n),i[r][3*e+0]=n[0],i[r][3*e+1]=n[1],i[r][3*e+2]=n[2]}return i}(e,t);return i.points.data={length:r.positions.value.length/r.positions.size,attributes:{...r.attributes,getPosition:r.positions,instancePickingColors:{size:3,value:o.points}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},i.lines.data={length:s.pathIndices.value.length-1,startIndices:s.pathIndices.value,attributes:{...s.attributes,getPath:s.positions,instancePickingColors:{size:3,value:o.lines}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},i.lines._pathType="open",i.polygons.data={length:n.polygonIndices.value.length-1,startIndices:n.polygonIndices.value,attributes:{...n.attributes,getPolygon:n.positions,pickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},i.polygons._normalize=!1,n.triangles&&(i.polygons.data.attributes.indices=n.triangles.value),i.polygonsOutline.data={length:n.primitivePolygonIndices.value.length-1,startIndices:n.primitivePolygonIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},i.polygonsOutline._pathType="open",i}(e.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:e,changeFlags:t}){let i=function(e){if(Array.isArray(e))return e;switch(c.A.assert(e.type,"GeoJSON does not have type"),e.type){case"Feature":return[e];case"FeatureCollection":return c.A.assert(Array.isArray(e.features),"GeoJSON does not have features array"),e.features;default:return[{geometry:e}]}}(e.data),r=this.getSubLayerRow.bind(this),s={},n={};if(Array.isArray(t.dataChanged)){let e=this.state.features;for(let t in e)s[t]=e[t].slice(),n[t]=[];for(let o of t.dataChanged){let t=i$(i,r,o);for(let i in e)n[i].push(function({data:e,getIndex:t,dataRange:i,replace:r}){let{startRow:s=0,endRow:n=1/0}=i,o=e.length,a=o,l=o;for(let i=0;i<o;i++){let r=t(e[i]);if(a>i&&r>=s&&(a=i),r>=n){l=i;break}}let h=a,u=l-a!==r.length?e.slice(l):void 0;for(let t=0;t<r.length;t++)e[h++]=r[t];if(u){for(let t=0;t<u.length;t++)e[h++]=u[t];e.length=h}return{startRow:a,endRow:a+r.length}}
1109({data:s[i],getIndex:e=>e.__source.index,dataRange:o,replace:t[i]}))}}else s=i$(i,r);let o=function(e,t){let i=iY(),{pointFeatures:r,lineFeatures:s,polygonFeatures:n,polygonOutlineFeatures:o}=e;return i.points.data=r,i.points._dataDiff=t.pointFeatures&&(()=>t.pointFeatures),i.points.getPosition=iZ,i.lines.data=s,i.lines._dataDiff=t.lineFeatures&&(()=>t.lineFeatures),i.lines.getPath=iZ,i.polygons.data=n,i.polygons._dataDiff=t.polygonFeatures&&(()=>t.polygonFeatures),i.polygons.getPolygon=iZ,i.polygonsOutline.data=o,i.polygonsOutline._dataDiff=t.polygonOutlineFeatures&&(()=>t.polygonOutlineFeatures),i.polygonsOutline.getPath=iZ,i}(s,n);this.setState({features:s,featuresDiff:n,layerProps:o})}getPickingInfo(e){let t=super.getPickingInfo(e),{index:i,sourceLayer:r}=t;return t.featureType=iq.find(e=>r.id.startsWith(`${this.id}-${e}-`)),i>=0&&r.id.startsWith(`${this.id}-points-text`)&&this.state.binary&&(t.index=this.props.data.points.globalFeatureIds.value[i]),t}_updateAutoHighlight(e){let t=`${this.id}-points-`,i="points"===e.featureType;for(let r of this.getSubLayers())r.id.startsWith(t)===i&&r.updateAutoHighlight(e)}_renderPolygonLayer(){let{extruded:e,wireframe:t}=this.props,{layerProps:i}=this.state,r="polygons-fill",s=this.shouldRenderSubLayer(r,i.polygons?.data)&&this.getSubLayerClass(r,iW.type);if(s){let n=iH(this,iW.props),o=e&&t;return o||delete n.getLineColor,n.updateTriggers.lineColors=o,new s(n,this.getSubLayerProps({id:r,updateTriggers:n.updateTriggers}),i.polygons)}return null}_renderLineLayers(){let{extruded:e,stroked:t}=this.props,{layerProps:i}=this.state,r="polygons-stroke",s="linestrings",n=!e&&t&&this.shouldRenderSubLayer(r,i.polygonsOutline?.data)&&this.getSubLayerClass(r,iz.type),o=this.shouldRenderSubLayer(s,i.lines?.data)&&this.getSubLayerClass(s,iz.type);if(n||o){let e=iH(this,iz.props);return[n&&new n(e,this.getSubLayerProps({id:r,updateTriggers:e.updateTriggers}),i.polygonsOutline),o&&new o(e,this.getSubLayerProps({id:s,updateTriggers:e.updateTriggers}),i.lines)]}return null}_renderPointLayers(){let{pointType:e}=this.props,{layerProps:t,binary:i}=this.state,{highlightedObjectIndex:r}=this.props;!i&&Number.isFinite(r)&&(r=t.points.data.findIndex(e=>e.__source.index===r));let s=new Set(e.split("+")),n=[];for(let e of s){let s=`points-${e}`,o=iV[e],a=o&&this.shouldRenderSubLayer(s,t.points?.data)&&this.getSubLayerClass(s,o.type);if(a){let l=iH(this,o.props),h=t.points;if("text"===e&&i){let{instancePickingColors:e,...t}=h.data.attributes;h={...h,data:{...h.data,attributes:t}}}n.push(new a(l,this.getSubLayerProps({id:s,updateTriggers:l.updateTriggers,highlightedObjectIndex:r}),h))}}return n}renderLayers(){let{extruded:e}=this.props,t=this._renderPolygonLayer();return[!e&&t,this._renderLineLayers(),this._renderPointLayers(),e&&t]}getSubLayerAccessor(e){let{binary:t}=this.state;return t&&"function"==typeof e?(t,i)=>{let{data:r,index:s}=i;return e(function(e,t){if(!e)return null;let i="startIndices"in e?e.startIndices[t]:t,r=e.featureIds.value[i];return -1!==i?function(e,t,i){let r={properties:{...e.properties[t]}};for(let t in e.numericProps)r.properties[t]=e.numericProps[t].value[i];return r}(e,r,i):null}(r,s),i)}:super.getSubLayerAccessor(e)}}iJ.layerName="GeoJsonLayer",iJ.defaultProps=iQ;let i0=iJ},17785:(e,t,i)=>{"use strict";i.d(t,{g:()=>s});var r=i(28970);class s extends r.F{static defaultProps={...r.F.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",width:void 0,height:void 0,depth:1,mipmaps:!0,compressed:!1,usage:0,mipLevels:void 0,samples:void 0,type:void 0,sampler:{},view:void 0};static COPY_SRC=1;static COPY_DST=2;static TEXTURE_BINDING=4;static STORAGE_BINDING=8;static RENDER_ATTACHMENT=16;get[Symbol.toStringTag](){return"Texture"}dimension;format;width;height;depth;updateTimestamp;constructor(e,t,i=s.defaultProps){super(e,t,i),this.dimension=this.props.dimension,this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.updateTimestamp=e.incrementTimestamp()}}},18394:(e,t,i)=>{"use strict";i.d(t,{D:()=>n,l:()=>s});var r=i(7811);function s(e){return!!e&&(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions))}function n(e){let t;return(0,r.v)(e,"null loader"),(0,r.v)(s(e),"invalid loader"),Array.isArray(e)&&(t=e[1],e={...e=e[0],options:{...e.options,...t}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}},23237:(e,t,i)=>{"use strict";function r(e,t){if(!e)throw Error(t||"shadertools: assertion failed.")}i.d(t,{v:()=>r})},23294:(e,t,i)=>{"use strict";i.d(t,{B1:()=>o,Gv:()=>r,H1:()=>c,L8:()=>n,Sv:()=>h,Td:()=>l,aC:()=>s,qf:()=>
1109u,xZ:()=>a});let r=e=>null!==e&&"object"==typeof e,s=e=>r(e)&&e.constructor===({}).constructor,n=e=>"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer,o=e=>r(e)&&"number"==typeof e.byteLength&&"function"==typeof e.slice,a=e=>!!e&&"function"==typeof e[Symbol.iterator],l=e=>!!e&&"function"==typeof e[Symbol.asyncIterator],h=e=>"undefined"!=typeof Response&&e instanceof Response||r(e)&&"function"==typeof e.arrayBuffer&&"function"==typeof e.text&&"function"==typeof e.json,u=e=>"undefined"!=typeof Blob&&e instanceof Blob,c=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||r(e)&&"function"==typeof e.tee&&"function"==typeof e.cancel&&"function"==typeof e.getReader)(e)||(e=>r(e)&&"function"==typeof e.read&&"function"==typeof e.pipe&&"boolean"==typeof e.readable)(e)},23459:(e,t,i)=>{"use strict";i.d(t,{M:()=>o});var r=i(98454),s=i(28760);function n(e,t){if(!e)throw Error(`math.gl assertion ${t}`)}class o extends r.a{get x(){return this[0]}set x(e){this[0]=(0,s.ws)(e)}get y(){return this[1]}set y(e){this[1]=(0,s.ws)(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let i=0;i<this.ELEMENTS;++i){let r=this[i]-e[i];t+=r*r}return(0,s.ws)(t)}dot(e){let t=0;for(let i=0;i<this.ELEMENTS;++i)t+=this[i]*e[i];return(0,s.ws)(t)}normalize(){let e=this.magnitude();if(0!==e)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]*=t[e];return this.check()}divide(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]/=t[e];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return n(e>=0&&e<this.ELEMENTS,"index is out of range"),(0,s.ws)(this[e])}setComponent(e,t){return n(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}}},24265:(e,t,i)=>{"use strict";i.d(t,{A:()=>p});let r=`\ 1110#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND 1111const float TWO_PI = 6.2831854820251465; 1112const float PI_2 = 1.5707963705062866; 1113const float PI_16 = 0.1963495463132858; 1114const float SIN_TABLE_0 = 0.19509032368659973; 1115const float SIN_TABLE_1 = 0.3826834261417389; 1116const float SIN_TABLE_2 = 0.5555702447891235; 1117const float SIN_TABLE_3 = 0.7071067690849304; 1118const float COS_TABLE_0 = 0.9807852506637573; 1119const float COS_TABLE_1 = 0.9238795042037964; 1120const float COS_TABLE_2 = 0.8314695954322815; 1121const float COS_TABLE_3 = 0.7071067690849304; 1122const float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; 1123const float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; 1124const float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; 1125const float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; 1126float sin_taylor_fp32(float a) { 1127float r, s, t, x; 1128if (a == 0.0) { 1129return 0.0; 1130} 1131x = -a * a; 1132s = a; 1133r = a; 1134r = r * x; 1135t = r * INVERSE_FACTORIAL_3; 1136s = s + t; 1137r = r * x; 1138t = r * INVERSE_FACTORIAL_5; 1139s = s + t; 1140r = r * x; 1141t = r * INVERSE_FACTORIAL_7; 1142s = s + t; 1143r = r * x; 1144t = r * INVERSE_FACTORIAL_9; 1145s = s + t; 1146return s; 1147} 1148void sincos_taylor_fp32(float a, out float sin_t, out float cos_t) { 1149if (a == 0.0) { 1150sin_t = 0.0; 1151cos_t = 1.0; 1152} 1153sin_t = sin_taylor_fp32(a); 1154cos_t = sqrt(1.0 - sin_t * sin_t); 1155} 1156float tan_taylor_fp32(float a) { 1157float sin_a; 1158float cos_a; 1159if (a == 0.0) { 1160return 0.0; 1161} 1162float z = floor(a / TWO_PI); 1163float r = a - TWO_PI * z; 1164float t; 1165float q = floor(r / PI_2 + 0.5); 1166int j = int(q); 1167if (j < -2 || j > 2) { 1168return 1.0 / 0.0; 1169} 1170t = r - PI_2 * q; 1171q = floor(t / PI_16 + 0.5); 1172int k = int(q); 1173int abs_k = int(abs(float(k))); 1174if (abs_k > 4) { 1175return 1.0 / 0.0; 1176} else { 1177t = t - PI_16 * q; 1178} 1179float u = 0.0; 1180float v = 0.0; 1181float sin_t, cos_t; 1182float s, c; 1183sincos_taylor_fp32(t, sin_t, cos_t); 1184if (k == 0) { 1185s = sin_t; 1186c = cos_t; 1187} else { 1188if (abs(float(abs_k) - 1.0) < 0.5) { 1189u = COS_TABLE_0; 1190v = SIN_TABLE_0; 1191} else if (abs(float(abs_k) - 2.0) < 0.5) { 1192u = COS_TABLE_1; 1193v = SIN_TABLE_1; 1194} else if (abs(float(abs_k) - 3.0) < 0.5) { 1195u = COS_TABLE_2; 1196v = SIN_TABLE_2; 1197} else if (abs(float(abs_k) - 4.0) < 0.5) { 1198u = COS_TABLE_3; 1199v = SIN_TABLE_3; 1200} 1201if (k > 0) { 1202s = u * sin_t + v * cos_t; 1203c = u * cos_t - v * sin_t; 1204} else { 1205s = u * sin_t - v * cos_t; 1206c = u * cos_t + v * sin_t; 1207} 1208} 1209if (j == 0) { 1210sin_a = s; 1211cos_a = c; 1212} else if (j == 1) { 1213sin_a = c; 1214cos_a = -s; 1215} else if (j == -1) { 1216sin_a = -c; 1217cos_a = s; 1218} else { 1219sin_a = -s; 1220cos_a = -c; 1221} 1222return sin_a / cos_a; 1223} 1224#endif 1225float tan_fp32(float a) { 1226#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND 1227return tan_taylor_fp32(a); 1228#else 1229return tan(a); 1230#endif 1231} 1232`,s="#define SMOOTH_EDGE_RADIUS 0.5",n=` 1233${s} 1234 1235struct VertexGeometry { 1236 vec4 position; 1237 vec3 worldPosition; 1238 vec3 worldPositionAlt; 1239 vec3 normal; 1240 vec2 uv; 1241 vec3 pickingColor; 1242} geometry = VertexGeometry( 1243 vec4(0.0, 0.0, 1.0, 0.0), 1244 vec3(0.0), 1245 vec3(0.0), 1246 vec3(0.0), 1247 vec2(0.0), 1248 vec3(0.0) 1249); 1250`,o=` 1251${s} 1252 1253struct FragmentGeometry { 1254 vec2 uv; 1255} geometry; 1256 1257float smoothedge(float edge, float x) { 1258 return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x); 1259} 1260`;var a=i(61773);let l=Object.keys(a.rf).map(e=>`const int COORDINATE_SYSTEM_${e} = ${a.rf[e]};`).join(""),h=Object.keys(a.Kx).map(e=>`const int PROJECTION_MODE_${e} = ${a.Kx[e]};`).join(""),u=Object.keys(a.p5).map(e=>`const int UNIT_${e.toUpperCase()} = ${a.p5[e]};`).join(""),c=`\ 1261${l} 1262${h} 1263${u
vendor: 6,354 bytes, lines 1263-1450
1263} 1264uniform int project_uCoordinateSystem; 1265uniform int project_uProjectionMode; 1266uniform float project_uScale; 1267uniform bool project_uWrapLongitude; 1268uniform vec3 project_uCommonUnitsPerMeter; 1269uniform vec3 project_uCommonUnitsPerWorldUnit; 1270uniform vec3 project_uCommonUnitsPerWorldUnit2; 1271uniform vec4 project_uCenter; 1272uniform mat4 project_uModelMatrix; 1273uniform mat4 project_uViewProjectionMatrix; 1274uniform vec2 project_uViewportSize; 1275uniform float project_uDevicePixelRatio; 1276uniform float project_uFocalDistance; 1277uniform vec3 project_uCameraPosition; 1278uniform vec3 project_uCoordinateOrigin; 1279uniform vec3 project_uCommonOrigin; 1280uniform bool project_uPseudoMeters; 1281const float TILE_SIZE = 512.0; 1282const float PI = 3.1415926536; 1283const float WORLD_SCALE = TILE_SIZE / (PI * 2.0); 1284const vec3 ZERO_64_LOW = vec3(0.0); 1285const float EARTH_RADIUS = 6370972.0; 1286const float GLOBE_RADIUS = 256.0; 1287float project_size_at_latitude(float lat) { 1288float y = clamp(lat, -89.9, 89.9); 1289return 1.0 / cos(radians(y)); 1290} 1291float project_size() { 1292if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR && 1293project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT && 1294project_uPseudoMeters == false) { 1295if (geometry.position.w == 0.0) { 1296return project_size_at_latitude(geometry.worldPosition.y); 1297} 1298float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0; 1299float y2 = y * y; 1300float y4 = y2 * y2; 1301float y6 = y4 * y2; 1302return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6; 1303} 1304return 1.0; 1305} 1306float project_size_at_latitude(float meters, float lat) { 1307return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat); 1308} 1309float project_size(float meters) { 1310return meters * project_uCommonUnitsPerMeter.z * project_size(); 1311} 1312vec2 project_size(vec2 meters) { 1313return meters * project_uCommonUnitsPerMeter.xy * project_size(); 1314} 1315vec3 project_size(vec3 meters) { 1316return meters * project_uCommonUnitsPerMeter * project_size(); 1317} 1318vec4 project_size(vec4 meters) { 1319return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w); 1320} 1321mat3 project_get_orientation_matrix(vec3 up) { 1322vec3 uz = normalize(up); 1323vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0)); 1324vec3 uy = cross(uz, ux); 1325return mat3(ux, uy, uz); 1326} 1327bool project_needs_rotation(vec3 commonPosition, out mat3 transform) { 1328if (project_uProjectionMode == PROJECTION_MODE_GLOBE) { 1329transform = project_get_orientation_matrix(commonPosition); 1330return true; 1331} 1332return false; 1333} 1334vec3 project_normal(vec3 vector) { 1335vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0); 1336vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter); 1337mat3 rotation; 1338if (project_needs_rotation(geometry.position.xyz, rotation)) { 1339n = rotation * n; 1340} 1341return n; 1342} 1343vec4 project_offset_(vec4 offset) { 1344float dy = offset.y; 1345vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy; 1346return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w); 1347} 1348vec2 project_mercator_(vec2 lnglat) { 1349float x = lnglat.x; 1350if (project_uWrapLongitude) { 1351x = mod(x + 180., 360.0) - 180.; 1352} 1353float y = clamp(lnglat.y, -89.9, 89.9); 1354return vec2( 1355radians(x) + PI, 1356PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5)) 1357) * WORLD_SCALE; 1358} 1359vec3 project_globe_(vec3 lnglatz) { 1360float lambda = radians(lnglatz.x); 1361float phi = radians(lnglatz.y); 1362float cosPhi = cos(phi); 1363float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS; 1364return vec3( 1365sin(lambda) * cosPhi, 1366-cos(lambda) * cosPhi, 1367sin(phi) 1368) * D; 1369} 1370vec4 project_position(vec4 position, vec3 position64Low) { 1371vec4 position_world = project_uModelMatrix * position; 1372if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) { 1373if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { 1374return vec4( 1375project_mercator_(position_world.xy), 1376project_size_at_latitude(position_world.z, position_world.y), 1377position_world.w 1378); 1379} 1380if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) { 1381position_world.xyz += project_uCoordinateOrigin; 1382} 1383} 1384if (project_uProjectionMode == PROJECTION_MODE_GLOBE) { 1385if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { 1386return vec4( 1387project_globe_(position_world.xyz), 1388position_world.w 1389); 1390} 1391} 1392if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) { 1393if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { 1394if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) { 1395return vec4( 1396project_mercator_(position_world.xy) - project_uCommonOrigin.xy, 1397project_size(position_world.z), 1398position_world.w 1399); 1400} 1401} 1402} 1403if (project_uProjectionMode == PROJECTION_MODE_IDENTITY || 1404(project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET && 1405(project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT || 1406project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) { 1407position_world.xyz -= project_uCoordinateOrigin; 1408} 1409return project_offset_(position_world) + project_offset_(project_uModelMatrix * vec4(position64Low, 0.0)); 1410} 1411vec4 project_position(vec4 position) { 1412return project_position(position, ZERO_64_LOW); 1413} 1414vec3 project_position(vec3 position, vec3 position64Low) { 1415vec4 projected_position = project_position(vec4(position, 1.0), position64Low); 1416return projected_position.xyz; 1417} 1418vec3 project_position(vec3 position) { 1419vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW); 1420return projected_position.xyz; 1421} 1422vec2 project_position(vec2 position) { 1423vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW); 1424return projected_position.xy; 1425} 1426vec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) { 1427return viewProjectionMatrix * position + center; 1428} 1429vec4 project_common_position_to_clipspace(vec4 position) { 1430return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter); 1431} 1432vec2 project_pixel_size_to_clipspace(vec2 pixels) { 1433vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0; 1434return offset * project_uFocalDistance; 1435} 1436float project_size_to_pixel(float meters) { 1437return project_size(meters) * project_uScale; 1438} 1439float project_size_to_pixel(float size, int unit) { 1440if (unit == UNIT_METERS) return project_size_to_pixel(size); 1441if (unit == UNIT_COMMON) return size * project_uScale; 1442return size; 1443} 1444float project_pixel_size(float pixels) { 1445return pixels / project_uScale; 1446} 1447vec2 project_pixel_size(vec2 pixels) { 1448return pixels / project_uScale; 1449} 1450`;
1450var d=i(34157);let f={},p={name:"project",dependencies:[{name:"fp32",vs:r},{name:"geometry",vs:n,fs:o}],vs:c,getUniforms:function(e=f){return"viewport"in e?(0,d.a)(e):{}}}},24694:(e,t,i)=>{"use strict";i.d(t,{dT:()=>b,Os:()=>R,Fe:()=>C,wZ:()=>S,gW:()=>L,nI:()=>y,fO:()=>E,om:()=>T,rY:()=>A,Gw:()=>_,CK:()=>I,xJ:()=>P,mY:()=>v,iV:()=>m,VJ:()=>w});var r=i(61745);function s(e,t){let i=r.Z0([],t,e);return r.hs(i,i,1/i[3]),i}function n(e,t){let i=e%t;return i<0?t+i:i}function o(e,t,i){return e<t?t:e>i?i:e}let a=Math.log2||function(e){return Math.log(e)*Math.LOG2E};var l=i(28089),h=i(6992),u=i(2595);function c(e,t){if(!e)throw Error(t||"@math.gl/web-mercator: assertion failed.")}let d=Math.PI,f=d/4,p=d/180,g=180/d;function _(e){let[t,i]=e;c(Number.isFinite(t)),c(Number.isFinite(i)&&i>=-90&&i<=90,"invalid latitude");let r=512*(d+Math.log(Math.tan(f+i*p*.5)))/(2*d);return[512*(t*p+d)/(2*d),r]}function m(e){let[t,i]=e,r=2*(Math.atan(Math.exp(i/512*(2*d)-d))-f);return[(t/512*(2*d)-d)*g,r*g]}function E(e){let{latitude:t}=e;return c(Number.isFinite(t)),a(4003e4*Math.cos(t*p))-9}function v(e){return 512/4003e4/Math.cos(e*p)}function y(e){let{latitude:t,longitude:i,highPrecision:r=!1}=e;c(Number.isFinite(t)&&Number.isFinite(i));let s=Math.cos(t*p),n=512/360/s,o=512/4003e4/s,a={unitsPerMeter:[o,o,o],metersPerUnit:[1/o,1/o,1/o],unitsPerDegree:[512/360,n,o],degreesPerUnit:[1/(512/360),1/n,1/o]};if(r){let e=p*Math.tan(t*p)/s,i=512/4003e4*e,r=i/n*o;a.unitsPerDegree2=[0,512/360*e/2,i],a.unitsPerMeter2=[r,0,r]}return a}function b(e,t){let[i,r,s]=e,[n,o,a]=t,{unitsPerMeter:l,unitsPerMeter2:h}=y({longitude:i,latitude:r,highPrecision:!0}),u=_(e);u[0]+=n*(l[0]+h[0]*o),u[1]+=o*(l[1]+h[1]*o);let c=m(u);return Number.isFinite(s)||Number.isFinite(a)?[c[0],c[1],(s||0)+(a||0)]:c}function A(e){let{height:t,pitch:i,bearing:r,altitude:s,scale:n,center:o}=e,a=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];l.Tl(a,a,[0,0,-s]),l.eL(a,a,-i*p),l.Qr(a,a,r*p);let u=n/t;return l.hs(a,a,[u,u,u]),o&&l.Tl(a,a,h.ze([],o)),a}function T(e){let{width:t,height:i,altitude:r,pitch:s=0,offset:n,center:a,scale:l,nearZMultiplier:h=1,farZMultiplier:u=1}=e,{fovy:c=R(1.5)}=e;void 0!==r&&(c=R(r));let d=c*p,f=s*p,g=S(c),_=g;a&&(_+=a[2]*l/Math.cos(f)/i);let m=d*(.5+(n?n[1]:0)/i),E=Math.sin(m)*_/Math.sin(o(Math.PI/2-f-m,.01,Math.PI-.01));return{fov:d,aspect:t/i,focalDistance:g,near:h,far:Math.min((Math.sin(f)*E+_)*u,10*_)}}function R(e){return 2*Math.atan(.5/e)*g}function S(e){return .5/Math.tan(.5*e*p)}function w(e,t){let[i,r,n=0]=e;return c(Number.isFinite(i)&&Number.isFinite(r)&&Number.isFinite(n)),s(t,[i,r,n,1])}function P(e,t,i=0){let[r,n,o]=e;if(c(Number.isFinite(r)&&Number.isFinite(n),"invalid pixel coordinate"),Number.isFinite(o))return s(t,[r,n,o,1]);let a=s(t,[r,n,0,1]),l=s(t,[r,n,1,1]),h=a[2],d=l[2];return u.Cc([],a,l,h===d?0:((i||0)-h)/(d-h))}function C(e){let{width:t,height:i,bounds:r,minExtent:s=0,maxZoom:n=24,offset:l=[0,0]}=e,[[h,u],[d,f]]=r,p=function(e=0){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:(c(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}(e.padding),g=_([h,o(f,-85.051129,85.051129)]),E=_([d,o(u,-85.051129,85.051129)]),v=[Math.max(Math.abs(E[0]-g[0]),s),Math.max(Math.abs(E[1]-g[1]),s)],y=[t-p.left-p.right-2*Math.abs(l[0]),i-p.top-p.bottom-2*Math.abs(l[1])];c(y[0]>0&&y[1]>0);let b=y[0]/v[0],A=y[1]/v[1],T=(p.right-p.left)/2/b,R=(p.top-p.bottom)/2/A,S=m([(E[0]+g[0])/2+T,(E[1]+g[1])/2+R]),w=Math.min(n,a(Math.abs(Math.min(b,A))));return c(Number.isFinite(w)),{longitude:S[0],latitude:S[1],zoom:w}}let x=Math.PI/180;function L(e,t=0){let i,r,{width:s,height:n,unproject:o}=e,a={targetZ:t},l=o([0,n],a),h=o([s,n],a);return(e.fovy?.5*e.fovy*x:Math.atan(.5/e.altitude))>(90-e.pitch)*x-.01?(i=M(e,0,t),r=M(e,s,t)):(i=o([0,0],a),r=o([s,0],a)),[l,h,r,i]}function M(e,t,i){let{pixelUnprojectionMatrix:r}=e,n=s(r,[t,0,1,1]),o=s(r,[t,e.height,1,1]),a=(i*e.distanceScales.unitsPerMeter[2]-n[2])/(o[2]-n[2]),l=m(u.Cc([],n,o,a));return l.push(i),l}function I(e){let{width:t,height:i,pitch:r=0}=e,{longitude:s,latitude:o,zoom:l,bearing:h=0}=e;(s<-180||s>180)&&(s=n(s+180,360)-180),(h<-180||h>180)&&(h=n(h+180,360)-180);let u=a(i/512);if(l<=u)l=u,o=0;else{let e=i/2/Math.pow(2,l),t=m([0,e])[1];if(o<t)o=t;else{let t=m([0,512-e])[1];o>t&&(o=t)}}return{width:t,height:i,longitude:s,latitude:o,zoom:l,pitch:r,bearing:h}}},25198:(e,t,i)=>{"use strict";function r(e){let t,i={};return r=>{for(let s in r)if(!function(e,t){if(e===t)return!0;
1450if(Array.isArray(e)){let i=e.length;if(!t||t.length!==i)return!1;for(let r=0;r<i;r++)if(e[r]!==t[r])return!1;return!0}return!1}(r[s],i[s])){t=e(r),i=r;break}return t}}i.d(t,{A:()=>r})},25352:(e,t,i)=>{"use strict";i.d(t,{hW:()=>_});var r,s=i(68038);let n="4.1.1";function o(e,t){if(!e)throw Error(t||"Assertion failed")}function a(e){let t;if(!e)return 0;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return o(Number.isFinite(t)&&t>=0),t}let l=()=>{};class h{constructor({level:e=0}={}){this.userData={},this._onceCache=new Set,this._level=e}set level(e){this.setLevel(e)}get level(){return this.getLevel()}setLevel(e){return this._level=e,this}getLevel(){return this._level}warn(e,...t){return this._log("warn",0,e,t,{once:!0})}error(e,...t){return this._log("error",0,e,t)}log(e,t,...i){return this._log("log",e,t,i)}info(e,t,...i){return this._log("info",e,t,i)}once(e,t,...i){return this._log("once",e,t,i,{once:!0})}_log(e,t,i,r,s={}){let n=function(e){let{logLevel:t,message:i}=e;e.logLevel=a(t);let r=e.args?Array.from(e.args):[];for(;r.length&&r.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&r.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());let s=typeof e.message;return o("string"===s||"object"===s),Object.assign(e,{args:r},e.opts)}({logLevel:t,message:i,args:this._buildArgs(t,i,r),opts:s});return this._createLogFunction(e,n,s)}_buildArgs(e,t,i){return[e,t,...i]}_createLogFunction(e,t,i){if(!this._shouldLog(t.logLevel))return l;let r=this._getOnceTag(i.tag??t.tag??t.message);if((i.once||t.once)&&void 0!==r){if(this._onceCache.has(r))return l;this._onceCache.add(r)}return this._emit(e,t)}_shouldLog(e){return this.getLevel()>=a(e)}_getOnceTag(e){if(void 0!==e)try{return"string"==typeof e?e:String(e)}catch{return}}}class u{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{let t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){let e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}}_loadConfiguration(){let e={};if(this.storage){let t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function c(e){return"string"!=typeof e?e:r[e=e.toUpperCase()]||r.WHITE}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(r||(r={}));var d=i(9445);function f(){let e;if((0,s.B)()&&d.x.performance)e=d.x?.performance?.now?.();else if("hrtime"in d.eh){let t=d.eh?.hrtime?.();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}let p={debug:(0,s.B)()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},g={enabled:!0,level:0};class _ extends h{constructor({id:e}={id:""}){super({level:0}),this.VERSION=n,this._startTs=f(),this._deltaTs=f(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new u(`__probe-${this.id}__`,{[this.id]:g}),this.timeStamp(`${this.id} started`),function(e,t=["constructor"]){for(let i of Object.getOwnPropertyNames(Object.getPrototypeOf(e))){let r=e[i];"function"!=typeof r||t.find(e=>i===e)||(e[i]=r.bind(e))}}(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((f()-this._startTs).toPrecision(10))}getDelta(){return Number((f()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._updateConfiguration({enabled:e}),this}setLevel(e){return this._updateConfiguration({level:e}),this}get(e){return this._getConfiguration()[e]}set(e,t){this._updateConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){if(!e)throw Error(t||"Assertion failed")}warn(e,...t){return this._log("warn",0,e,t,{method:p.warn,once:!0})}error(e,...t){return this._log("error",0,e,t,{method:p.error})}deprecated(e,t){return this.warn(`\`${e}\` is deprecated and will be removed \ 1451in a later version. Use \`${t}\` instead`)}removed(e,t){return this.error(`\`${e}\` has been removed. Use \`${t}\` instead`)}probe(e,t,...i){return this._log("log",e,t,i,{method:p.log,time:!0,once:!0})}log(e,t,...i){return this._log("log",e,t,i,{method:p.debug})}info(e,t,...i){return this._log("info",e,t,i,{method:console.info})}once(e,t,...i){return this._log("once",e,t,i,{method:p.debug||p.info,once:!0})}table(e,t,i){return t?this._log("table",e,t,i&&[i]||[],{method:console.table||l,tag:function(e){for(let t in e)for(let i in e[t])return i||"untitled";return"empty"}(t)}):l}time(e,t){return this._log("time",e,t,[],{method:console.time?console.time:console.info})}timeEnd(e,t){return this._log("time",e,t,[],{method:console.timeEnd?console.timeEnd:console.info})}timeStamp(e,t){return this._log("time",e,t,[],{method:console.timeStamp||l})}group(e,t,i={collapsed:!1}){let r=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",e,t,[],{method:r})}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._log("groupEnd",e,"",[],{method:console.groupEnd||l})}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&super._shouldLog(e)}_emit(e,t){let i=t.method;o(i),t.total=this.getTotal(),t.delta=this.getDelta(),this._deltaTs=f();let r=function(e,t,i){if("string"==typeof t){var r;let n=i.time?function(e,t=8){let i=Math.max(t-e.length,0);return`${" ".repeat(i)}${e}`}((r=i.total)<10?`${r.toFixed(2)}ms`:r<100?`${r.toFixed(1)}ms`:r<1e3?`${r.toFixed(0)}ms`:`${(r/1e3).toFixed(2)}s`):"";t=function(e,t,i){if(!s.B&&"string"==typeof e){if(t){let i=c(t);e=`\u001b[${i}m${e}\u001b[39m`}if(i){let t=c(i);e=`\u001b[${t+10}m${e}\u001b[49m`}}return e}(t=i.time?`${e}: ${n} ${t}`:`${e}: ${t}`,i.color,i.background)}return t}(this.id,t.message,t);return i.bind(console,r,...t.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(g),this._storage.config[this.id]}_updateConfiguration(e){let t=this._storage.config[this.id]||{...g};this._storage.setConfiguration({[this.id]:{...t,...e}})}}_.VERSION=n},27126:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});
vendor: 4,556 bytes, line 1451
1451class r{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(null===this._handle){let{_timeline:e,settings:t}=this;this._handle=e.addChannel({delay:e.getTime(),duration:t.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}}},28089:(e,t,i)=>{"use strict";i.d(t,{$h:()=>g,B8:()=>n,I0:()=>p,Qr:()=>f,Tl:()=>l,Z8:()=>d,a4:()=>o,e$:()=>u,eL:()=>c,fN:()=>_,hs:()=>h,lw:()=>a,mg:()=>s,t5:()=>E,v3:()=>m});var r=i(43210);function s(e,t){if(e===t){let i=t[1],r=t[2],s=t[3],n=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=n,e[11]=t[14],e[12]=s,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function n(e,t){let i=t[0],r=t[1],s=t[2],n=t[3],o=t[4],a=t[5],l=t[6],h=t[7],u=t[8],c=t[9],d=t[10],f=t[11],p=t[12],g=t[13],_=t[14],m=t[15],E=i*a-r*o,v=i*l-s*o,y=i*h-n*o,b=r*l-s*a,A=r*h-n*a,T=s*h-n*l,R=u*g-c*p,S=u*_-d*p,w=u*m-f*p,P=c*_-d*g,C=c*m-f*g,x=d*m-f*_,L=E*x-v*C+y*P+b*w-A*S+T*R;return L?(L=1/L,e[0]=(a*x-l*C+h*P)*L,e[1]=(s*C-r*x-n*P)*L,e[2]=(g*T-_*A+m*b)*L,e[3]=(d*A-c*T-f*b)*L,e[4]=(l*w-o*x-h*S)*L,e[5]=(i*x-s*w+n*S)*L,e[6]=(_*y-p*T-m*v)*L,e[7]=(u*T-d*y+f*v)*L,e[8]=(o*C-a*w+h*R)*L,e[9]=(r*w-i*C-n*R)*L,e[10]=(p*A-g*y+m*E)*L,e[11]=(c*y-u*A-f*E)*L,e[12]=(a*S-o*P-l*R)*L,e[13]=(i*P-r*S+s*R)*L,e[14]=(g*v-p*b-_*E)*L,e[15]=(u*b-c*v+d*E)*L,e):null}function o(e){let t=e[0],i=e[1],r=e[2],s=e[3],n=e[4],o=e[5],a=e[6],l=e[7],h=e[8],u=e[9],c=e[10],d=e[11],f=e[12],p=e[13],g=e[14],_=e[15],m=t*o-i*n,E=t*a-r*n,v=i*a-r*o,y=h*p-u*f,b=h*g-c*f,A=u*g-c*p;return l*(t*A-i*b+r*y)-s*(n*A-o*b+a*y)+_*(h*v-u*E+c*m)-d*(f*v-p*E+g*m)}function a(e,t,i){let r=t[0],s=t[1],n=t[2],o=t[3],a=t[4],l=t[5],h=t[6],u=t[7],c=t[8],d=t[9],f=t[10],p=t[11],g=t[12],_=t[13],m=t[14],E=t[15],v=i[0],y=i[1],b=i[2],A=i[3];return e[0]=v*r+y*a+b*c+A*g,e[1]=v*s+y*l+b*d+A*_,e[2]=v*n+y*h+b*f+A*m,e[3]=v*o+y*u+b*p+A*E,v=i[4],y=i[5],b=i[6],A=i[7],e[4]=v*r+y*a+b*c+A*g,e[5]=v*s+y*l+b*d+A*_,e[6]=v*n+y*h+b*f+A*m,e[7]=v*o+y*u+b*p+A*E,v=i[8],y=i[9],b=i[10],A=i[11],e[8]=v*r+y*a+b*c+A*g,e[9]=v*s+y*l+b*d+A*_,e[10]=v*n+y*h+b*f+A*m,e[11]=v*o+y*u+b*p+A*E,v=i[12],y=i[13],b=i[14],A=i[15],e[12]=v*r+y*a+b*c+A*g,e[13]=v*s+y*l+b*d+A*_,e[14]=v*n+y*h+b*f+A*m,e[15]=v*o+y*u+b*p+A*E,e}function l(e,t,i){let r,s,n,o,a,l,h,u,c,d,f,p,g=i[0],_=i[1],m=i[2];return t===e?(e[12]=t[0]*g+t[4]*_+t[8]*m+t[12],e[13]=t[1]*g+t[5]*_+t[9]*m+t[13],e[14]=t[2]*g+t[6]*_+t[10]*m+t[14],e[15]=t[3]*g+t[7]*_+t[11]*m+t[15]):(r=t[0],s=t[1],n=t[2],o=t[3],a=t[4],l=t[5],h=t[6],u=t[7],c=t[8],d=t[9],f=t[10],p=t[11],e[0]=r,e[1]=s,e[2]=n,e[3]=o,e[4]=a,e[5]=l,e[6]=h,e[7]=u,e[8]=c,e[9]=d,e[10]=f,e[11]=p,e[12]=r*g+a*_+c*m+t[12],e[13]=s*g+l*_+d*m+t[13],e[14]=n*g+h*_+f*m+t[14],e[15]=o*g+u*_+p*m+t[15]),e}function h(e,t,i){let r=i[0],s=i[1],n=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function u(e,t,i,s){let n,o,a,l,h,u,c,d,f,p,g,_,m,E,v,y,b,A,T,R,S,w,P,C,x=s[0],L=s[1],M=s[2],I=Math.sqrt(x*x+L*L+M*M);return I<r.p8?null:(x*=I=1/I,L*=I,M*=I,o=Math.sin(i),a=1-(n=Math.cos(i)),l=t[0],h=t[1],u=t[2],c=t[3],d=t[4],f=t[5],p=t[6],g=t[7],_=t[8],m=t[9],E=t[10],v=t[11],y=x*x*a+n,b=L*x*a+M*o,A=M*x*a-L*o,T=x*L*a-M*o,R=L*L*a+n,S=M*L*a+x*o,w=x*M*a+L*o,P=L*M*a-x*o,C=M*M*a+n,e[0]=l*y+d*b+_*A,e[1]=h*y+f*b+m*A,e[2]=u*y+p*b+E*A,e[3]=c*y+g*b+v*A,e[4]=l*T+d*R+_*S,e[5]=h*T+f*R+m*S,e[6]=u*T+p*R+E*S,e[7]=c*T+g*R+v*S,e[8]=l*w+d*P+_*C,e[9]=h*w+f*P+m*C,e[10]=u*w+p*P+E*C,e[11]=c*w+g*P+v*C,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function c(e,t,i){let r=Math.sin(i),s=Math.cos(i),n=t[4],o=t[5],a=t[6],l=t[7],h=t[8],u=t[9],c=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=n*s+h*r,e[5]=o
1451*s+u*r,e[6]=a*s+c*r,e[7]=l*s+d*r,e[8]=h*s-n*r,e[9]=u*s-o*r,e[10]=c*s-a*r,e[11]=d*s-l*r,e}function d(e,t,i){let r=Math.sin(i),s=Math.cos(i),n=t[0],o=t[1],a=t[2],l=t[3],h=t[8],u=t[9],c=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*s-h*r,e[1]=o*s-u*r,e[2]=a*s-c*r,e[3]=l*s-d*r,e[8]=n*r+h*s,e[9]=o*r+u*s,e[10]=a*r+c*s,e[11]=l*r+d*s,e}function f(e,t,i){let r=Math.sin(i),s=Math.cos(i),n=t[0],o=t[1],a=t[2],l=t[3],h=t[4],u=t[5],c=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*s+h*r,e[1]=o*s+u*r,e[2]=a*s+c*r,e[3]=l*s+d*r,e[4]=h*s-n*r,e[5]=u*s-o*r,e[6]=c*s-a*r,e[7]=d*s-l*r,e}function p(e,t){let i=t[0],r=t[1],s=t[2],n=t[3],o=i+i,a=r+r,l=s+s,h=i*o,u=r*o,c=r*a,d=s*o,f=s*a,p=s*l,g=n*o,_=n*a,m=n*l;return e[0]=1-c-p,e[1]=u+m,e[2]=d-_,e[3]=0,e[4]=u-m,e[5]=1-h-p,e[6]=f+g,e[7]=0,e[8]=d+_,e[9]=f-g,e[10]=1-h-c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function g(e,t,i,r,s,n,o){let a=1/(i-t),l=1/(s-r),h=1/(n-o);return e[0]=2*n*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*n*l,e[6]=0,e[7]=0,e[8]=(i+t)*a,e[9]=(s+r)*l,e[10]=(o+n)*h,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*n*2*h,e[15]=0,e}let _=function(e,t,i,r,s){let n=1/Math.tan(t/2);if(e[0]=n/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=s&&s!==1/0){let t=1/(r-s);e[10]=(s+r)*t,e[14]=2*s*r*t}else e[10]=-1,e[14]=-2*r;return e},m=function(e,t,i,r,s,n,o){let a=1/(t-i),l=1/(r-s),h=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+i)*a,e[13]=(s+r)*l,e[14]=(o+n)*h,e[15]=1,e};function E(e,t,i,s){let n,o,a,l,h,u,c,d,f,p,g=t[0],_=t[1],m=t[2],E=s[0],v=s[1],y=s[2],b=i[0],A=i[1],T=i[2];if(Math.abs(g-b)<r.p8&&Math.abs(_-A)<r.p8&&Math.abs(m-T)<r.p8)return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e;return n=1/Math.sqrt((d=g-b)*d+(f=_-A)*f+(p=m-T)*p),d*=n,f*=n,p*=n,(n=Math.sqrt((o=v*p-y*f)*o+(a=y*d-E*p)*a+(l=E*f-v*d)*l))?(o*=n=1/n,a*=n,l*=n):(o=0,a=0,l=0),(n=Math.sqrt((h=f*l-p*a)*h+(u=p*o-d*l)*u+(c=d*a-f*o)*c))?(h*=n=1/n,u*=n,c*=n):(h=0,u=0,c=0),e[0]=o,e[1]=h,e[2]=d,e[3]=0,e[4]=a,e[5]=u,e[6]=f,e[7]=0,e[8]=l,e[9]=c,e[10]=p,e[11]=0,e[12]=-(o*g+a*_+l*m),e[13]=-(h*g+u*_+c*m),e[14]=-(d*g+f*_+p*m),e[15]=1,e}},28760:(e,t,i)=>{"use strict";i.d(t,{qk:()=>n,ws:()=>s});var r=i(8014);function s(e){if(!Number.isFinite(e))throw Error(`Invalid number ${JSON.stringify(e)}`);return e}function n(e,t,i=""){if(r.$W.debug&&!function(e,t){if(e.length!==t)return!1;for(let t=0;t<e.length;++t)if(!Number.isFinite(e[t]))return!1;return!0}(e,t))throw Error(`math.gl: ${i} some fields set to invalid numbers'`);return e}},28970:(e,t,i)=>{"use strict";i.d(t,{F:()=>s});var r=i(36063);class s{static defaultProps={id:"undefined",handle:void 0,userData:void 0};id;props;userData={};_device;destroyed=!1;allocatedBytes=0;_attachedResources=new Set;constructor(e,t,i){if(!e)throw Error("no device");this._device=e,this.props=function(e,t){let i={...t};for(let t in e)void 0!==e[t]&&(i[t]=e[t]);return i}(t,i);let s="undefined"!==this.props.id?this.props.id:(0,r.L)(this[Symbol.toStringTag]);this.props.id=s,this.id=s,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyResource()}delete(){return this.destroy(),this}toString(){return`${this[Symbol.toStringTag]||this.constructor.name}(${this.id})`}getProps(){return this.props}attachResource(e){this._attachedResources.add(e)}detachResource(e){this._attachedResources.delete(e)}destroyAttachedResource(e){this._attachedResources.delete(e)&&e.destroy()}destroyAttachedResources(){for(let e of Object.values(this._attachedResources))e.destroy();this._attachedResources=new Set}destroyResource(){this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0}removeStats(){let e=this._device.statsManager.getStats("Resource Counts"),t=this[Symbol.toStringTag];e.get(`${t}s Active`).decrementCount()}trackAllocatedMemory(e,t=this[Symbol.toStringTag]){let i=this._device.statsManager.getStats("Resource Counts");i.get("GPU Memory").addCount(e),i.get(`${t} Memory`).addCount(e),this.allocatedBytes=e}trackDeallocatedMemory(e=this[Symbol.toStringTag]){let t=this._device.statsManager.getStats("Resource Counts");t.get("GPU Memory").subtractCount(this.allocatedBytes),t.get(`${e} Memory`).subtractCount(this.allocatedBytes),this.allocatedBytes=0}addStats(){let e=this._device.statsManager.getStats("Resource Counts"),t=this[Symbol.toStringTag];e.get("Resources Created").incrementCount(),e.get(`${t}s Created`).incrementCount(),e.get(`${t}s Active`).incrementCount()}}},30244:(e,t,i)=>{"use strict";function r(e,t){if(!e)throw Error(t||"luma.gl: assertion failed.")}i.d(t,{v:()=>r})},34157:(e,t,i)=>{"use strict";i.d(t,{a:()=>p,o:()=>f});var r=i(61745),s=i(28089),n=i(61773),o=i(25198);let a=[0,0,0,0],l=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],h=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],u=[0,0,0],c=[0,0,0],d=(0,o.A)(function({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:o}){let{projectionCenter:c,viewProjectionMatrix:d,originCommon:p,cameraPosCommon:g,shaderCoordinateOrigin:_,geospatialOrigin:m}=function(e,t,i){let{viewMatrixUncentered:n,projectionMatrix:o}=e,{viewMatrix:h,viewProjectionMatrix:u}=e,c=a,d=a,p=e.cameraPosition,{geospatialOrigin:g,shaderCoordinateOrigin:_,offsetMode:m}=f(e,t,i);return m&&(d=e.projectPosition(g||_),p=[p[0]-d[0],p[1]-d[1],p[2]-d[2]],d[3]=1,c=r.Z0([],d,u),h=n||h,u=s.lw([],o,h),u=s.lw([],u,l)),{viewMatrix:h,viewProjectionMatrix:u,projectionCenter:c,originCommon:d,cameraPosCommon:p,shaderCoordinateOrigin:_,geospatialOrigin:g}}(e,i,o),E=e.getDistanceScales(),v=[e.width*t,e.height*t],y=r.Z0([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,b={project_uCoordinateSystem:i,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:_,project_uCommonOrigin:p.slice(0,3),project_uCenter:c,project_uPseudoMeters:!!e._pseudoMeters,project_uViewportSize:v,project_uDevicePixelRatio:t,project_uFocalDistance:y,project_uCommonUnitsPerMeter:E.unitsPerMeter,project_uCommonUnitsPerWorldUnit:E.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:u,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:d,project_uModelMatrix:h,project_uCameraPosition:g};if(m){let t=e.getDistanceScales(m);
1451switch(i){case n.rf.METER_OFFSETS:b.project_uCommonUnitsPerWorldUnit=t.unitsPerMeter,b.project_uCommonUnitsPerWorldUnit2=t.unitsPerMeter2;break;case n.rf.LNGLAT:case n.rf.LNGLAT_OFFSETS:e._pseudoMeters||(b.project_uCommonUnitsPerMeter=t.unitsPerMeter),b.project_uCommonUnitsPerWorldUnit=t.unitsPerDegree,b.project_uCommonUnitsPerWorldUnit2=t.unitsPerDegree2;break;case n.rf.CARTESIAN:b.project_uCommonUnitsPerWorldUnit=[1,1,t.unitsPerMeter[2]],b.project_uCommonUnitsPerWorldUnit2=[0,0,t.unitsPerMeter2[2]]}}return b});function f(e,t,i=c){let r;i.length<3&&(i=[i[0],i[1],0]);let s=i,o=!0;switch(r=t===n.rf.LNGLAT_OFFSETS||t===n.rf.METER_OFFSETS?i:e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case n.Kx.WEB_MERCATOR:(t===n.rf.LNGLAT||t===n.rf.CARTESIAN)&&(r=[0,0,0],o=!1);break;case n.Kx.WEB_MERCATOR_AUTO_OFFSET:t===n.rf.LNGLAT?s=r:t===n.rf.CARTESIAN&&(s=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],r=e.unprojectPosition(s),s[0]-=i[0],s[1]-=i[1],s[2]-=i[2]);break;case n.Kx.IDENTITY:(s=e.position.map(Math.fround))[2]=s[2]||0;break;case n.Kx.GLOBE:o=!1,r=null;break;default:o=!1}return{geospatialOrigin:r,shaderCoordinateOrigin:s,offsetMode:o}}function p({viewport:e,devicePixelRatio:t=1,modelMatrix:i=null,coordinateSystem:r=n.rf.DEFAULT,coordinateOrigin:s=c,autoWrapLongitude:o=!1}){r===n.rf.DEFAULT&&(r=e.isGeospatial?n.rf.LNGLAT:n.rf.CARTESIAN);let a=d({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:s});return a.project_uWrapLongitude=o,a.project_uModelMatrix=i||h,a}},36063:(e,t,i)=>{"use strict";i.d(t,{L:()=>s,Z:()=>n});let r={};function s(e="id"){r[e]=r[e]||1;let t=r[e]++;return`${e}-${t}`}function n(e){let t=!0;for(let i in e){t=!1;break}return t}},39824:e=>{var t=/\s/;e.exports=function(e){for(var i=e.length;i--&&t.test(e.charAt(i)););return i}},43210:(e,t,i)=>{"use strict";i.d(t,{p8:()=>r,tb:()=>s});let r=1e-6,s="undefined"!=typeof Float32Array?Float32Array:Array},46608:(e,t,i)=>{"use strict";i.d(t,{A:()=>s});class r{constructor(e={}){this._pool=[],this.opts={overAlloc:2,poolSize:100},this.setOptions(e)}setOptions(e){Object.assign(this.opts,e)}allocate(e,t,{size:i=1,type:r,padding:s=0,copy:n=!1,initialize:o=!1,maxCount:a}){let l=r||e&&e.constructor||Float32Array,h=t*i+s;if(ArrayBuffer.isView(e)){if(h<=e.length)return e;if(h*e.BYTES_PER_ELEMENT<=e.buffer.byteLength)return new l(e.buffer,0,h)}let u=1/0;a&&(u=a*i+s);let c=this._allocate(l,h,o,u);return e&&n?c.set(e):o||c.fill(0,0,4),this._release(e),c}release(e){this._release(e)}_allocate(e,t,i,r){let s=Math.max(Math.ceil(t*this.opts.overAlloc),1);s>r&&(s=r);let n=this._pool,o=e.BYTES_PER_ELEMENT*s,a=n.findIndex(e=>e.byteLength>=o);if(a>=0){let t=new e(n.splice(a,1)[0],0,s);return i&&t.fill(0),t}return new e(s)}_release(e){if(!ArrayBuffer.isView(e))return;let t=this._pool,{buffer:i}=e,{byteLength:r}=i,s=t.findIndex(e=>e.byteLength>=r);s<0?t.push(i):(s>0||t.length<this.opts.poolSize)&&t.splice(s,0,i),t.length>this.opts.poolSize&&t.shift()}}let s=new r},46809:(e,t,i)=>{"use strict";i.d(t,{A:()=>sf});let r=1,s=1;class n{time=0;channels=new Map;animations=new Map;playing=!1;lastEngineTime=-1;constructor(){}addChannel(e){let{delay:t=0,duration:i=1/0,rate:s=1,repeat:n=1}=e,o=r++,a={time:0,delay:t,duration:i,rate:s,repeat:n};return this._setChannelTime(a,this.time),this.channels.set(o,a),o}removeChannel(e){for(let[t,i]of(this.channels.delete(e),this.animations))i.channel===e&&this.detachAnimation(t)}isFinished(e){let t=this.channels.get(e);return void 0!==t&&this.time>=t.delay+t.duration*t.repeat}getTime(e){if(void 0===e)return this.time;let t=this.channels.get(e);return void 0===t?-1:t.time}setTime(e){for(let t of(this.time=Math.max(0,e),this.channels.values()))this._setChannelTime(t,this.time);for(let e of this.animations.values()){let{animation:t,channel:i}=e;t.setTime(this.getTime(i))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,t){let i=s++;return this.animations.set(i,{animation:e,channel:t}),e.setTime(this.getTime(t)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(-1===this.lastEngineTime&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,t){let i=t-e.delay;i>
1451=e.duration*e.repeat?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}}var o,a=i(2572),l=i(24265);let h=[l.A],u=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"];var c=i(60686),d=i(91156),f=i(86028),p=i(54720),g=i(99742);function _(){let e;if("undefined"!=typeof window&&window.performance)e=window.performance.now();else if(void 0!==g&&g.hrtime){let t=g.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}class m{constructor(e,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=_(),this._timerPending=!0,this}timeEnd(){return this._timerPending&&(this.addTime(_()-this._startTime),this._timerPending=!1,this._checkSampling()),this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}class E{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,t="count"){return this._getOrCreate({name:e,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let t of Object.values(this.stats))e(t)}getTable(){let e={};return this.forEach(t=>{e[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(e=>this._getOrCreate(e))}_getOrCreate(e){let{name:t,type:i}=e,r=this.stats[t];return r||(r=e instanceof m?e:new m(t,i),this.stats[t]=r),r}}var v=i(7334);class y{constructor(e,t,i){this._loadCount=0,this._subscribers=new Set,this.id=e,this.context=i,this.setData(t)}subscribe(e){this._subscribers.add(e)}unsubscribe(e){this._subscribers.delete(e)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,t){if(e===this._data&&!t)return;this._data=e;let i=++this._loadCount,r=e;for(let t of("string"==typeof e&&(r=(0,v.H)(e)),r instanceof Promise?(this.isLoaded=!1,this._loader=r.then(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=e)}).catch(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=e||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e),this._subscribers))t.onChange(this.getData())}}class b{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return!!e.startsWith(this.protocol)||e in this._resources}add({resourceId:e,data:t,forceUpdate:i=!1,persistent:r=!0}){let s=this._resources[e];s?s.setData(t,i):(s=new y(e,t,this._context),this._resources[e]=s),s.persistent=r}remove(e){let t=this._resources[e];t&&(t.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let t=this._consumers[e];if(t){for(let e in t){let i=t[e],r=this._resources[i.resourceId];r&&r.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:t,consumerId:i,requestId:r="default"}){let{_resources:s,protocol:n}=this;e.startsWith(n)&&(s[e=e.replace(n,"")]||this.add({resourceId:e,data:null,persistent:!1}));let o=s[e];if(this._track(i,r,o,t),o)return o.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,t,i,r){let s=this._consumers,n=s[e]=s[e]||{},o=n[t],a=o&&o.resourceId&&this._resources[o.resourceId];a&&(a.unsubscribe(o),this.prune()),i&&(o?(o.onChange=r,o.resourceId=i.id):o={onChange:r,resourceId:i.id},n[t]=o,i.subscribe(o))}_prune(){for(let e of(this._pruneRequest=null,Object.keys(this._resources))){let t=this._resources[e];t.persistent||t.inUse()||(t.delete(),delete this._resources[e])}}}var A=i(13402);class T{constructor(e,t){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=e=>{(0,f.A)("layerManager.activateViewport",this,e),e&&(this.context.viewport=e)};let{deck:i,stats:r,viewport:s,timeline:o}=t||{};this.layers=[],this.resourceManager=new b({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:function(){let e=a._.getDefaultShaderAssembler();for(let t of h)e.addDefaultModule(t);for(let t of u)e.addShaderHook(t);return e}(),defaultShaderModules:[],renderPass:void 0,stats:r||new E({id:"deck.gl"}),viewport:s||new A.A({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new n,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){for(let e of(this.resourceManager.finalize(),this.layers))this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;for(let i of(e.clearRedrawFlags&&(this._needsRedraw=!1),this.layers)){let r=i.getNeedsRedraw(e);t=t||r}return t}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(t=>e.find(e=>0===t.id.indexOf(e))):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers
1451),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,t){(0,f.A)("layerManager.setLayers",this,t,e),this._lastRenderedLayers=e;let i=(0,p.B)(e,Boolean);for(let e of i)e.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:t}=this.context;t.find(t=>t.name===e.name)||(t.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:t}=this.context,i=t.findIndex(t=>t.name===e.name);i>=0&&(t.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,t,i){i.raiseError(t,`${e} of ${i}`)}_updateLayers(e,t){let i={};for(let t of e)i[t.id]?d.A.warn(`Multiple old layers with same id ${t.id}`)():i[t.id]=t;if(this._defaultShaderModulesChanged){for(let t of e)t.setNeedsUpdate(),t.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let r=[];this._updateSublayersRecursively(t,i,r),this._finalizeOldLayers(i);let s=!1;for(let e of r)if(e.hasUniformTransition()){s=`Uniform transition in ${e}`;break}this._needsUpdate=s,this.layers=r}_updateSublayersRecursively(e,t,i){for(let r of e){r.context=this.context;let e=t[r.id];null===e&&d.A.warn(`Multiple new layers with same id ${r.id}`)(),t[r.id]=null;let s=null;try{this._debug&&e!==r&&r.validateProps(),e?(this._transferLayerState(e,r),this._updateLayer(r)):this._initializeLayer(r),i.push(r),s=r.isComposite?r.getSubLayers():null}catch(e){this._handleError("matching",e,r)}s&&this._updateSublayersRecursively(s,t,i)}}_finalizeOldLayers(e){for(let t in e){let i=e[t];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=c.VD.INITIALIZED}catch(t){this._handleError("initialization",t,e)}}_transferLayerState(e,t){t._transferState(e),t.lifecycle=c.VD.MATCHED,t!==e&&(e.lifecycle=c.VD.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(t){this._handleError("update",t,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=c.VD.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=c.VD.FINALIZED}catch(t){this._handleError("finalization",t,e)}}}var R=i(95037);class S{constructor(e){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},Object.seal(this),this.setProps(e)}finalize(){for(let e in this.controllers){let t=this.controllers[e];t&&t.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(let e in this.controllers){let t=this.controllers[e];t&&t.updateTransition()}}getViewports(e){return e?this._viewports.filter(t=>t.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(t=>{e[t.id]=t}),e}getView(e){return this.views.find(t=>t.id===e)}getViewState(e){let t="string"==typeof e?this.getView(e):e,i=t&&this.viewState[t.getViewStateId()]||this.viewState;return t?t.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}unproject(e,t){let i=this.getViewports(),r={x:e[0],y:e[1]};for(let s=i.length-1;s>=0;--s){let n=i[s];if(n.containsPixel(r)){let i=e.slice();return i[0]-=n.x,i[1]-=n.y,n.unproject(i,t)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.setNeedsUpdate("Size changed"))}_setViews(e){e=(0,p.B)(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?((0,R.b)(e,this.viewState,3)||this.setNeedsUpdate("viewState changed"),this.viewState=e):d.A.warn("missing `viewState` or `initialViewState`")()}_createController(e,t){return new t.type({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:t=>this.getView(e.id)?.makeViewport({viewState:t,width:this.width,height:this.height})})}_updateController(e,t,i,r){let s=e.controller;if(s&&i){let n={...t,...s,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return r&&r.constructor===s.type||(r=this._createController(e,n)),r&&r.setProps(n),r}return null}_rebuildViewports(){let{views:e}=this,t=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let r=e.length;r--;){let s=e[r],n=this.getViewState(s),o=s.makeViewport({viewState:n,width:this.width,height:this.height}),a=t[s.id],l=!!s.controller;l&&!a&&(i=!0),(i||!l)&&a&&(a.finalize(),a=null),this.controllers[s.id]=this._updateController(s,n,o,a),o&&this._viewports.unshift(o)}for(let e in t){let i=t[e];i&&!this.controllers[e]&&i.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={}
1451,this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,t){return e.length!==t.length||e.some((i,r)=>!e[r].equals(t[r]))}}let w=/([0-9]+\.?[0-9]*)(%|px)/;function P(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":let t=w.exec(e);if(t&&t.length>=3){let e="%"===t[2],i=parseFloat(t[1]);return{position:e?i/100:i,relative:e}}default:throw Error(`Could not parse position string ${e}`)}}function C(e,t){return e.relative?Math.round(e.position*t):e.position}class x{constructor(e){let{id:t,x:i=0,y:r=0,width:s="100%",height:n="100%",padding:o=null}=e;this.id=t||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=P(i),this._y=P(r),this._width=P(s),this._height=P(n),this._padding=o&&{left:P(o.left||0),right:P(o.right||0),top:P(o.top||0),bottom:P(o.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e||this.ViewportType===e.ViewportType&&(0,R.b)(this.props,e.props,2)}makeViewport({width:e,height:t,viewState:i}){i=this.filterViewState(i);let r=this.getDimensions({width:e,height:t});return r.height&&r.width?new this.ViewportType({...i,...this.props,...r}):null}getViewStateId(){let{viewState:e}=this.props;return"string"==typeof e?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&"object"==typeof this.props.viewState){if(!this.props.viewState.id)return this.props.viewState;let t={...e};for(let e in this.props.viewState)"id"!==e&&(t[e]=this.props.viewState[e]);return t}return e}getDimensions({width:e,height:t}){let i={x:C(this._x,e),y:C(this._y,t),width:C(this._width,e),height:C(this._height,t)};return this._padding&&(i.padding={left:C(this._padding.left,e),top:C(this._padding.top,t),right:C(this._padding.right,e),bottom:C(this._padding.bottom,t)}),i}get controller(){let e=this.props.controller;return e?!0===e?{type:this.ControllerType}:"function"==typeof e?{type:e}:{type:this.ControllerType,...e}:null}}var L=i(89357),M=i(8014),I=i(27126);let O=()=>{},N={BREAK:1,SNAP_TO_END:2,IGNORE:3},F=e=>e,D=N.BREAK;class B{constructor(e){this._onTransitionUpdate=e=>{let{time:t,settings:{interpolator:i,startProps:r,endProps:s,duration:n,easing:o}}=e,a=o(t/n),l=i.interpolateProps(r,s,a);this.propsInTransition=this.getControllerState({...this.props,...l}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new I.A(e.timeline),this.onViewStateChange=e.onViewStateChange||O,this.onStateChange=e.onStateChange||O}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let t=!1,i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let r=i;if(this.transition.inProgress){let{interruption:e,endProps:t}=this.transition.settings;r={...i,...e===N.SNAP_TO_END?t:this.propsInTransition||i}}this._triggerTransition(r,e),t=!0}else this.transition.cancel();return t}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:t,transitionInterpolator:i}=e;return(t>0||"auto"===t)&&!!i}_isUpdateDueToCurrentTransition(e){return!!this.transition.inProgress&&!!this.propsInTransition&&this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition)}_shouldIgnoreViewportChange(e,t){return this.transition.inProgress?this.transition.settings.interruption===N.IGNORE||this._isUpdateDueToCurrentTransition(t):!this._isTransitionEnabled(t)||t.transitionInterpolator.arePropsEqual(e,t)}_triggerTransition(e,t){let i=this.getControllerState(e),r=this.getControllerState(t).shortestPathFrom(i),s=t.transitionInterpolator,n=s.getDuration?s.getDuration(e,t):t.transitionDuration;if(0===n)return;let o=s.initializeProps(e,r);this.propsInTransition={};let a={duration:n,easing:t.transitionEasing||F,interpolator:s,interruption:t.transitionInterruption||D,startProps:o.start,endProps:o.end,onStart:t.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(t.onTransitionInterrupt),onEnd:this._onTransitionEnd(t.onTransitionEnd)};this.transition.start(a),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return t=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(t)}}}var U=i(16612);
1451class k{constructor(e){let{compare:t,extract:i,required:r}=e;this._propsToCompare=t,this._propsToExtract=i||t,this._requiredProps=r}arePropsEqual(e,t){for(let i of this._propsToCompare)if(!(i in e)||!(i in t)||!(0,M.aI)(e[i],t[i]))return!1;return!0}initializeProps(e,t){let i={},r={};for(let s of this._propsToExtract)(s in e||s in t)&&(i[s]=e[s],r[s]=t[s]);return this._checkRequiredProps(i),this._checkRequiredProps(r),{start:i,end:r}}getDuration(e,t){return t.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(t=>{let i=e[t];(0,U.A)(Number.isFinite(i)||Array.isArray(i),`${t} is required for transition`)})}}let G=["longitude","latitude","zoom","bearing","pitch"],V=["longitude","latitude","zoom"];class z extends k{constructor(e={}){let t=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:G,required:V},super(i.transitionProps),this.opts=i}initializeProps(e,t){let i=super.initializeProps(e,t),{makeViewport:r,around:s}=this.opts;if(r&&s){let n=r(e),o=r(t),a=n.unproject(s);i.start.around=s,Object.assign(i.end,{around:o.project(a),aroundPosition:a,width:t.width,height:t.height})}return i}interpolateProps(e,t,i){let r={};for(let s of this._propsToExtract)r[s]=(0,M.Cc)(e[s]||0,t[s]||0,i);if(t.aroundPosition&&this.opts.makeViewport){let s=this.opts.makeViewport({...t,...r});Object.assign(r,s.panByPosition(t.aroundPosition,(0,M.Cc)(e.around,t.around,i)))}return r}}let W={transitionDuration:0},j=e=>1-(1-e)*(1-e),H={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},$={};class X{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new B({...e,getControllerState:e=>new this.ControllerState(e),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let t=this._eventStartBlocked;switch(e.type){case"panstart":return!t&&this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return!t&&this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"tripanstart":return!t&&this._onTriplePanStart(e);case"tripanmove":return this._onTriplePan(e);case"tripanend":return this._onTriplePanEnd(e);case"doubletap":return this._onDoubleTap(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:t,y:i}=this.props,{offsetCenter:r}=e;return[r.x-t,r.y-i]}isPointInBounds(e,t){let{width:i,height:r}=this.props;if(t&&t.handled)return!1;let s=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=r;return s&&t&&t.stopPropagation(),s}isFunctionKeyPressed(e){let{srcEvent:t}=e;return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let t=setTimeout(()=>{this._eventStartBlocked===t&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=t}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:t}=e;this.inertia=Number.isFinite(t)?t:300*(!0===t);let{scrollZoom:i=!0,dragPan:r=!0,dragRotate:s=!0,doubleClickZoom:n=!0,touchZoom:
1451o=!0,touchRotate:a=!1,keyboard:l=!0}=e,h=!!this.onViewStateChange;this.toggleEvents(H.WHEEL,h&&i),this.toggleEvents(H.PAN,h),this.toggleEvents(H.PINCH,h&&(o||a)),this.toggleEvents(H.TRIPLE_PAN,h&&a),this.toggleEvents(H.DOUBLE_TAP,h&&n),this.toggleEvents(H.KEYBOARD,h&&l),this.scrollZoom=i,this.dragPan=r,this.dragRotate=s,this.doubleClickZoom=n,this.touchZoom=o,this.touchRotate=a,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,t){this.eventManager&&e.forEach(e=>{this._events[e]!==t&&(this._events[e]=t,t?this.eventManager.on(e,this.handleEvent):this.eventManager.off(e,this.handleEvent))})}updateViewport(e,t=null,i={}){let r={...e.getViewportProps(),...t},s=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),s){let e=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:r,interactionState:this._interactionState,oldViewState:e,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||"pan"===this.dragMode)&&(i=!i);let r=this.controllerState[i?"panStart":"rotateStart"]({pos:t});return this._panMove=i,this.updateViewport(r,W,{isDragging:!0}),!0}_onPan(e){return!!this.isDragging()&&(this._panMove?this._onPanMove(e):this._onPanRotate(e))}_onPanEnd(e){return!!this.isDragging()&&(this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e))}_onPanMove(e){if(!this.dragPan)return!1;let t=this.getCenter(e),i=this.controllerState.pan({pos:t});return this.updateViewport(i,W,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:t}=this;if(this.dragPan&&t&&e.velocity){let i=this.getCenter(e),r=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],s=this.controllerState.pan({pos:r}).panEnd();this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:j},{isDragging:!1,isPanning:!0})}else{let e=this.controllerState.panEnd();this.updateViewport(e,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let t=this.getCenter(e),i=this.controllerState.rotate({pos:t});return this.updateViewport(i,W,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:t}=this;if(this.dragRotate&&t&&e.velocity){let i=this.getCenter(e),r=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],s=this.controllerState.rotate({pos:r}).rotateEnd();this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:j},{isDragging:!1,isRotating:!0})}else{let e=this.controllerState.rotateEnd();this.updateViewport(e,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;e.srcEvent.preventDefault();let{speed:i=.01,smooth:r=!1}=!0===this.scrollZoom?{}:this.scrollZoom,{delta:s}=e,n=2/(1+Math.exp(-Math.abs(s*i)));s<0&&0!==n&&(n=1/n);let o=this.controllerState.zoom({pos:t,scale:n});return this.updateViewport(o,{...this._getTransitionProps({around:t}),transitionDuration:r?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(e){let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.controllerState.rotateStart({pos:t});return this.updateViewport(i,W,{isDragging:!0}),!0}_onTriplePan(e){if(!this.touchRotate||!this.isDragging())return!1;let t=this.getCenter(e);t[0]-=e.deltaX;let i=this.controllerState.rotate({pos:t});return this.updateViewport(i,W,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(e){if(!this.isDragging())return!1;let{inertia:t}=this;if(this.touchRotate&&t&&e.velocityY){let i=this.getCenter(e),r=[i[0],i[1]+=e.velocityY*t/2],s=this.controllerState.rotate({pos:r});this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:j},{isDragging:!1,isRotating:!0}),this.blockEvents(t)}else{let e=this.controllerState.rotateEnd();this.updateViewport(e,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.controllerState.zoomStart({pos:t}).rotateStart({pos:t});return $._startPinchRotation=e.rotation,$._lastPinchEvent=e,this.updateViewport(i,W,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let t=this.controllerState;if(this.touchZoom){let{scale:i}=e,r=this.getCenter(e);t=t.zoom({pos:r,scale:i})}if(this.touchRotate){let{rotation:i}=e;t=t.rotate({deltaAngleX:$._startPinchRotation-i})}return this.updateViewport(t,W,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),$._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:t}=this,{_lastPinchEvent:i}=$;if(this.touchZoom&&t&&i&&e.scale!==i.scale){let r=this.getCenter(e),s=this.controllerState.rotateEnd(),n=Math.log2(e.scale),o=(n-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),a=Math.pow(2,n+o*t/2);s=s.zoom({pos:r,scale:a}).zoomEnd(),this.updateViewport(s,{...this._getTransitionProps({around:r}),transitionDuration:t,transitionEasing:j},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(t)}else{let e=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(e,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return $._startPinchRotation=null,$._lastPinchEvent=null,!0}_onDoubleTap(e){if(!this.doubleClickZoom)return!1;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.isFunctionKeyPressed(e),r=this.controllerState.zoom({pos:t,scale:i?.5:2});return this.updateViewport(r,this._getTransitionProps({around:t}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){let t;if(!this.keyboard)return!1;let i=this.isFunctionKeyPressed(e),{zoomSpeed:r,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=!0===this.keyboard?{}:this.keyboard,{controllerState:a}=this,l={};switch(e.srcEvent.code){case"Minus":t=i?a.zoomOut(r).zoomOut(r):a.zoomOut(r),l.isZooming=!0;break;case"Equal":t=i?a.zoomIn(r).zoomIn(r):a.zoomIn(r),l.isZooming=!0;break;case"ArrowLeft":i?(t=a.rotateLeft(n),l.isRotating=!0):(t=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":i?(t=a.rotateRight(n),l.isRotating=!0):(t=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":i?(t=a.rotateUp(o),l.isRotating=!0):(t=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":i?(t=a.rotateDown(o),l.isRotating=!0):(t=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(t,this._getTransitionProps(),l),!0}_getTransitionProps(e){let{transition:t}=this;return t&&t.transitionInterpolator?e?{...t,transitionInterpolator:new z({...e,...t.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:t:W}}class K{constructor(e,t){this._viewportProps=this.applyConstraints(e),this._state=t}getViewportProps(){return this._viewportProps}getState(){return this._state}}var Y=i(24694);class Z extends K{constructor(e){let{width:t,height:i,latitude:r,longitude:s,zoom:n,bearing:o=0,pitch:a=0,altitude:l=1.5,position:h=[0,0,0],maxZoom:u=20,minZoom:c=0,maxPitch:d=60,minPitch:f=0,startPanLngLat:p,startZoomLngLat:g,startRotatePos:_,startBearing:m,startPitch:E,startZoom:v,normalize:y=!0}=e;(0,U.A)(Number.isFinite(s)),(0,U.A)(Number.isFinite(r)),(0,U.A)(Number.isFinite(n)),super({width:t,height:i,latitude:r,longitude:s,zoom:n,bearing:o,pitch:a,altitude:l,maxZoom:u,minZoom:c,maxPitch:d,minPitch:f,normalize:y,position:h},{startPanLngLat:p,startZoomLngLat:g,startRotatePos:_,startBearing:m,startPitch:E,startZoom:v}),this.makeViewport=e.makeViewport}panStart({pos:e}
1451){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:t}){let i=this.getState().startPanLngLat||this._unproject(t);if(!i)return this;let r=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:t=0,deltaAngleY:i=0}){let r,{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();return s&&void 0!==n&&void 0!==o?(r=e?this._getNewRotation(e,s,o,n):{bearing:n+t,pitch:o+i},this._getUpdatedState(r)):this}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:t,scale:i}){let{startZoom:r,startZoomLngLat:s}=this.getState();if(s||(r=this.getViewportProps().zoom,s=this._unproject(t)||this._unproject(e)),!s)return this;let{maxZoom:n,minZoom:o}=this.getViewportProps(),a=r+Math.log2(i);a=(0,M.qE)(a,o,n);let l=this.makeViewport({...this.getViewportProps(),zoom:a});return this._getUpdatedState({zoom:a,...l.panByPosition(s,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let t=e.getViewportProps(),i={...this.getViewportProps()},{bearing:r,longitude:s}=i;return Math.abs(r-t.bearing)>180&&(i.bearing=r<0?r+360:r-360),Math.abs(s-t.longitude)>180&&(i.longitude=s<0?s+360:s-360),i}applyConstraints(e){let{maxZoom:t,minZoom:i,zoom:r}=e;e.zoom=(0,M.qE)(r,i,t);let{maxPitch:s,minPitch:n,pitch:o}=e;e.pitch=(0,M.qE)(o,n,s);let{normalize:a=!0}=e;return a&&Object.assign(e,(0,Y.CK)(e)),e}_zoomFromCenter(e){let{width:t,height:i}=this.getViewportProps();return this.zoom({pos:[t/2,i/2],scale:e})}_panFromCenter(e){let{width:t,height:i}=this.getViewportProps();return this.pan({startPos:[t/2,i/2],pos:[t/2+e[0],i/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let t=this.makeViewport(this.getViewportProps());return e&&t.unproject(e)}_getNewRotation(e,t,i,r){let s=e[0]-t[0],n=e[1]-t[1],o=e[1],a=t[1],{width:l,height:h}=this.getViewportProps(),u=0;n>0?Math.abs(h-a)>5&&(u=n/(a-h)*1.2):n<0&&a>5&&(u=1-o/a),u=(0,M.qE)(u,-1,1);let{minPitch:c,maxPitch:d}=this.getViewportProps(),f=i;return u>0?f=i+u*(d-i):u<0&&(f=i-u*(c-i)),{pitch:f,bearing:r+s/l*180}}}class q extends X{constructor(){super(...arguments),this.ControllerState=Z,this.transition={transitionDuration:300,transitionInterpolator:new z({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];let t=this.props;super.setProps(e),t&&t.height===e.height||this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}}class Q extends x{constructor(e={}){super(e)}get ViewportType(){return L.A}get ControllerType(){return q}}Q.displayName="MapView";let J=[255,255,255],ee=0;class et{constructor(e={}){this.type="ambient";let{color:t=J}=e,{intensity:i=1}=e;this.id=e.id||`ambient-${ee++}`,this.color=t,this.intensity=i}}var ei=i(54570);let er=[255,255,255],es=[0,0,-1],en=0;class eo{constructor(e={}){this.type="directional";let{color:t=er}=e,{intensity:i=1}=e,{direction:r=es}=e,{_shadow:s=!1}=e;this.id=e.id||`directional-${en++}`,this.color=t,this.intensity=i,this.type="directional",this.direction=new ei.P(r).normalize().toArray(),this.shadow=s}getProjectedLight(e){return this}}var ea=i(98590);
1451class el{constructor(e,t={id:"pass"}){let{id:i}=t;this.id=i,this.device=e,this.props={...t}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}}class eh extends el{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){let[t,i]=this.device.canvasContext.getDrawingBufferSize(),r=e.clearCanvas??!0,s=e.clearColor??(!!r&&[0,0,0,0]),n=e.colorMask??15,o={viewport:[0,0,t,i]};e.colorMask&&(o.colorMask=n),e.scissorRect&&(o.scissorRect=e.scissorRect);let a=this.device.beginRenderPass({framebuffer:e.target,parameters:o,clearColor:s,clearDepth:!!r&&1,clearStencil:!!r&&0});try{return this._drawLayers(a,e)}finally{a.end()}}_drawLayers(e,t){let{target:i,moduleParameters:r,viewports:s,views:n,onViewportActive:o,clearStack:a=!0}=t;t.pass=t.pass||"unknown",a&&(this._lastRenderIndex=-1);let l=[];for(let a of s){let s=n&&n[a.id];o?.(a);let h=this._getDrawLayerParams(a,t);for(let n of a.subViewports||[a]){let o=this._drawLayersInViewport(e,{target:i,moduleParameters:r,viewport:n,view:s,pass:t.pass,layers:t.layers},h);l.push(o)}}return l}_getDrawLayerParams(e,{layers:t,pass:i,isPicking:r=!1,layerFilter:s,cullRect:n,effects:o,moduleParameters:a},l=!1){let h=[],u=function e(t=0,i={}){let r={},s=(n,o)=>{let a,l=n.props._offset,h=n.id,u=n.parent&&n.parent.id;if(!u||u in i||s(n.parent,!1),u in r){let t=r[u]=r[u]||e(i[u],i);a=t(n,o),r[h]=t}else Number.isFinite(l)?(a=l+(i[u]||0),r[h]=null):a=t;return o&&a>=t&&(t=a+1),i[h]=a,a};return s}(this._lastRenderIndex+1),c={layer:t[0],viewport:e,isPicking:r,renderPass:i,cullRect:n},d={};for(let r=0;r<t.length;r++){let n=t[r],f=this._shouldDrawLayer(n,c,s,d),p={shouldDrawLayer:f};f&&!l&&(p.layerRenderIndex=u(n,f),p.moduleParameters=this._getModuleParameters(n,o,i,a),p.layerParameters={...n.context.deck?.props.parameters,...this.getLayerParameters(n,r,e)}),h[r]=p}return h}_drawLayersInViewport(e,{layers:t,moduleParameters:i,pass:r,target:s,viewport:n,view:o},a){let l=function(e,{moduleParameters:t,target:i,viewport:r}){let s=t&&t.devicePixelRatio||e.canvasContext.cssToDeviceRatio(),[,n]=e.canvasContext.getDrawingBufferSize(),o=i?i.height:n;return[r.x*s,o-(r.y+r.height)*s,r.width*s,r.height*s]}(this.device,{moduleParameters:i,target:s,viewport:n});if(o&&o.props.clear){let e=!0===o.props.clear?{color:!0,depth:!0}:o.props.clear;this.device.withParametersWebGL({scissorTest:!0,scissor:l},()=>this.device.clearWebGL(e))}let h={totalCount:t.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:l});for(let i=0;i<t.length;i++){let s=t[i],{shouldDrawLayer:o,layerRenderIndex:l,moduleParameters:u,layerParameters:c}=a[i];if(o&&s.props.pickable&&h.pickableCount++,s.isComposite)h.compositeCount++;else if(o){h.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,l),u.viewport=n,s.context.renderPass=e;try{s._drawLayer({renderPass:e,moduleParameters:u,uniforms:{layerIndex:l},parameters:c})}catch(e){s.raiseError(e,`drawing ${s} to ${r}`)}}}return h}shouldDrawLayer(e){return!0}getModuleParameters(e,t){return null}getLayerParameters(e,t,i){return e.props.parameters}_shouldDrawLayer(e,t,i,r){if(!(e.props.visible&&this.shouldDrawLayer(e)))return!1;t.layer=e;let s=e.parent;for(;s;){if(!s.props.visible||!s.filterSubLayer(t))return!1;t.layer=s,s=s.parent}if(i){let e=t.layer.id;if(e in r||(r[e]=i(t)),!r[e])return!1}return e.activateViewport(t.viewport),!0}_getModuleParameters(e,t,i,r){let s=this.device.canvasContext.cssToDeviceRatio(),n=Object.assign(Object.create(e.internalState?.propsInTransition||e.props),{autoWrapLongitude:e.wrapLongitude,viewport:e.context.viewport,mousePosition:e.context.mousePosition,picking:{isActive:0},devicePixelRatio:s});if(t)for(let i of t)Object.assign(n,i.getModuleParameters?.(e));return Object.assign(n,this.getModuleParameters(e,t),r)}}class eu extends eh{constructor(e,t){super(e,t),this.shadowMap=e.createTexture({width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),this.depthBuffer=e.createTexture({format:"depth16unorm",width:1,height:1,mipmaps:!1,dataFormat:6402,type:5125}
1451),this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[this.shadowMap],depthStencilAttachment:this.depthBuffer})}render(e){let t=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),r=e.viewports[0],s=r.width*i,n=r.height*i;(s!==t.width||n!==t.height)&&t.resize({width:s,height:n}),super.render({...e,clearColor:[1,1,1,1],target:t,pass:"shadow"})}getLayerParameters(e,t,i){return{...e.props.parameters,blend:!1,depthRange:[0,1],depthTest:!0}}shouldDrawLayer(e){return!1!==e.props.shadowEnabled}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null),this.shadowMap&&(this.shadowMap.destroy(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.destroy(),this.depthBuffer=null)}}var ec=i(61773),ed=i(25198);let ef=` 1452const int max_lights = 2; 1453uniform mat4 shadow_uViewProjectionMatrices[max_lights]; 1454uniform vec4 shadow_uProjectCenters[max_lights]; 1455uniform bool shadow_uDrawShadowMap; 1456uniform bool shadow_uUseShadowMap; 1457uniform int shadow_uLightId; 1458uniform float shadow_uLightCount; 1459 1460out vec3 shadow_vPosition[max_lights]; 1461 1462vec4 shadow_setVertexPosition(vec4 position_commonspace) { 1463 if (shadow_uDrawShadowMap) { 1464 return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]); 1465 } 1466 if (shadow_uUseShadowMap) { 1467 for (int i = 0; i < max_lights; i++) { 1468 if(i < int(shadow_uLightCount)) { 1469 vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]); 1470 shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0; 1471 } 1472 } 1473 } 1474 return gl_Position; 1475} 1476`,ep=` 1477const int max_lights = 2; 1478uniform bool shadow_uDrawShadowMap; 1479uniform bool shadow_uUseShadowMap; 1480uniform sampler2D shadow_uShadowMap0; 1481uniform sampler2D shadow_uShadowMap1; 1482uniform vec4 shadow_uColor; 1483uniform float shadow_uLightCount; 1484 1485in vec3 shadow_vPosition[max_lights]; 1486 1487const vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0); 1488const vec4 bitUnpackShift = 1.0 / bitPackShift; 1489const vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); 1490 1491float shadow_getShadowWeight(vec3 position, sampler2D shadowMap) { 1492 vec4 rgbaDepth = texture(shadowMap, position.xy); 1493 1494 float z = dot(rgbaDepth, bitUnpackShift); 1495 return smoothstep(0.001, 0.01, position.z - z); 1496} 1497 1498vec4 shadow_filterShadowColor(vec4 color) { 1499 if (shadow_uDrawShadowMap) { 1500 vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift); 1501 rgbaDepth -= rgbaDepth.gbaa * bitMask; 1502 return rgbaDepth; 1503 } 1504 if (shadow_uUseShadowMap) { 1505 float shadowAlpha = 0.0; 1506 shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0); 1507 if(shadow_uLightCount > 1.0) { 1508 shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1); 1509 } 1510 shadowAlpha *= shadow_uColor.a / shadow_uLightCount; 1511 float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha); 1512 1513 return vec4( 1514 mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha), 1515 blendedAlpha 1516 ); 1517 } 1518 return color; 1519} 1520`,eg=(0,ed.A)(function({viewport:e,center:t}){return new ea.k(e.viewProjectionMatrix).invert().transform(t)}),e_=(0,ed.A)(function({viewport:e,shadowMatrices:t}){let i=[],r=e.pixelUnprojectionMatrix,s=e.isGeospatial?void 0:1,n=[[0,0,s],[e.width,0,s],[0,e.height,s],[e.width,e.height,s],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(e=>(function(e,t){let[i,r,s]=e,n=(0,Y.xJ)([i,r,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]})(e,r));for(let r of t){let t=r.clone().translate(new ei.P(e.center).negate()),s=n.map(e=>t.transform(e)),o=new ea.k().ortho({left:Math.min(...s.map(e=>e[0])),right:Math.max(...s.map(e=>e[0])),bottom:Math.min(...s.map(e=>e[1])),top:Math.max(...s.map(e=>e[1])),near:Math.min(...s.map(e=>-e[2])),far:Math.max(...s.map(e=>-e[2]))});i.push(o.multiplyRight(r))}return i}),em=[0,0,0,1],eE=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],ev={name:"shadow",dependencies:[l.A],vs:ef,fs:ep,inject:{"vs:DECKGL_FILTER_GL_POSITION":` 1521 position = shadow_setVertexPosition(geometry.position); 1522 `,"fs:DECKGL_FILTER_COLOR":` 1523 color = shadow_filterShadowColor(color); 1524 `},getUniforms:(e={},t={})=>"viewport"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?function(e,t){let{shadowEnabled:i=!0}=e;if(!i||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};let r={shadow_uDrawShadowMap:!!e.drawToShadowMap,shadow_uUseShadowMap:!!e.shadowMaps&&e.shadowMaps.length>0,shadow_uColor:e.shadowColor||em,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},s=eg({viewport:e.viewport,center:t.project_uCenter}),n=[],o=e_({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let i=0;i<e.shadowMatrices.length;i++){let r=o[i],a=r.clone().translate(new ei.P(e.viewport.center).negate());t.project_uCoordinateSystem===ec.rf.LNGLAT&&t.project_uProjectionMode===ec.Kx.WEB_MERCATOR?(o[i]=a,n[i]=s):(o[i]=r.clone().multiplyRight(eE),n[i]=a.transform(s))}for(let e=0;e<o.length;e++)r[`shadow_uViewProjectionMatrices[${e}]`]=o[e],r[`shadow_uProjectCenters[${e}]`]=n[e];for(let t=0;t<2;t++)r[`shadow_uShadowMap${t}`]=e.shadowMaps&&e.shadowMaps[t]||e.dummyShadowMap;return r}(e,t):{}},ey={color:[255,255,255],intensity:1},eb=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],eA=[0,0,0,200/255];class eT{constructor(e={}){this.id="lighting-effect",this.shadowColor=eA,this.shadow=!1,this.ambientLight=null,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.shadowMaps=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;let{device:t,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(t),i._addDefaultShaderModule(ev),this.dummyShadowMap=t.createTexture({width:1,height:1}))}setProps(e){for(let t in this.ambientLight=null,this.directionalLights=[],this.pointLights=[],e){let i=e[t];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i)}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(e=>e.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:t,viewports:i,onViewportActive:r,views:s}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let n=0;n<this.shadowPasses.length;n++)this.shadowPasses[n].render({layers:e,layerFilter:t,viewports:i,onViewportActive:r,views:s,moduleParameters:{shadowLightId:n,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}})}}getModuleParameters(e){let t=this.shadow?{shadowMaps:this.shadowMaps,dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{};return t.lightSources={ambientLight:this.ambientLight,directionalLights:this.directionalLights.map(t=>t.getProjectedLight({layer:e})),pointLights:this.pointLights.map(t=>t.getProjectedLight({layer:e}))},t}cleanup(e){for(let e of this.shadowPasses)e.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule(ev))}_calculateMatrices(){let e=[];for(let t of this.directionalLights){let i=new ea.k().lookAt({eye:new ei.P(t.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let t=0;t<this.directionalLights.length;t++){let i=new eu(e);this.shadowPasses[t]=i,this.shadowMaps[t]=i.shadowMap}}_applyDefaultLights(){let{ambientLight:e,pointLights:t,directionalLights:i}=this;e||0!==t.length||0!==i.length||(this.ambientLight=new et(ey),this.directionalLights.push(new eo(eb[0]),new eo(eb[1])))}}let eR=new eT;class eS{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let t=this._defaultEffects;if(!t.find(t=>
1524t.id===e.id)){let i=t.findIndex(t=>{var i,r;return i=t,r=e,(i.order??1/0)-(r.order??1/0)>0});i<0?t.push(e):t.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&!(0,R.b)(e.effects,this.effects,1)&&this._setEffects(e.effects)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}getEffects(){return this._resolvedEffects}_setEffects(e){let t={};for(let e of this.effects)t[e.id]=e;let i=[];for(let r of e){let e=t[r.id],s=r;e&&e!==r?e.setProps?(e.setProps(r.props),s=e):e.cleanup(this._context):e||r.setup(this._context),i.push(s),delete t[r.id]}for(let e in t)t[e].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(e=>e instanceof eT)||this._resolvedEffects.push(eR),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}}class ew extends eh{shouldDrawLayer(e){let{operation:t}=e.props;return t.includes("draw")||t.includes("terrain")}}let eP={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant-alpha",blendAlphaDstFactor:"zero"};class eC extends eh{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:t,views:i,viewports:r,onViewportActive:s,pickingFBO:n,deviceRect:{x:o,y:a,width:l,height:h},cullRect:u,effects:c,pass:d="picking",pickZ:f,moduleParameters:p}){this.pickZ=f;let g=this._resetColorEncoder(f),_=super.render({target:n,layers:e,layerFilter:t,views:i,viewports:r,onViewportActive:s,cullRect:u,effects:c?.filter(e=>e.useInPicking),pass:d,isPicking:!0,moduleParameters:p,clearColor:[0,0,0,0],colorMask:15,scissorRect:[o,a,l,h]});return this._colorEncoderState=null,{decodePickingColor:g&&ex.bind(null,g),stats:_}}shouldDrawLayer(e){let{pickable:t,operation:i}=e.props;return t&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getModuleParameters(){return{picking:{isActive:1,isAttribute:this.pickZ},lightSources:{}}}getLayerParameters(e,t,i){let r={depthMask:!0,depthTest:!0,depthRange:[0,1],...e.props.parameters},{pickable:s,operation:n}=e.props;return!this._colorEncoderState||n.includes("terrain")?r.blend=!1:s&&n.includes("draw")&&(Object.assign(r,eP),r.blend=!0,r.blendColor=function(e,t,i){let r,{byLayer:s,byAlpha:n}=e,o=s.get(t);return o?(o.viewports.push(i),r=o.a):(r=s.size+1)<=255?(o={a:r,layer:t,viewports:[i]},s.set(t,o),n[r]=o):(d.A.warn("Too many pickable layers, only picking the first 255")(),r=0),[0,0,0,r/255]}(this._colorEncoderState,e,i)),r}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}}function ex(e,t){let i=e.byAlpha[t[3]];return i&&{pickedLayer:i.layer,pickedViewports:i.viewports,pickedObjectIndex:i.layer.decodePickingColor(t)}}class eL{constructor(e){this.device=e,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new ew(e),this.pickLayersPass=new eC(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let t=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};i.effects&&this._preRender(i.effects,i);let r=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let s=t.render({...i,target:r});i.effects&&this._postRender(i.effects,i),this.renderCount++,(0,f.A)("deckRenderer.renderLayers",this,s,e)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}finalize(){let{renderBuffers:e}=this;for(let t of e)t.delete();e.length=0}_preRender(e,t){for(let i of(this.lastPostProcessEffect=null,t.preRenderStats=t.preRenderStats||{},e))t.preRenderStats[i.id]=i.preRender(t),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,t=this.device.canvasContext.getDrawingBufferSize();for(let i of(0===e.length&&[0,1].map(t=>{let i=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"}});
1524e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${t}`,colorAttachments:[i]}))}),e))i.resize(t)}_postRender(e,t){let{renderBuffers:i}=this,r={...t,inputBuffer:i[0],swapBuffer:i[1]};for(let s of e)if(s.postRender){r.target=s.id===this.lastPostProcessEffect?t.target:void 0;let e=s.postRender(r);r.inputBuffer=e,r.swapBuffer=e===i[0]?i[1]:i[0]}}}let eM={pickedColor:null,pickedObjectIndex:-1};function eI({pickInfo:e,viewports:t,pixelRatio:i,x:r,y:s,z:n}){let o,a=t[0];if(t.length>1&&(a=function(e,t){for(let i=e.length-1;i>=0;i--){let r=e[i];if(r.containsPixel(t))return r}return e[0]}(e?.pickedViewports||t,{x:r,y:s})),a){let e=[r-a.x,s-a.y];void 0!==n&&(e[2]=n),o=a.unproject(e)}return{color:null,layer:null,viewport:a,index:-1,picked:!1,x:r,y:s,pixel:[r,s],coordinate:o,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:i}}function eO({layer:e,info:t,mode:i}){for(;e&&t;){let r=t.layer||null;t.sourceLayer=r,t.layer=e,t=e.getPickingInfo({info:t,mode:i,sourceLayer:r}),e=e.parent}return t}class eN{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new eC(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}
1524pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:t,layers:i,viewports:r},s=this.lastPickedInfo.info){let n=s&&s.layer&&s.layer.id,o=s&&s.viewport&&s.viewport.id,a=n?i.find(e=>e.id===n):null,l=o&&r.find(e=>e.id===o)||r[0],h=l&&l.unproject([e-l.x,t-l.y]);return{...s,x:e,y:t,viewport:l,coordinate:h,layer:a}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let e=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=e}let{canvas:e}=this.device.getCanvasContext();this.pickingFBO?.resize({width:e.width,height:e.height}),this.depthFBO?.resize({width:e.width,height:e.height})}_getPickable(e){if(!1===this._pickable)return null;let t=e.filter(e=>this.pickLayersPass.shouldDrawLayer(e)&&!e.isComposite);return t.length?t:null}_pickClosestObject({layers:e,views:t,viewports:i,x:r,y:s,radius:n=0,depth:o=1,mode:a="query",unproject3D:l,onViewportActive:h,effects:u}){let c,f=this.device.canvasContext.cssToDeviceRatio(),p=this._getPickable(e);if(!p||0===i.length)return{result:[],emptyInfo:eI({viewports:i,x:r,y:s,pixelRatio:f})};this._resizeBuffer();let g=this.device.canvasContext.cssToDevicePixels([r,s],!0),_=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],m=Math.round(n*f),{width:E,height:v}=this.pickingFBO,y=this._getPickingRect({deviceX:_[0],deviceY:_[1],deviceRadius:m,deviceWidth:E,deviceHeight:v}),b={x:r-n,y:s-n,width:2*n+1,height:2*n+1},A=[],T=new Set;for(let e=0;e<o;e++){let n,g;if((n=y?function({pickedColors:e,decodePickingColor:t,deviceX:i,deviceY:r,deviceRadius:s,deviceRect:n}){let{x:o,y:a,width:l,height:h}=n,u=s*s,c=-1,f=0;for(let t=0;t<h;t++){let s=t+a-r,n=s*s;if(n>u)f+=4*l;else for(let t=0;t<l;t++){if(e[f+3]-1>=0){let e=t+o-i,r=e*e+n;r<=u&&(u=r,c=f)}f+=4}}if(c>=0){let i=e.slice(c,c+4),r=t(i);if(r){let e=Math.floor(c/4/l),t=c/4-e*l;return{...r,pickedColor:i,pickedX:o+t,pickedY:a+e}}d.A.error("Picked non-existent layer. Is picking buffer corrupt?")()}return eM}({...this._drawAndSample({layers:p,views:t,viewports:i,onViewportActive:h,deviceRect:y,cullRect:b,effects:u,pass:`picking:${a}`}),deviceX:_[0],deviceY:_[1],deviceRadius:m,deviceRect:y}):{pickedColor:null,pickedObjectIndex:-1}).pickedLayer&&l&&this.depthFBO){let{pickedColors:e}=this._drawAndSample({layers:[n.pickedLayer],views:t,viewports:i,onViewportActive:h,deviceRect:{x:n.pickedX,y:n.pickedY,width:1,height:1},cullRect:b,effects:u,pass:`picking:${a}:z`},!0);e[3]&&(g=e[0])}for(let t of(n.pickedLayer&&e+1<o&&(T.add(n.pickedLayer),n.pickedLayer.disablePickingIndex(n.pickedObjectIndex)),(c=function(e){let{pickInfo:t,lastPickedInfo:i,mode:r,layers:s}=e,{pickedColor:n,pickedLayer:o,pickedObjectIndex:a}=t,l=o?[o]:[];if("hover"===r){let e=i.index,t=i.layerId,r=o?o.props.id:null;if(r!==t||a!==e){if(r!==t){let e=s.find(e=>e.props.id===t);e&&l.unshift(e)}i.layerId=r,i.index=a,i.info=null}}let h=eI(e),u=new Map;return u.set(null,h),l.forEach(e=>{let t={...h};e===o&&(t.color=n,t.index=a,t.picked=!0);let s=(t=eO({layer:e,info:t,mode:r})).layer;e===o&&"hover"===r&&(i.info=t),u.set(s.id,t),"hover"===r&&s.updateAutoHighlight(t)}),u}({pickInfo:n,lastPickedInfo:this.lastPickedInfo,mode:a,layers:p,viewports:i,x:r,y:s,z:g,pixelRatio:f})).values()))t.layer&&A.push(t);if(!n.pickedColor)break}for(let e of T)e.restorePickingColors();return{result:A,emptyInfo:c.get(null)}}_pickVisibleObjects({layers:e,views:t,viewports:i,x:r,y:s,width:n=1,height:o=1,mode:a="query",maxObjects:l=null,onViewportActive:h,effects:u}){let c=this._getPickable(e);if(!c||0===i.length)return[];this._resizeBuffer();let f=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([r,s],!0),g=p.x,_=p.y+p.height,m=this.device.canvasContext.cssToDevicePixels([r+n,s+o],!0),E=m.x+m.width,v=m.y,y=function({pickedColors:e,decodePickingColor:t}){let i=new Map;if(e){for(let r=0;r<e.length;r+=4)if(e[r+3]-1>=0){let s=e.slice(r,r+4),n=s.join(",");if(!i.has(n)){let e=t(s);e?i.set(n,{...e,color:s}):d.A.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(i.values())}(this._drawAndSample({layers:c,views:t,viewports:i,onViewportActive:h,deviceRect:{x:g,y:v,width:E-g,height:_-v},cullRect:{x:r,y:s,width:n,height:o},effects:u,pass:`picking:${a}`})),b=new Map,A=[],T=Number.isFinite(l);for(let e=0;e<y.length&&(!T||!(A.length>=l));e++){let t=y[e],i={color:t.pickedColor,layer:null,index:t.pickedObjectIndex,picked:!0,x:r,y:s,pixelRatio:f},n=(i=eO({layer:t.pickedLayer,info:i,mode:a})).layer.id;b.has(n)||b.set(n,new Set);let o=b.get(n),l=i.object??i.index;o.has(l)||(o.add(l),A.push(i))}return A}_drawAndSample({layers:e,views:t,viewports:i,onViewportActive:r,deviceRect:s,cullRect:n,effects:o,pass:a},l=!1){let h=l?this.depthFBO:this.pickingFBO,u={layers:e,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:r,pickingFBO:h,deviceRect:s,cullRect:n,effects:o,pass:a,pickZ:l,preRenderStats:{}};for(let e of o)e.useInPicking&&(u.preRenderStats[e.id]=e.preRender(u));let{decodePickingColor:c}=this.pickLayersPass.render(u),{x:d,y:f,width:p,height:g}=s,_=new(l?Float32Array:Uint8Array)(p*g*4);return this.device.readPixelsToArrayWebGL(h,{sourceX:d,sourceY:f,sourceW
1524idth:p,sourceHeight:g,target:_}),{pickedColors:_,decodePickingColor:c}}_getPickingRect({deviceX:e,deviceY:t,deviceRadius:i,deviceWidth:r,deviceHeight:s}){let n=Math.max(0,e-i),o=Math.max(0,t-i),a=Math.min(r,e+i+1)-n,l=Math.min(s,t+i+1)-o;return a<=0||l<=0?null:{x:n,y:o,width:a,height:l}}}let eF={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},eD="__root";class eB{constructor({deck:e,parentElement:t}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,this.parentElement=t}getWidgets(){return this.resolvedWidgets}setProps(e){e.widgets&&!(0,R.b)(e.widgets,this.widgets,1)&&this._setWidgets(e.widgets)}finalize(){for(let e of this.getWidgets())this._remove(e);for(let e in this.defaultWidgets.length=0,this.resolvedWidgets.length=0,this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(t=>t.id===e.id)||(this._add(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}_setWidgets(e){let t={};for(let e of this.resolvedWidgets)t[e.id]=e;for(let e of(this.resolvedWidgets.length=0,this.defaultWidgets))t[e.id]=null,this.resolvedWidgets.push(e);for(let i of e){let e=t[i.id];e?e.viewId!==i.viewId||e.placement!==i.placement?(this._remove(e),this._add(i)):i!==e&&(e.setProps(i.props),i=e):this._add(i),t[i.id]=null,this.resolvedWidgets.push(i)}for(let e in t){let i=t[e];i&&this._remove(i)}this.widgets=e}_add(e){let{viewId:t=null,placement:i="top-left"}=e,r=e.onAdd({deck:this.deck,viewId:t});r&&this._getContainer(t,i).append(r),e._element=r}_remove(e){e.onRemove(),e._element&&e._element.remove(),e._element=void 0}_getContainer(e,t){let i=e||eD,r=this.containers[i];r||((r=document.createElement("div")).style.pointerEvents="none",r.style.position="absolute",r.style.overflow="hidden",this.parentElement?.append(r),this.containers[i]=r);let s=r.querySelector(`.${t}`);return s||((s=document.createElement("div")).className=t,s.style.position="absolute",s.style.zIndex="2",Object.assign(s.style,eF[t]),r.append(s)),s}_updateContainers(){let e=this.deck.width,t=this.deck.height;for(let i in this.containers){let r=this.lastViewports[i]||null,s=i===eD||r,n=this.containers[i];s?(n.style.display="block",n.style.left=`${r?r.x:0}px`,n.style.top=`${r?r.y:0}px`,n.style.width=`${r?r.width:e}px`,n.style.height=`${r?r.height:t}px`):n.style.display="none"}}onRedraw({viewports:e,layers:t}){let i=e.reduce((e,t)=>(e[t.id]=t,e),{}),{lastViewports:r}=this;for(let s of this.getWidgets()){let{viewId:n}=s;if(n){let e=i[n];e&&(s.onViewportChange&&!e.equals(r[n])&&s.onViewportChange(e),s.onRedraw?.({viewports:[e],layers:t}))}else{if(s.onViewportChange)for(let t of e)t.equals(r[t.id])||s.onViewportChange(t);s.onRedraw?.({viewports:e,layers:t})}}this.lastViewports=i,this._updateContainers()}onHover(e,t){for(let i of this.getWidgets()){let{viewId:r}=i;r&&r!==e.viewport?.id||i.onHover?.(e,t)}}onEvent(e,t){let i=ec.qY[t.type];if(i)for(let r of this.getWidgets()){let{viewId:s}=r;s&&s!==e.viewport?.id||r[i.handler]?.(e,t)}}}let eU={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class ek{constructor(){this.id="default-tooltip",this.placement="fill",this.props={},this.isVisible=!1}onAdd({deck:e}){let t=document.createElement("div");return t.className="deck-tooltip",Object.assign(t.style,eU),this.deck=e,this.element=t,t}onRemove(){this.deck=void 0,this.element=void 0}setProps(){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&e!==this.lastViewport&&this.setTooltip(null)}onHover(e){let{deck:t}=this,i=t&&t.props.getTooltip;if(!i)return;let r=i(e);this.lastViewport=e.viewport,this.setTooltip(r,e.x,e.y)}setTooltip(e,t,i){let r=this.element;if(r){if("string"==typeof e)r.innerText=e;else if(e)e.text&&(r.innerText=e.text),e.html&&(r.innerHTML=e.html),e.className&&(r.className=e.className);else{this.isVisible=!1,r.style.display="none";return}this.isVisible=!0,r.style.display="block",r.style.transform=`translate(${t}px, ${i}px)`,e&&"object"==typeof e&&"style"in e&&Object.assign(r.style,e.style)}}}var eG=i(46608),eV=i(99276),ez=i(7811),eW=i(13647);let ej=globalThis.loaders?.parseImageNode,eH="undefined"!=typeof Image,e$="undefined"!=typeof ImageBitmap,eX=!!eW.Bd||!!ej,eK=/^data:image\/svg\+xml/,eY=/\.svg((\?|#).*)?$/;function eZ(e){return e&&(eK.test(e)||eY.test(e))}function eq(e,t){if(eZ(t))throw Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function eQ(e,t,i){let r=function(e,t){if(eZ(t)){let t=new TextDecoder().decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(t=unescape(encodeURIComponent(t)))}catch(e){throw Error(e.message)}return`data:image/svg+xml;base64,${btoa(t)}`}return eq(e,t)}
1524(e,i),s=self.URL||self.webkitURL,n="string"!=typeof r&&s.createObjectURL(r);try{return await eJ(n||r,t)}finally{n&&s.revokeObjectURL(n)}}async function eJ(e,t){let i=new Image;return(i.src=e,t.image&&t.image.decode&&i.decode)?(await i.decode(),i):await new Promise((e,t)=>{try{i.onload=()=>e(i),i.onerror=e=>{let i=e instanceof Error?e.message:"error";t(Error(i))}}catch(e){t(e)}})}let e0=!0;async function e1(e,t,i){let r;r=eZ(i)?await eQ(e,t,i):eq(e,i);let s=t&&t.imagebitmap;return await e3(r,s)}async function e3(e,t=null){if((function(e){if(!e)return!0;for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}(t)||!e0)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(e){console.warn(e),e0=!1}return await createImageBitmap(e)}function e2(e){let t=e6(e);return function(e){let t=e6(e);return t.byteLength>=24&&0x89504e47===t.getUint32(0,!1)?{mimeType:"image/png",width:t.getUint32(16,!1),height:t.getUint32(20,!1)}:null}(t)||function(e){let t=e6(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,!1)&&255===t.getUint8(2)))return null;let{tableMarkers:i,sofMarkers:r}=function(){let e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}(),s=2;for(;s+9<t.byteLength;){let e=t.getUint16(s,!1);if(r.has(e))return{mimeType:"image/jpeg",height:t.getUint16(s+5,!1),width:t.getUint16(s+7,!1)};if(!i.has(e))break;s+=2,s+=t.getUint16(s,!1)}return null}(t)||function(e){let t=e6(e);return t.byteLength>=10&&0x47494638===t.getUint32(0,!1)?{mimeType:"image/gif",width:t.getUint16(6,!0),height:t.getUint16(8,!0)}:null}(t)||function(e){let t=e6(e);return t.byteLength>=14&&16973===t.getUint16(0,!1)&&t.getUint32(2,!0)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,!0),height:t.getUint32(22,!0)}:null}(t)||function(e){var t;let i=!function(e,t,i=0){let r=[...t].map(e=>e.charCodeAt(0));for(let t=0;t<r.length;++t)if(r[t]!==e[t+i])return!1;return!0}(t=new Uint8Array(e instanceof DataView?e.buffer:e),"ftyp",4)||(96&t[8])==0?null:function(e){switch(String.fromCharCode(...e.slice(8,12)).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}(t);return i?{mimeType:i.mimeType,width:0,height:0}:null}(t)}function e6(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw Error("toDataView")}async function e4(e,t){let{mimeType:i}=e2(e)||{},r=globalThis.loaders?.parseImageNode;return(0,ez.v)(r),await r(e,i)}let e5={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:"4.4.2",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],parse:async function e(e,t,i){let r,s=((t=t||{}).image||{}).type||"auto",{url:n}=i||{};switch(function(e){switch(e){case"auto":case"data":if(e$)return"imagebitmap";if(eH)return"image";if(eX)return"data";throw Error("Install '@loaders.gl/polyfills' to parse images under Node.js");default:return!function(e){switch(e){case"auto":return e$;case"imagebitmap":case"image":case"data":return;default:throw Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}(e),e}}(s)){case"imagebitmap":r=await e1(e,t,n);break;case"image":r=await eQ(e,t,n);break;case"data":r=await e4(e,t);break;default:(0,ez.v)(!1)}return"data"===s&&(r=function(e){switch(function(e){var t;let i=(t=e,"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?"imagebitmap":"undefined"!=typeof Image&&t instanceof Image?"image":t&&"object"==typeof t&&t.data&&t.width&&t.height?"data":null);if(!i)throw Error("Not an image");return i}(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),i=t.getContext("2d");if(!i)throw Error("getImageData");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0),i.getImageData(0,0,e.width,e.height);default:throw Error("getImageData")}}(r)),r},tests:[e=>!!e2(new DataView(e))],options:{image:{type:"auto",decode:!0}}},e8={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:function(e){let t=e[0],i=e[e.length-1];return"{"===t&&"}"===i||"["===t&&"]"===i},parseTextSync:JSON.parse},e7=function(){let e="9.0.35",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(d.A.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:d.A,_registerLoggers:f.k},(0,eV.mk)([e8,[e5,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}();var e9=i(68038),te=i(75591);class tt{stats=new Map;getStats(e){return this.get(e)}get(e){return this.stats.has(e)||this.stats.set(e,new E({id:e})),this.stats.get(e)}}let ti=new tt,tr=function(){let e="9.0.28";if(globalThis.luma&&globalThis.luma.VERSION!==e)throw Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${e}`);return globalThis.luma||((0,e9.B)()&&te.R.log(1,`${e} - set luma.log.level=1 (or higher) to trace rendering`)(),globalThis.luma=globalThis.luma||{VERSION:e,version:e,log:te.R,stats:ti}),e}();var ts=i(36063),tn=i(49528),to=i(88857);let ta=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],tl=/^(rg?b?a?)([0-9]*)([a-z]*)(-srgb)?(-webgl|-unsized)?$/;function th(e){let t=tl.exec(e);if(t){let[,e,i,r,s,n]=t;if(e){let t=`${r}${i}`,o=(0,to.l)(t);return{format:e,components:e.length,srgb:"-srgb"===s,unsized:"-unsized"===n,webgl:"-webgl"===n,...o}}}var i=e;let r=tu[i];if(!r)throw Error(`Unknown format ${i}`);return{format:r.format||"",components:r.components||r.format?.length||1,byteLength:r.bpp||1,srgb:!1,unsized:!1}}let tu={"rgba4unorm-webgl":{format:"rgba",bpp:2},"rgb565unorm-webgl":{format:"rgb",bpp:2},"rgb5a1unorm-webgl":{format:"rgba",bbp:2},rgb9e5ufloat:{format:"rgb",bbp:4},rg11b10ufloat:{format:"rgb",bbp:4},rgb10a2unorm:{format:"rgba",bbp:4},"rgb10a2uint-webgl":{format:"rgba",bbp:4},stencil8:{components:1,bpp:1,a:"stencil"},depth16unorm:{components:1,bpp:2,a:"depth"},depth24plus:{components:1,bpp:3,a:"depth"},depth32float:{components:1,bpp:4,a:"depth"},"depth24plus-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth24unorm-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth32float-stencil8":{components:2,bpp:4,a:"depth-stencil"}};class tc{}class td{features;disabledFeatures;constructor(e=[],t){this.features=new Set(e),this.disabledFeatures=t||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures[e]&&this.features.has(e)}}class tf{static defaultProps={id:null,canvas:null,container:null,manageState:!0,width:800,height:600,requestMaxLimits:!0,debug:!!te.R.get("debug"),spector:!!(te.R.get("spector")||te.R.get("spectorjs")),break:[],initalizeFeatures:!0,disabledFeatures:{"compilation-status-async-webgl":!0},gl:null,onError:e=>te.R.error(e.message)};get[Symbol.toStringTag](){return"Device"}static VERSION=tr;constructor(e){this.props={...tf.defaultProps,...e},this.id=this.props.id||(0,ts.L)(this[Symbol.toStringTag].toLowerCase())}id;props;userData={};statsManager=ti;_lumaData={};isTextureFormatCompressed(e){return ta.some(t=>e.startsWith(t))}loseDevice(){return!1}getCanvasContext(){if(!this.canvasContext)throw Error("Device has no CanvasContext");return this.canvasContext}createTexture(e){return(e instanceof Promise||"string"==typeof e)&&(e={data:e}),this._createTexture(e)}createCommandEncoder(e={}){throw Error("not implemented")}readPixelsToArrayWebGL(e,t){throw Error("not implemented")}readPixelsToBufferWebGL(e,t){throw Error("not implemented")}setParametersWebGL(e){throw Error("not implemented")}getParametersWebGL(e){throw Error("not implemented")}withParametersWebGL(e,t){throw Error("not implemented")}clearWebGL(e){throw Error("not implemented")}resetWebGL(){throw Error("not implemented")}timestamp=0;incrementTimestamp(){return this.timestamp++}onError(e){this.props.onError(e)}_getBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let t={...e};
1524return(e.usage||0)&tn.h.INDEX&&!e.indexType&&(e.data instanceof Uint32Array?t.indexType="uint32":e.data instanceof Uint16Array?t.indexType="uint16":te.R.warn("indices buffer content must be of integer type")()),t}}var tp=i(30244);let tg=new Map;class t_{static defaultProps={...tf.defaultProps,type:"best-available",devices:void 0};static stats=ti;static log=te.R;static registerDevices(e){for(let t of e)(0,tp.v)(t.type&&t.isSupported&&t.create),tg.set(t.type,t)}static getAvailableDevices(){return Array.from(tg).map(e=>e.type)}static getSupportedDevices(){return Array.from(tg).filter(e=>e.isSupported()).map(e=>e.type)}static setDefaultDeviceProps(e){Object.assign(tf.defaultProps,e)}static async attachDevice(e){let t=tm(e.devices)||tg;if(e.handle instanceof WebGL2RenderingContext){let i=t.get("webgl");if(i)return await i.attach(e.handle)}if(null===e.handle){let e=t.get("unknown");if(e)return await e.attach(null)}throw Error("Failed to attach device. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static async createDevice(e={}){let t,i;(e={...t_.defaultProps,...e}).gl&&(e.type="webgl");let r=tm(e.devices)||tg;switch(e.type){case"webgpu":if(t=r.get("webgpu"))return await t.create(e);break;case"webgl":if(i=r.get("webgl"))return await i.create(e);break;case"unknown":let s=r.get("unknown");if(s)return await s.create(e);break;case"best-available":if(t=r.get("webgpu"),t?.isSupported?.())return await t.create(e);if(i=r.get("webgl"),i?.isSupported?.())return await i.create(e)}throw Error("No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static enforceWebGL2(e=!0){let t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(e,t){return"webgl"===e||"experimental-webgl"===e?this.originalGetContext("webgl2",t):this.originalGetContext(e,t)}}}function tm(e){if(!e||e?.length===0)return null;let t=new Map;for(let i of e)t.set(i.type,i);return t}let tE=(0,e9.B)()&&"undefined"!=typeof document,tv=()=>tE&&"complete"===document.readyState,ty={canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,colorSpace:"srgb",alphaMode:"opaque"};class tb{id;props;canvas;htmlCanvas;offscreenCanvas;type;width=1;height=1;resizeObserver;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};static get isPageLoaded(){return tv()}static pageLoaded=tv()||"undefined"==typeof window?Promise.resolve():new Promise(e=>{window.addEventListener("load",()=>e())});constructor(e){if(this.props={...ty,...e},e=this.props,!(0,e9.B)()){this.id="node-canvas-context",this.type="node",this.width=this.props.width,this.height=this.props.height,this.canvas=null;return}if(e.canvas)"string"==typeof e.canvas?this.canvas=function(e){let t=document.getElementById(e);if(!t&&!tv())throw Error(`Accessing '${e}' before page was loaded`);if(!(t instanceof HTMLCanvasElement))throw Error("Object is not a canvas element");return t}(e.canvas):this.canvas=e.canvas;else{let t=function(e){let{width:t,height:i}=e,r=document.createElement("canvas");return r.id="lumagl-auto-created-canvas",r.width=t||1,r.height=i||1,r.style.width=Number.isFinite(t)?`${t}px`:"100%",r.style.height=Number.isFinite(i)?`${i}px`:"100%",r}(e),i=function(e){if("string"==typeof e){let t=document.getElementById(e);if(!t&&!tv())throw Error(`Accessing '${e}' before page was loaded`);if(!t)throw Error(`${e} is not an HTML element`);return t}return e||document.body}(e?.container||null);i.insertBefore(t,i.firstChild),this.canvas=t,e?.visible||(this.canvas.style.visibility="hidden")}this.canvas instanceof HTMLCanvasElement?(this.id=this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):(this.id="offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas),this.canvas instanceof HTMLCanvasElement&&e.autoResize&&(this.resizeObserver=new ResizeObserver(e=>{for(let t of e)t.target===this.canvas&&this.update()}),this.resizeObserver.observe(this.canvas))}getDevicePixelRatio(e){return"undefined"!=typeof OffscreenCanvas&&this.canvas instanceof OffscreenCanvas||!(e=void 0===e?this.props.useDevicePixels:e)||e<=0?1:!0===e?"undefined"!=typeof window&&window.devicePixelRatio||1:e}getPixelSize(){switch(this.type){case"node":return[this.width,this.height];case"offscreen-canvas":return[this.canvas.width,this.canvas.height];case"html-canvas":let e=this.getDevicePixelRatio(),t=this.canvas;return t.parentElement?[t.clientWidth*e,t.clientHeight*e]:[this.canvas.width,this.canvas.height];
1524default:throw Error(this.type)}}getAspect(){let[e,t]=this.getPixelSize();return e/t}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),t=this._canvasSizeInfo.clientWidth||this.htmlCanvas?.clientWidth;return t?e/t:1}catch{return 1}}cssToDevicePixels(e,t=!0){let i=this.cssToDeviceRatio(),[r,s]=this.getDrawingBufferSize();return function(e,t,i,r,s){let n,o=tA(e[0],t,i),a=tT(e[1],t,r,s),l=tA(e[0]+1,t,i),h=l===i-1?l:l-1;return l=tT(e[1]+1,t,r,s),s?(l=0===l?l:l+1,n=a,a=l):n=l===r-1?l:l-1,{x:o,y:a,width:Math.max(h-o+1,1),height:Math.max(n-a+1,1)}}(e,i,r,s,t)}setDevicePixelRatio(e,t={}){if(!this.htmlCanvas)return;let i="width"in t?t.width:this.htmlCanvas.clientWidth,r="height"in t?t.height:this.htmlCanvas.clientHeight;i&&r||(te.R.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,i=this.htmlCanvas.width||1,r=this.htmlCanvas.height||1);let s=this._canvasSizeInfo;if(s.clientWidth!==i||s.clientHeight!==r||s.devicePixelRatio!==e){let t=e,s=Math.floor(i*t),n=Math.floor(r*t);this.htmlCanvas.width=s,this.htmlCanvas.height=n;let[o,a]=this.getDrawingBufferSize();(o!==s||a!==n)&&(t=Math.min(o/i,a/r),this.htmlCanvas.width=Math.floor(i*t),this.htmlCanvas.height=Math.floor(r*t),te.R.warn("Device pixel ratio clamped")()),this._canvasSizeInfo.clientWidth=i,this._canvasSizeInfo.clientHeight=r,this._canvasSizeInfo.devicePixelRatio=e}}getDrawingBufferSize(){let e=this.device.gl;if(!e)throw Error("canvas size");return[e.drawingBufferWidth,e.drawingBufferHeight]}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}}function tA(e,t,i){return Math.min(Math.round(e*t),i-1)}function tT(e,t,i,r){return r?Math.max(0,i-1-Math.round(e*t)):Math.min(Math.round(e*t),i-1)}let tR={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:0xffffffff,36005:0xffffffff,2962:519,2967:0,2963:0xffffffff,34816:519,36003:0,36004:0xffffffff,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},tS=(e,t,i)=>t?e.enable(i):e.disable(i),tw=(e,t,i)=>e.hint(i,t),tP=(e,t,i)=>e.pixelStorei(i,t),tC=(e,t,i)=>e.bindFramebuffer(36006===i?36009:36008,t),tx=(e,t,i)=>{e.bindBuffer({34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[i],t)};function tL(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}let tM={3042:tS,32773:(e,t)=>e.blendColor(...t),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:tS,2885:(e,t)=>e.cullFace(t),2929:tS,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>
vendor: 1,778 bytes, line 1524
1524e.depthMask(t),3024:tS,35723:tw,35725:(e,t)=>e.useProgram(t),36007:(e,t)=>e.bindRenderbuffer(36161,t),36389:(e,t)=>e.bindTransformFeedback?.(36386,t),34229:(e,t)=>e.bindVertexArray(t),36006:tC,36010:tC,34964:tx,36662:tx,36663:tx,35053:tx,35055:tx,2886:(e,t)=>e.frontFace(t),33170:tw,2849:(e,t)=>e.lineWidth(t),32823:tS,32824:"polygonOffset",10752:"polygonOffset",35977:tS,32926:tS,32928:tS,32938:"sampleCoverage",32939:"sampleCoverage",3089:tS,3088:(e,t)=>e.scissor(...t),2960:tS,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(e,t)=>e.viewport(...t),34383:tS,10754:tS,12288:tS,12289:tS,12290:tS,12291:tS,12292:tS,12293:tS,12294:tS,12295:tS,3333:tP,3317:tP,37440:tP,37441:tP,37443:tP,3330:tP,3332:tP,3331:tP,3314:tP,32878:tP,3316:tP,3315:tP,32877:tP,framebuffer:(e,t)=>{let i=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,i)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{e.blendEquationSeparate(..."number"==typeof t?[t,t]:t)},blendFunc:(e,t)=>{let i=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...i)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>
1524e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(...t),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{let[i,r]=t=tL(t)?t:[t,t];e.stencilMaskSeparate(1028,i),e.stencilMaskSeparate(1029,r)},stencilFunc:(e,t)=>{let[i,r,s,n,o,a]=t=tL(t)&&3===t.length?[...t,...t]:t;e.stencilFuncSeparate(1028,i,r,s),e.stencilFuncSeparate(1029,n,o,a)},stencilOp:(e,t)=>{let[i,r,s,n,o,a]=t=tL(t)&&3===t.length?[...t,...t]:t;e.stencilOpSeparate(1028,i,r,s),e.stencilOpSeparate(1029,n,o,a)},viewport:(e,t)=>e.viewport(...t)};function tI(e,t,i){return void 0!==t[e]?t[e]:i[e]}let tO={blendEquation:(e,t,i)=>e.blendEquationSeparate(tI(32777,t,i),tI(34877,t,i)),blendFunc:(e,t,i)=>e.blendFuncSeparate(tI(32969,t,i),tI(32968,t,i),tI(32971,t,i),tI(32970,t,i
1524)),polygonOffset:(e,t,i)=>e.polygonOffset(tI(32824,t,i),tI(10752,t,i)),sampleCoverage:(e,t,i)=>e.sampleCoverage(tI(32938,t,i),tI(32939,t,i)),stencilFuncFront:(e,t,i)=>e.stencilFuncSeparate(1028,tI(2962,t,i),tI(2967,t,i),tI(2963,t,i)),stencilFuncBack:(e,t,i)=>e.stencilFuncSeparate(1029,tI(34816,t,i),tI(36003,t,i),tI(36004,t,i)),stencilOpFront:(e,t,i)=>e.stencilOpSeparate(1028,tI(2964,t,i),tI(2965,t,i),tI(2966,t,i)),stencilOpBack:(e,t,i)=>e.stencilOpSeparate(1029,tI(34817,t,i),tI(34818,t,i),tI(34819,t,i))},tN={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,i)=>e({[t]:i}),hint:(e,t,i)=>e({[t]:i}),useProgram:(e,t)=>e({35725:t}),bindRenderbuffer:(e,t,i)=>e({36007:i}),bindTransformFeedback:(e,t,i)=>e({36389:i}),bindVertexArray:(e,t)=>e({34229:t}),bindFramebuffer:(e,t,i)=>{switch(t){case 36160:return e({36006:i,36010:i});case 36009:return e({36006:i});case 36008:return e({36010:i});default:return null}},bindBuffer:(e,t,i)=>{let r={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[t];return r?e({[r]:i}):{valueChanged:!0}},blendColor:(e,t,i,r,s)=>e({32773:new Float32Array([t,i,r,s])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,i)=>e({32777:t,34877:i}),blendFunc:(e,t,i)=>e({32969:t,32968:i,32971:t,32970:i}),blendFuncSeparate:(e,t,i,r,s)=>e({32969:t,32968:i,32971:r,32970:s}),clearColor:(e,t,i,r,s)=>e({3106:new Float32Array([t,i,r,s])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,i,r,s)=>e({3107:[t,i,r,s]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,i)=>e({2928:new Float32Array([t,i])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,i)=>e({32824:t,10752:i}),sampleCoverage:(e,t,i)=>e({32938:t,32939:i}),scissor:(e,t,i,r,s)=>e({3088:new Int32Array([t,i,r,s])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,i)=>e({[1028===t?2968:36005]:i}),stencilFunc:(e,t,i,r)=>e({2962:t,2967:i,2963:r,34816:t,36003:i,36004:r}),stencilFuncSeparate:(e,t,i,r,s)=>e({[1028===t?2962:34816]:i,[1028===t?2967:36003]:r,[1028===t?2963:36004]:s}),stencilOp:(e,t,i,r)=>e({2964:t,2965:i,2966:r,34817:t,34818:i,34819:r}),stencilOpSeparate:(e,t,i,r,s)=>e({[1028===t?2964:34817]:i,[1028===t?2965:34818]:r,[1028===t?2966:34819]:s}),viewport:(e,t,i,r,s)=>e({2978:[t,i,r,s]})},tF=(e,t)=>e.isEnabled(t),tD={3042:tF,2884:tF,2929:tF,3024:tF,32823:tF,32926:tF,32928:tF,3089:tF,2960:tF,35977:tF},tB=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function tU(e,t){if(function(e){for(let t in e)return!1;return!0}(t))return;let i={};for(let r in t){let s=Number(r),n=tM[r];n&&("string"==typeof n?i[n]=!0:n(e,t[r],s))}let r=e.state&&e.state.cache;if(r)for(let s in i)(0,tO[s])(e,t,r)}function tk(e,t=tR){if("number"==typeof t){let i=tD[t];return i?i(e,t):e.getParameter(t)}let i=Array.isArray(t)?t:Object.keys(t),r={};for(let t of i){let i=tD[t];r[t]=i?i(e,Number(t)):e.getParameter(Number(t))}return r}class tG{gl;program=null;stateStack=[];enable=!0;cache;log;constructor(e,{copyState:t=!1,log:i=()=>{}}={}){this.gl=e,this.cache=t?tk(e):Object.assign({},tR),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){(0,tp.v)(this.stateStack.length>0);let e=this.stateStack[this.stateStack.length-1];tU(this.gl,e),this.stateStack.pop()}_updateCache(e){let t,i=!1,r=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let s in e){(0,tp.v)(void 0!==s);let n=e[s],o=this.cache[s];!function(e,t){if(e===t)return!0;let i=Array.isArray(e)||ArrayBuffer.isView(e),r=Array.isArray(t)||ArrayBuffer.isView(t);if(i&&r&&e.length===t.length){for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}return!1}(n,o)&&(i=!0,t=o,!r||s in r||(r[s]=o),this.cache[s]=n)}return{valueChanged:i,oldValue:t}}}function tV(e){return e.state}function tz(e,t){let{enable:i=!0,copyState:r}=t;if((0,tp.v)(void 0!==r),!e.state){for(let t in e.state=new tG(e,{copyState:r}),function(e){let t=e.useProgram.bind(e);e.useProgram=function(i){let r=tV(e);r.program!==i&&(t(i),r.program=i)}}(e),tN){let i=tN[t];!function(e,t,i){if(!e[t])return;let r=e[t].bind(e);e[t]=function(...t){let{valueChanged:s,oldValue:n}=i(tV(e)._updateCache,...t);return s&&r(...t),n}
1524,Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}(e,t,i)}tH(e,"getParameter"),tH(e,"isEnabled")}return tV(e).enable=i,e}function tW(e){let t=tV(e);t||(tz(e,{copyState:!1}),t=tV(e)),t.push()}function tj(e){let t=tV(e);(0,tp.v)(t),t.pop()}function tH(e,t){let i=e[t].bind(e);e[t]=function(t){if(void 0===t||tB.has(t))return i(t);let r=tV(e);return t in r.cache||(r.cache[t]=i(t)),r.enable?r.cache[t]:i(t)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}let t$={powerPreference:"high-performance",onContextLost:()=>console.error("WebGL context lost"),onContextRestored:()=>console.info("WebGL context restored")};function tX(e,t,i){return void 0===i[t]&&(i[t]=e.getExtension(t)||null),i[t]}function tK(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function tY(e){switch(e){case"uint8":case"unorm8":return 5121;case"sint8":case"snorm8":return 5120;case"uint16":case"unorm16":return 5123;case"sint16":case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw Error(String(e))}let tZ="texture-compression-bc",tq="texture-compression-astc",tQ="texture-compression-etc2",tJ="texture-compression-pvrtc-webgl",t0="texture-compression-atc-webgl",t1="float32-renderable-webgl",t3="float16-renderable-webgl",t2="snorm8-renderable-webgl",t6="norm16-renderable-webgl",t4="snorm16-renderable-webgl",t5="float32-filterable",t8="float16-filterable-webgl",t7="WEBGL_compressed_texture_s3tc",t9="WEBGL_compressed_texture_s3tc_srgb",ie="EXT_texture_compression_rgtc",it="EXT_texture_compression_bptc",ii="EXT_texture_norm16",ir="EXT_render_snorm",is={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat_renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[ir],"norm16-renderable-webgl":[ii],"snorm16-renderable-webgl":[ii,ir],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[t7,t9,ie,it],"texture-compression-bc5-webgl":[ie],"texture-compression-bc7-webgl":[it],"texture-compression-etc2":["WEBGL_compressed_texture_etc"],"texture-compression-astc":["WEBGL_compressed_texture_astc"],"texture-compression-etc1-webgl":["WEBGL_compressed_texture_etc1"],"texture-compression-pvrtc-webgl":["WEBGL_compressed_texture_pvrtc"],"texture-compression-atc-webgl":["WEBGL_compressed_texture_atc"]},io={"rgb8unorm-unsized":{gl:6407,b:4,c:2,bpp:4,dataFormat:6407,types:[5121,33635]},"rgba8unorm-unsized":{gl:6408,b:4,c:2,bpp:4,dataFormat:6408,types:[5121,32819,32820]},r8unorm:{gl:33321,b:1,c:1,rb:!0},r8snorm:{gl:36756,b:1,c:1,render:t2},r8uint:{gl:33330,b:1,c:1,rb:!0},r8sint:{gl:33329,b:1,c:1,rb:!0},rg8unorm:{gl:33323,b:2,c:2,rb:!0},rg8snorm:{gl:36757,b:2,c:2,render:t2},rg8uint:{gl:33336,b:2,c:2,rb:!0},rg8sint:{gl:33335,b:2,c:2,rb:!0},r16uint:{gl:33332,b:2,c:1,rb:!0},r16sint:{gl:33331,b:2,c:1,rb:!0},r16float:{gl:33325,b:2,c:1,render:t3,filter:"float16-filterable-webgl",rb:!0},"r16unorm-webgl":{gl:33322,b:2,c:1,f:t6,rb:!0},"r16snorm-webgl":{gl:36760,b:2,c:1,f:t4},"rgba4unorm-webgl":{gl:32854,b:2,c:4,wgpu:!1,rb:!0},"rgb565unorm-webgl":{gl:36194,b:2,c:4,wgpu:!1,rb:!0},"rgb5a1unorm-webgl":{gl:32855,b:2,c:4,wgpu:!1,rb:!0},"rgb8unorm-webgl":{gl:32849,b:3,c:3,wgpu:!1},"rgb8snorm-webgl":{gl:36758,b:3,c:3,wgpu:!1},rgba8unorm:{gl:32856,b:4,c:2,bpp:4},"rgba8unorm-srgb":{gl:35907,b:4,c:4,bpp:4},rgba8snorm:{gl:36759,b:4,c:4,render:t2},rgba8uint:{gl:36220,b:4,c:4,bpp:4},rgba8sint:{gl:36238,b:4,c:4,bpp:4},bgra8unorm:{b:4,c:4},"bgra8unorm-srgb":{b:4,c:4},rg16uint:{gl:33338,b:4,c:1,bpp:4},rg16sint:{gl:33337,b:4,c:2,bpp:4},rg16float:{gl:33327,bpp:4,b:4,c:2,render:t3,filter:t8,rb:!0},"rg16unorm-webgl":{gl:33324,b:2,c:2,render:t6},"rg16snorm-webgl":{gl:36761,b:2,c:2,render:t4},r32uint:{gl:33334,b:4,c:1,bpp:4,rb:!0},r32sint:{gl:33333,b:4,c:1,bpp:4,rb:!0},r32float:{gl:33326,bpp:4,b:4,c:1,render:t1,filter:t5},rgb9e5ufloat:{gl:35901,b:4,c:3,p:1,render:"rgb9e5ufloat_renderable-webgl"},rg11b10ufloat:{gl:35898,b:4,c:3,p:1,render:t1,rb:!0}
1524,rgb10a2unorm:{gl:32857,b:4,c:4,p:1,rb:!0},"rgb10a2uint-webgl":{b:4,c:4,gl:36975,p:1,wgpu:!1,bpp:4,rb:!0},"rgb16unorm-webgl":{gl:32852,b:2,c:3,f:t6},"rgb16snorm-webgl":{gl:36762,b:2,c:3,f:t6},rg32uint:{gl:33340,b:8,c:2,rb:!0},rg32sint:{gl:33339,b:8,c:2,rb:!0},rg32float:{gl:33328,b:8,c:2,render:t1,filter:t5,rb:!0},rgba16uint:{gl:36214,b:8,c:4,rb:!0},rgba16sint:{gl:36232,b:8,c:4,rb:!0},rgba16float:{gl:34842,b:8,c:4,render:t3,filter:t8},"rgba16unorm-webgl":{gl:32859,b:2,c:4,render:t6,rb:!0},"rgba16snorm-webgl":{gl:36763,b:2,c:4,render:t4},"rgb32float-webgl":{gl:34837,render:t1,filter:t5,gl2ext:"EXT_color_buffer_float",dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,b:16,c:4,rb:!0},rgba32sint:{gl:36226,b:16,c:4,rb:!0},rgba32float:{gl:34836,b:16,c:4,render:t1,filter:t5,rb:!0},stencil8:{gl:36168,b:1,c:1,attachment:36128,rb:!0},depth16unorm:{gl:33189,b:2,c:1,attachment:36096,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,b:3,c:1,attachment:36096,dataFormat:6402,types:[5125]},depth32float:{gl:36012,b:4,c:1,attachment:36096,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth24unorm-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,dataFormat:34041,types:[34042],rb:!0},"depth32float-stencil8":{gl:36013,b:5,c:2,p:1,attachment:33306,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:t7,f:tZ},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:t9,f:tZ},"bc1-rgba-unorm":{gl:33777,x:t7,f:tZ},"bc1-rgba-unorm-srgb":{gl:35916,x:t9,f:tZ},"bc2-rgba-unorm":{gl:33778,x:t7,f:tZ},"bc2-rgba-unorm-srgb":{gl:35918,x:t9,f:tZ},"bc3-rgba-unorm":{gl:33779,x:t7,f:tZ},"bc3-rgba-unorm-srgb":{gl:35919,x:t9,f:tZ},"bc4-r-unorm":{gl:36283,x:ie,f:tZ},"bc4-r-snorm":{gl:36284,x:ie,f:tZ},"bc5-rg-unorm":{gl:36285,x:ie,f:tZ},"bc5-rg-snorm":{gl:36286,x:ie,f:tZ},"bc6h-rgb-ufloat":{gl:36495,x:it,f:tZ},"bc6h-rgb-float":{gl:36494,x:it,f:tZ},"bc7-rgba-unorm":{gl:36492,x:it,f:tZ},"bc7-rgba-unorm-srgb":{gl:36493,x:it,f:tZ},"etc2-rgb8unorm":{gl:37492,f:tQ},"etc2-rgb8unorm-srgb":{gl:37494,f:tQ},"etc2-rgb8a1unorm":{gl:37496,f:tQ},"etc2-rgb8a1unorm-srgb":{gl:37497,f:tQ},"etc2-rgba8unorm":{gl:37493,f:tQ},"etc2-rgba8unorm-srgb":{gl:37495,f:tQ},"eac-r11unorm":{gl:37488,f:tQ},"eac-r11snorm":{gl:37489,f:tQ},"eac-rg11unorm":{gl:37490,f:tQ},"eac-rg11snorm":{gl:37491,f:tQ},"astc-4x4-unorm":{gl:37808,f:tq},"astc-4x4-unorm-srgb":{gl:37840,f:tq},"astc-5x4-unorm":{gl:37809,f:tq},"astc-5x4-unorm-srgb":{gl:37841,f:tq},"astc-5x5-unorm":{gl:37810,f:tq},"astc-5x5-unorm-srgb":{gl:37842,f:tq},"astc-6x5-unorm":{gl:37811,f:tq},"astc-6x5-unorm-srgb":{gl:37843,f:tq},"astc-6x6-unorm":{gl:37812,f:tq},"astc-6x6-unorm-srgb":{gl:37844,f:tq},"astc-8x5-unorm":{gl:37813,f:tq},"astc-8x5-unorm-srgb":{gl:37845,f:tq},"astc-8x6-unorm":{gl:37814,f:tq},"astc-8x6-unorm-srgb":{gl:37846,f:tq},"astc-8x8-unorm":{gl:37815,f:tq},"astc-8x8-unorm-srgb":{gl:37847,f:tq},"astc-10x5-unorm":{gl:37819,f:tq},"astc-10x5-unorm-srgb":{gl:37851,f:tq},"astc-10x6-unorm":{gl:37817,f:tq},"astc-10x6-unorm-srgb":{gl:37849,f:tq},"astc-10x8-unorm":{gl:37818,f:tq},"astc-10x8-unorm-srgb":{gl:37850,f:tq},"astc-10x10-unorm":{gl:37819,f:tq},"astc-10x10-unorm-srgb":{gl:37851,f:tq},"astc-12x10-unorm":{gl:37820,f:tq},"astc-12x10-unorm-srgb":{gl:37852,f:tq},"astc-12x12-unorm":{gl:37821,f:tq},"astc-12x12-unorm-srgb":{gl:37853,f:tq},"pvrtc-rgb4unorm-webgl":{gl:35840,f:tJ},"pvrtc-rgba4unorm-webgl":{gl:35842,f:tJ},"pvrtc-rbg2unorm-webgl":{gl:35841,f:tJ},"pvrtc-rgba2unorm-webgl":{gl:35843,f:tJ},"etc1-rbg-unorm-webgl":{gl:36196,f:"texture-compression-etc1-webgl"},"atc-rgb-unorm-webgl":{gl:35986,f:t0},"atc-rgba-unorm-webgl":{gl:35986,f:t0},"atc-rgbai-unorm-webgl":{gl:34798,f:t0}},ia={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},il={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function ih(e,t,i){let r=io[t];if(!r||void 0===r.gl)return!1;let s=r.x||r.gl2ext;return!s||!!tX(e,s,i)}function iu(e){let t=io[e],i=t?.gl;if(void 0===i)throw Error(`Unsupported texture format ${e}`);return i}function ic(e){let t=io[e],i=iu(e),r=th(e);return{format:i,dataFormat:t?.dataFormat||function(e,t,i,r){if(6408===r||6407===r)return r;switch(e){case"r":return t&&!i?36244:6403;
1524case"rg":return t&&!i?33320:33319;case"rgb":return t&&!i?36248:6407;case"rgba":return t&&!i?36249:6408;default:return 6408}}(r.format,r.integer,r.normalized,i),type:r.dataType?tY(r.dataType):t?.types?.[0]||5121,compressed:r.compressed}}function id(e){let t=ic(e);return(ia[t.dataFormat]||4)*(il[t.type]||1)}let ip={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"};class ig extends td{gl;extensions;testedFeatures=new Set;constructor(e,t,i){super([],i),this.gl=e,this.extensions=t,tX(e,"EXT_color_buffer_float",t)}*[Symbol.iterator](){for(let e of this.getFeatures())this.has(e)&&(yield e);return[]}has(e){if(this.disabledFeatures[e])return!1;if(!this.testedFeatures.has(e)){var t,i;this.testedFeatures.add(e),e in is&&(t=this.gl,i=this.extensions,(is[e]||[]).every(e=>tX(t,e,i)))&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)}return this.features.has(e)}initializeFeatures(){for(let e of this.getFeatures().filter(e=>"polygon-mode-webgl"!==e))this.has(e)}getFeatures(){return[...Object.keys(ip),...Object.keys(is)]}getWebGLFeature(e){let t=ip[e];return"string"==typeof t?!!tX(this.gl,t,this.extensions):!!t}}class i_ extends tc{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderComponents(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return void 0===this.limits[e]&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]}}var im=i(28970),iE=i(17785);class iv extends im.F{static defaultProps={...im.F.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null};get[Symbol.toStringTag](){return"Framebuffer"}width;height;colorAttachments=[];depthStencilAttachment=null;constructor(e,t={}){super(e,t,iv.defaultProps),this.width=this.props.width,this.height=this.props.height}resize(e){let t=!e;if(e){let[i,r]=Array.isArray(e)?e:[e.width,e.height];t=t||r!==this.height||i!==this.width,this.width=i,this.height=r}t&&(te.R.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(0===this.props.colorAttachments.length&&!this.props.depthStencilAttachment)throw Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map(e=>{if("string"==typeof e){let t=this.createColorTexture(e);return this.attachResource(t),t.view}return e instanceof iE.g?e.view:e});let e=this.props.depthStencilAttachment;if(e)if("string"==typeof e){let t=this.createDepthStencilTexture(e);this.attachResource(t),this.depthStencilAttachment=t.view}else e instanceof iE.g?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e){return this.device.createTexture({id:"color-attachment",usage:iE.g.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}createDepthStencilTexture(e){return this.device.createTexture({id:"depth-stencil-attachment",usage:iE.g.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,t){for(let i=0;i<this.colorAttachments.length;++i)if(this.colorAttachments[i]){let r=this.device._createTexture({...this.colorAttachments[i].props,width:e,height:t});this.destroyAttachedResource(this.colorAttachments[i]),this.colorAttachments[i]=r.view,this.attachResource(r.view)}if(this.depthStencilAttachment){let i=this.device._createTexture({...this.depthStencilAttachment.props,width:e,height:t});this.destroyAttachedResource(this.depthStencilAttachment),this.depthStencilAttachment=i.view,this.attachResource(i)}}}async function iy(e,t){return await new Promise((i,r)=>{try{let s=new Image;s.onload=()=>i(s),s.onerror=()=>r(Error(`Could not load image ${e}.`)),s.crossOrigin=t?.crossOrigin||"anonymous",s.src=e.startsWith("http")?e:""+e}catch(e){r(e)}})}async function ib(e,t){let i=document.getElementsByTagName("head")[0];if(!i)throw Error("loadScript");let r=document.createElement("script");return r.setAttribute("type","text/javascript"),r.setAttribute("src",e),t&&(r.id=t),new Promise((t,s)=>{r.onload=t,r.onerror=t=>s(Error(`Unable to load script '${e}': ${t}`)),i.appendChild(r)})}function iA(e,t,i){let r;if(function(e){for(let t in e)return!1;return!0}(t))return i(e);let{nocatch:s=!0}=t;if(tW(e),tU(e,t),s)r=i(e),tj(e);else try{r=i(e)}finally{tj(e)}return r}function iT(e,t){return iP(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function iR(e,t){return iP(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function iS(e,t){return iP(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function iw(e,t){return iP(e,t,{one:1,zero:0,"src-color":768,"one-minus-src-color":769,"dst-color":774,"one-minus-dst-color":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,"constant-color":32769,"one-minus-constant-color":32770,"constant-alpha":32771,"one-minus-constant-alpha":32772})}function iP(e,t,i){if(!(t in i))throw Error(`Illegal parameter ${t} for ${e}`);return i[t]}function iC(e){let t={};return e.addressModeU&&(t[10242]=ix(e.addressModeU)),e.addressModeV&&(t[10243]=ix(e.addressModeV)),e.addressModeW&&(t[32882]=ix(e.addressModeW)),e.magFilter&&(t[10240]=iL(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=function(e,t){if(!t)return iL(e);switch(e){case"nearest":return"nearest"===t?9984:9986;case"linear":return"nearest"===t?9985:9987}}(e.minFilter||"linear",e.mipmapFilter)),void 0!==e.lodMinClamp&&(t[33082]=e.lodMinClamp),void 0!==e.lodMaxClamp&&(t[33083]=e.lodMaxClamp),"comparison-sampler"===e.type&&(t[34892]=34894),e.compare&&(t[34893]=iT("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function ix(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function iL(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}class iM extends tn.h{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength;bytesUsed;constructor(e,t={}){super(e,t),this.device=e,this.gl=this.device.gl;let i="object"==typeof t?t.handle:void 0;this.handle=i||this.gl.createBuffer(),e.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glTarget=function(e){return e&tn.h.INDEX?34963:e&tn.h.VERTEX?34962:e&tn.h.UNIFORM?35345:34962}(this.props.usage),this.glUsage=function(e){return e&tn.h.INDEX||e&tn.h.VERTEX?35044:e&tn.h.UNIFORM?35048:35044}(this.props.usage),this.glIndexType="uint32"===this.props.indexType?5125:5123,t.data?this._initWithData(t.data,t.byteOffset,t.byteLength):this._initWithByteLength(t.byteLength||0)}_initWithData(e,t=0,i=e.byteLength+t){let r=this.glTarget;this.gl.bindBuffer(r,this.handle),this.gl.bufferData(r,i,this.glUsage),this.gl.bufferSubData(r,t,e),this.gl.bindBuffer(r,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(e,t,i),this.trackAllocatedMemory(i)}_initWithByteLength(e){(0,tp.v)(e>=0);let t=e;0===e&&(t=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,t,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.trackAllocatedMemory(e),this}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle),this.destroyed=!0,this.handle=null)}write(e,t=0){let i=void 0;this.gl.bindBuffer(36663,this.handle),void 0!==i?this.gl.bufferSubData(36663,t,e,0,i):this.gl.bufferSubData(36663,t,e),this.gl.bindBuffer(36663,null),this._setDebugData(e,t,e.byteLength)}
1524async readAsync(e=0,t){return this.readSyncWebGL(e,t)}readSyncWebGL(e=0,t){let i=new Uint8Array(t=t??this.byteLength-e);return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,0,t),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,t),i}}var iI=i(73734);class iO extends iI.L{device;handle;parameters;constructor(e,t){super(e,t),this.device=e,this.parameters=iC(t),this.handle=this.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[t,i]of Object.entries(e)){let e=Number(t);switch(e){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,e,i);break;default:this.device.gl.samplerParameteri(this.handle,e,i)}}}}var iN=i(74553);class iF extends iN.X{device;gl;handle;texture;constructor(e,t){super(e,{...iE.g.defaultProps,...t}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=t.texture}}let iD={parameters:{},pixelStore:{},pixels:null,border:0,dataFormat:void 0,textureUnit:void 0,target:void 0};class iB extends iE.g{static FACES=[34069,34070,34071,34072,34073,34074];MAX_ATTRIBUTES;device;gl;handle;sampler=void 0;view=void 0;glFormat=void 0;type=void 0;dataFormat=void 0;mipmaps=void 0;target;textureUnit=void 0;loaded=!1;_video;constructor(e,t){super(e,{...iD,format:"rgba8unorm",...t}),this.device=e,this.gl=this.device.gl,this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glFormat=6408,this.target=function(e){switch(e.dimension){case"2d":return 3553;case"cube":return 34067;case"2d-array":return 35866;case"3d":return 32879;default:throw Error(e.dimension)}}(this.props),this.loaded=!1,"string"==typeof this.props?.data&&Object.assign(this.props,{data:iy(this.props.data)}),this.initialize(this.props),Object.seal(this)}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}toString(){return`Texture(${this.id},${this.width}x${this.height})`}createView(e){return new iF(this.device,{...e,texture:this})}initialize(e={}){if("cube"===this.props.dimension)return this.initializeCube(e);let t=e.data;if(t instanceof Promise)return t.then(t=>this.initialize(Object.assign({},e,{pixels:t,data:t}))),this;let i="undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement;if(i&&t.readyState<HTMLVideoElement.HAVE_METADATA)return this._video=null,t.addEventListener("loadeddata",()=>this.initialize(e)),this;let{parameters:r={}}=e,{pixels:s=null,pixelStore:n={},textureUnit:o,mipmaps:a=!0}=e;t||(t=s);let{width:l,height:h,dataFormat:u,type:c,compressed:d=!1}=e,{depth:f=0}=e,p=iu(e.format);return{width:l,height:h,compressed:d,dataFormat:u,type:c}=this._deduceParameters({format:e.format,type:c,dataFormat:u,compressed:d,data:t,width:l,height:h}),this.width=l,this.height=h,this.glFormat=p,this.type=c,this.dataFormat=u,this.textureUnit=o,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),this.mipmaps=a,this.setImageData({data:t,width:l,height:h,depth:f,format:e.format,type:c,dataFormat:u,parameters:n,compressed:d}),this.setSampler(e.sampler),this._setSamplerParameters(r),this.view=this.createView({...this.props,mipLevelCount:1,arrayLayerCount:1}),a&&this.device.isTextureFormatFilterable(e.format)&&this.generateMipmap(),i&&(this._video={video:t,parameters:r,lastTime:t.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?t.currentTime:-1}),this}initializeCube(e){let{mipmaps:t=!0,parameters:i={}}=e;return this.setCubeMapImageData(e).then(()=>{this.loaded=!0,t&&this.generateMipmap(e),this.setSampler(e.sampler),this._setSamplerParameters(i)}),this}setSampler(e={}){let t;e instanceof iO?(this.sampler=e,t=e.props):(this.sampler=new iO(this.device,e),t=e);let i=iC(t);return this._setSamplerParameters(i),this}resize(e){let{height:t,width:i,mipmaps:r=!1}=e;return i!==this.width||t!==this.height?this.initialize({width:i,height:t,format:this.format,type:this.t
1524ype,dataFormat:this.dataFormat,mipmaps:r}):this}update(){if(this._video){let{video:e,parameters:t,lastTime:i}=this._video;i===e.currentTime||e.readyState<HTMLVideoElement.HAVE_CURRENT_DATA||(this.setSubImageData({data:e,parameters:t}),this.mipmaps&&this.generateMipmap(),this._video.lastTime=e.currentTime)}}generateMipmap(e={}){return this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),iA(this.gl,e,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this}setImageData(e){if("3d"===this.props.dimension||"2d-array"===this.props.dimension)return this.setImageData3D(e);this.trackDeallocatedMemory("Texture");let{target:t=this.target,pixels:i=null,level:r=0,glFormat:s=this.glFormat,offset:n=0,parameters:o={}}=e,{data:a=null,type:l=this.type,width:h=this.width,height:u=this.height,dataFormat:c=this.dataFormat,compressed:d=!1}=e;a||(a=i),{type:l,dataFormat:c,compressed:d,width:h,height:u}=this._deduceParameters({format:this.props.format,type:l,dataFormat:c,compressed:d,data:a,width:h,height:u});let{gl:f}=this;f.bindTexture(this.target,this.handle);let p=null;if({data:a,dataType:p}=this._getDataType({data:a,compressed:d}),iA(this.gl,o,()=>{switch(p){case"null":case"browser-object":f.texImage2D(t,r,s,h,u,0,c,l,a);break;case"typed-array":f.texImage2D(t,r,s,h,u,0,c,l,a,n);break;case"buffer":this.device.gl.bindBuffer(35052,a.handle||a),this.device.gl.texImage2D(t,r,s,h,u,0,c,l,n),this.device.gl.bindBuffer(35052,null);break;case"compressed":for(let[e,i]of a.entries())f.compressedTexImage2D(t,e,i.format,i.width,i.height,0,i.data);break;default:(0,tp.v)(!1,"Unknown image data type")}}),a&&a.byteLength)this.trackAllocatedMemory(a.byteLength,"Texture");else{let e=id(this.props.format);this.trackAllocatedMemory(this.width*this.height*e,"Texture")}return this.loaded=!0,this}setSubImageData({target:e=this.target,pixels:t=null,data:i=null,x:r=0,y:s=0,width:n=this.width,height:o=this.height,level:a=0,glFormat:l=this.glFormat,type:h=this.type,dataFormat:u=this.dataFormat,compressed:c=!1,offset:d=0,parameters:f={}}){if({type:h,dataFormat:u,compressed:c,width:n,height:o}=this._deduceParameters({format:this.props.format,type:h,dataFormat:u,compressed:c,data:i,width:n,height:o}),(0,tp.v)(1===this.depth,"texSubImage not supported for 3D textures"),i||(i=t),i&&i.data){let e=i;i=e.data,n=e.shape[0],o=e.shape[1]}i instanceof iM&&(i=i.handle),this.gl.bindTexture(this.target,this.handle),iA(this.gl,f,()=>{c?this.gl.compressedTexSubImage2D(e,a,r,s,n,o,l,i):null===i?this.gl.texSubImage2D(e,a,r,s,n,o,u,h,null):ArrayBuffer.isView(i)?this.gl.texSubImage2D(e,a,r,s,n,o,u,h,i,d):"undefined"!=typeof WebGLBuffer&&i instanceof WebGLBuffer?(this.device.gl.bindBuffer(35052,i),this.device.gl.texSubImage2D(e,a,r,s,n,o,u,h,d),this.device.gl.bindBuffer(35052,null)):this.device.gl.texSubImage2D(e,a,r,s,n,o,u,h,i)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(e={}){return te.R.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(e=this.textureUnit){let{gl:t}=this;return void 0!==e&&(this.textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.target,this.handle),e}unbind(e=this.textureUnit){let{gl:t}=this;return void 0!==e&&(this.textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.target,null),e}_getDataType({data:e,compressed:t=!1}){return t?{data:e,dataType:"compressed"}:null===e?{data:e,dataType:"null"}:ArrayBuffer.isView(e)?{data:e,dataType:"typed-array"}:e instanceof iM?{data:e.handle,dataType:"buffer"}:"undefined"!=typeof WebGLBuffer&&e instanceof WebGLBuffer?{data:e,dataType:"buffer"}:{data:e,dataType:"browser-object"}}_deduceParameters(e){let{format:t,data:i}=e,{width:r,height:s,dataFormat:n,type:o,compressed:a}=e,l=ic(t);return n=n||l.dataFormat,o=o||l.type,a=a||l.compressed,{width:r,height:s}=this._deduceImageSize(i,r,s),{dataFormat:n,type:o,compressed:a,width:r,height:s,format:t,data:i}}_deduceImageSize(e,t,i){let r;return r="undefined"!=typeof ImageData&&e instanceof ImageData?{width:e.width,height:e.height}:"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement?{width:e.naturalWi
1524dth,height:e.naturalHeight}:"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?{width:e.width,height:e.height}:"undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement?{width:e.videoWidth,height:e.videoHeight}:e?{width:t,height:i}:{width:t>=0?t:1,height:i>=0?i:1},(0,tp.v)(r,"Could not deduced texture size"),(0,tp.v)(void 0===t||r.width===t,"Deduced texture width does not match supplied width"),(0,tp.v)(void 0===i||r.height===i,"Deduced texture height does not match supplied height"),r}async setCubeMapImageData(e){let{gl:t}=this,{width:i,height:r,pixels:s,data:n,format:o=6408,type:a=5121}=e,l=s||n,h=await Promise.all(iB.FACES.map(e=>{let t=l[e];return Promise.all(Array.isArray(t)?t:[t])}));this.bind(),iB.FACES.forEach((e,s)=>{h[s].length>1&&!1!==this.props.mipmaps&&te.R.warn(`${this.id} has mipmap and multiple LODs.`)(),h[s].forEach((s,n)=>{i&&r?t.texImage2D(e,n,o,i,r,0,o,a,s):t.texImage2D(e,n,o,o,a,s)})}),this.unbind()}setImageDataForFace(e){let{face:t,width:i,height:r,pixels:s,data:n,format:o=6408,type:a=5121}=e,{gl:l}=this,h=s||n;return this.bind(),h instanceof Promise?h.then(i=>this.setImageDataForFace(Object.assign({},e,{face:t,data:i,pixels:i}))):this.width||this.height?l.texImage2D(t,0,o,i,r,0,o,a,h):l.texImage2D(t,0,o,o,a,h),this}setImageData3D(e){let{level:t=0,dataFormat:i,format:r,type:s,width:n,height:o,depth:a=1,offset:l=0,data:h,parameters:u={}}=e;this.trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle);let c=ic(r);if(iA(this.gl,u,()=>{ArrayBuffer.isView(h)&&this.gl.texImage3D(this.target,t,c.format,n,o,a,0,c.dataFormat,c.type,h),h instanceof iM&&(this.gl.bindBuffer(35052,h.handle),this.gl.texImage3D(this.target,t,i,n,o,a,0,r,s,l))}),h&&h.byteLength)this.trackAllocatedMemory(h.byteLength,"Texture");else{let e=id(this.props.format);this.trackAllocatedMemory(this.width*this.height*this.depth*e,"Texture")}return this.loaded=!0,this}_setSamplerParameters(e){if(!(0,ts.Z)(e)){var t;for(let[i,r]of(t=e,te.R.log(1,"texture sampler parameters",t)(),this.gl.bindTexture(this.target,this.handle),Object.entries(e))){let e=Number(i);switch(e){case 33082:case 33083:this.gl.texParameterf(this.target,e,r);break;default:this.gl.texParameteri(this.target,e,r)}}this.gl.bindTexture(this.target,null)}}}class iU extends iv{device;gl;handle;get texture(){return this.colorAttachments[0]}constructor(e,t){super(e,t);let i=null===t.handle;if(this.device=e,this.gl=e.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),!i){e.setSpectorMetadata(this.handle,{id:this.props.id,props:this.props}),this.autoCreateAttachmentTextures();let i=this.gl.bindFramebuffer(36160,this.handle);for(let e=0;e<this.colorAttachments.length;++e){let t=this.colorAttachments[e],i=36064+e;t&&this._attachOne(i,t)}if(this.depthStencilAttachment&&this._attachOne(function(e){let t=io[e];if(!t?.attachment)throw Error(`${e} is not a depth stencil format`);return t.attachment}(this.depthStencilAttachment.props.format),this.depthStencilAttachment),!1!==t.check){let e=this.gl.checkFramebufferStatus(36160);if(36053!==e)throw Error(`Framebuffer ${function(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}(e)}`)}this.gl.bindFramebuffer(36160,i)}}destroy(){super.destroy(),this.destroyed||null===this.handle||this.gl.deleteFramebuffer(this.handle)}createDepthStencilTexture(e){return new iB(this.device,{id:`${this.id}-depth-stencil`,format:e,width:this.width,height:this.height,mipmaps:!1})}resizeAttachments(e,t){if(null===this.handle)return this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;for(let i of(void 0===e&&(e=this.gl.drawingBufferWidth),void 0===t&&(t=this.gl.drawingBufferHeight),this.colorAttachments))i.texture.resize({width:e,height:t});return this.depthStencilAttachment&&this.depthStencilAttachment.texture.resize({width:e,height:t}),this}_attachOne(e,t){if(Array.isArray(t)){let[i,r=0,s=0]=t;
1524return this._attachTexture(e,i,r,s),i}if(t instanceof iB)return this._attachTexture(e,t,0,0),t;if(t instanceof iF)return this._attachTexture(e,t.texture,t.props.baseMipLevel,t.props.baseArrayLayer),t.texture;throw Error("attach")}_attachTexture(e,t,i,r){let{gl:s}=this.device;switch(s.bindTexture(t.target,t.handle),t.target){case 35866:case 32879:s.framebufferTextureLayer(36160,e,t.target,r,i);break;case 34067:var n;let o=(n=i)<34069?n+34069:n;s.framebufferTexture2D(36160,e,o,t.handle,r);break;case 3553:s.framebufferTexture2D(36160,e,3553,t.handle,r);break;default:(0,tp.v)(!1,"Illegal texture type")}s.bindTexture(t.target,null)}}class ik extends tb{device;presentationSize;_framebuffer=null;constructor(e,t){super(t),this.device=e,this.presentationSize=[-1,-1],this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this.update()}getCurrentFramebuffer(){return this.update(),this._framebuffer=this._framebuffer||new iU(this.device,{handle:null}),this._framebuffer}update(){let e=this.getPixelSize();(e[0]!==this.presentationSize[0]||e[1]!==this.presentationSize[1])&&(this.presentationSize=e,this.resize())}resize(e){if(this.device.gl&&this.canvas){let t=this.getDevicePixelRatio(e?.useDevicePixels);this.setDevicePixelRatio(t,e);return}}commit(){}}let iG={spector:te.R.get("spector")||te.R.get("spectorjs")},iV=null,iz=!1;async function iW(e){if(!globalThis.SPECTOR)try{await ib("https://cdn.jsdelivr.net/npm/[email protected]/dist/spector.bundle.js")}catch(e){te.R.warn(String(e))}}function ij(e){return e.luma=e.luma||{},e.luma}async function iH(){(0,e9.B)()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await ib("https://unpkg.com/[email protected]/index.js"))}function i$(e,t){t=Array.from(t).map(e=>void 0===e?"undefined":e);let i=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return i=`${i.slice(0,100)}${i.length>100?"...":""}`,`gl.${e}(${i})`}function iX(e,t,i,r){r=Array.from(r).map(e=>void 0===e?"undefined":e);let s=globalThis.WebGLDebugUtils.glEnumToString(t),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(i,r),o=`${s} in gl.${i}(${n})`;if(te.R.error(o)(),e.throwOnError)throw Error(o)}function iK(e,t,i){let r="";for(let s of(te.R.level>=1&&(r=i$(t,i),te.R.log(1,r)()),e.break&&e.break.length>0&&(r=r||i$(t,i),e.break.every(e=>-1!==r.indexOf(e))),i))if(void 0===s){if(r=r||i$(t,i),e.throwOnError)throw Error(`Undefined argument: ${r}`);te.R.error(`Undefined argument: ${r}`)()}}!
vendor: 10,734 bytes, line 1524
1524function(e){e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJ
vendor: 14,201 bytes, line 1524
1524ECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=
15240xffffffff]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e[e.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",e[e.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",e[e.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",e[e.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",e[e.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",e[e.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",e[e.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",e[e.LINE_WEBGL=6913]="LINE_WEBGL",e[e.FILL_WEBGL=6914]="FILL_WEBGL",e[e.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",e[e.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",e[e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",e[e.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",e[e.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",e[e.CLIP_DISTANCE2_WEBGL=12290]="
1524CLIP_DISTANCE2_WEBGL",e[e.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",e[e.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",e[e.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",e[e.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",e[e.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",e[e.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",e[e.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",e[e.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",e[e.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",e[e.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",e[e.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",e[e.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",e[e.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",e[e.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",e[e.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",e[e.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",e[e.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",e[e.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"}(o||(o={}));var iY=i(78069);function iZ(e){let t=e.toLowerCase();return["warning","error","info"].includes(t)?t:"info"}class iq extends iY.M{device;handle;constructor(e,t){switch(super(e,t),this.device=e,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw Error(this.props.stage)}this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0)}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){return function(e){let t=e.split(/\r?\n/),i=[];for(let e of t){if(e.length<=1)continue;let t=e.split(":");if(2===t.length){let[e,r]=t;i.push({message:r.trim(),type:iZ(e),lineNum:0,linePos:0});continue}let[r,s,n,...o]=t,a=parseInt(n,10);isNaN(a)&&(a=0);let l=parseInt(s,10);isNaN(l)&&(l=0),i.push({message:o.join(":").trim(),type:iZ(r),lineNum:a,linePos:l})}return i}(this.device.gl.getShaderInfoLog(this.handle))}getTranslatedSource(){let e=this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders;return e?.getTranslatedShaderSource(this.handle)}async _compile(e){let t;e=(t=e).startsWith("#version ")?t:`#version 100 1525${t}`;let{gl:i}=this.device;if(i.shaderSource(this.handle,e),i.compileShader(this.handle),0===te.R.level){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),"error"===this.compilationStatus)throw Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}te.R.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),te.R.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void await e(10);let{gl:t}=this.device;for(;;){if(t.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}class iQ extends im.F{static defaultProps={...im.F.defaultProps,framebuffer:null,parameters:void 0,clearColor:[0,0,0,0],clearDepth:1,clearStencil:0,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0};get[Symbol.toStringTag](){return"RenderPass"}constructor(e,t){super(e,t,iQ.defaultProps)}}let iJ=[1,2,4,8];class i0 extends iQ{device;glParameters;constructor(e,t){super(e,t),this.device=e,tW(this.device.gl),this.setParameters(this.props.parameters),this.clear()}end(){tj(this.device.gl)}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}setParameters(e={}){let t={...this.glParameters};this.props.framebuffer&&(t.framebuffer=this.props.framebuffer),this.props.depthReadOnly&&(t.depthMask=!this.props.depthReadOnly),t.stencilMask=+!this.props.stencilReadOnly,t[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(t.viewport=e.viewport.slice(0,4),t.depthRange=[e.viewport[4],e.viewport[5]]):t.viewport=e.viewport),e.scissorRect&&(t.scissorTest=!0,t.scissor=e.scissorRect),e.blendConstant&&(t.blendColor=e.blendConstant),e.stencilReference&&(console.warn("RenderPassParameters.stencilReference not yet implemented in WebGL"),e[2967]=e.stencilReference),e.colorMask&&(t.colorMask=iJ.map(t=>!!(t&e.colorMask))),this.glParameters=t,tU(this.device.gl,t)}beginOcclusionQuery(e){let t=this.props.occlusionQuerySet;
1525t?.beginOcclusionQuery()}endOcclusionQuery(){let e=this.props.occlusionQuerySet;e?.endOcclusionQuery()}clear(){let e={...this.glParameters},t=0;!1!==this.props.clearColor&&(t|=16384,e.clearColor=this.props.clearColor),!1!==this.props.clearDepth&&(t|=256,e.clearDepth=this.props.clearDepth),!1!==this.props.clearStencil&&(t|=1024,e.clearStencil=this.props.clearStencil),0!==t&&iA(this.device.gl,e,()=>{this.device.gl.clear(t)})}clearColorBuffer(e=0,t=[0,0,0,0]){iA(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(t.constructor){case Int32Array:this.device.gl.clearBufferiv(6144,e,t);break;case Uint32Array:this.device.gl.clearBufferuiv(6144,e,t);break;case Float32Array:default:this.device.gl.clearBufferfv(6144,e,t)}})}}var i1=i(80879),i3=i(60218),i2=i(88346);function i6(e,t){let{clamped:i=!0}=t||{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return i?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw Error("Failed to deduce typed array type from GL constant")}}let i4={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},i5={deprecatedProps:{instanced:"divisor",isInstanced:"divisor"}};class i8{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(e){return i6(e.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(e){return(0,tp.v)(e.size),i6(e.type||5126).BYTES_PER_ELEMENT*e.size}static resolve(...e){return new i8(...[i4,...e])}constructor(...e){e.forEach(e=>this._assign(e)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return i8.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return i8.getBytesPerVertex(this)}_assign(e={}){return void 0!==(e=function(e,t,i){let{removedProps:r={},deprecatedProps:s={},replacedProps:n={}}=i;for(let i in r)if(i in t){let t=r[i]?`${e}.${r[i]}`:"N/A";te.R.removed(`${e}.${i}`,t)()}for(let i in s)if(i in t){let t=s[i];te.R.deprecated(`${e}.${i}`,`${e}.${t}`)()}let o=null;for(let[i,r]of Object.entries(n))i in t&&(te.R.deprecated(`${e}.${i}`,`${e}.${r}`)(),(o=o||Object.assign({},t))[r]=t[i],delete o[i]);return o||t}("Accessor",e,i5)).type&&(this.type=e.type,(5124===e.type||5125===e.type)&&(this.integer=!0)),void 0!==e.size&&(this.size=e.size),void 0!==e.offset&&(this.offset=e.offset),void 0!==e.stride&&(this.stride=e.stride),void 0!==e.normalize&&(this.normalized=e.normalize),void 0!==e.normalized&&(this.normalized=e.normalized),void 0!==e.integer&&(this.integer=e.integer),void 0!==e.divisor&&(this.divisor=e.divisor),void 0!==e.buffer&&(this.buffer=e.buffer),void 0!==e.index&&("boolean"==typeof e.index?this.index=+!!e.index:this.index=e.index),void 0!==e.instanced&&(this.divisor=+!!e.instanced),void 0!==e.isInstanced&&(this.divisor=+!!e.isInstanced),void 0===this.offset&&delete this.offset,void 0===this.stride&&delete this.stride,void 0===this.type&&delete this.type,void 0===this.size&&delete this.size,void 0===this.divisor&&delete this.divisor,void 0===this.normalized&&delete this.normalized,void 0===this.integer&&delete this.integer,void 0===this.buffer&&delete this.buffer,void 0===this.index&&delete this.index,this}}let i7=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],i9={5126:[5126,1,"float","f32","float32"],35664:[5126,2,"vec2","vec2<f32>","float32x2"],35665:[5126,3,"vec3","vec3<f32>","float32x3"],35666:[5126,4,"vec4","vec4<f32>","float32x4"],5124:[5124,1,"int","i32","sint32"],35667:[5124,2,"ivec2","vec2<i32>","sint32x2"],35668:[5124,3,"ivec3","vec3<i32>","sint32x3"],35669:[5124,4,"ivec4","vec4<i32>","sint32x4"],5125:[5125,1,"uint","u32","uint32"],36294:[5125,2,"uvec2","vec2<u32>","uint32x2"],36295:[5125,3,"uvec3","vec3<u32>","uint32x3"],36296:[5125,4,"uvec4","vec4<u32>","uint32x4"],35670:[5126,1,"bool","f32","float32"],35671:[5126,2,"bvec2","vec2<f32>","float32x2"],35672:[5126,3,"bvec3","vec3<f32>","float32x3"],35673:[5126,4,"bvec4","vec4<f32>","float32x4"],35674:[5126,8,"mat2","mat2x2<f32>"],35685:[5126,8,"mat2x3","mat2x3<f32>"],35686:[5126,8,"mat2x4","mat2x4<f32>"],35687:[5126,12,"mat3x2","mat3x2<f32>"],35675:[5126,12,"mat3","mat3x3<f32>"],35688:[5126,12,"mat3x4","mat3x4<f32>"],35689:[5126,16,"mat4x2","mat4x2<f32>"],35690:[5126,16,"mat4x3","mat4x3<f32>"],35676:[5126,16,"mat4","mat4x4<f32>"]};function re(e){let t=i9[e];if(!t)throw Error("uniform");let[i,r,,s]=t;return{format:s,components:r,glType:i}}let rt={35678:["2d","float"],35680:["cube","float"],35679:["3d","float"],35682:["3d","depth"],36289:["2d-array","float"],36292:["2d-array","depth"],36293:["cube","float"],36298:["2d","sint"],36299:["3d","sint"],36300:["cube","sint"],36303:["2d-array","uint"],36306:["2d","uint"],36307:["3d","uint"],36308:["cube","uint"],36311:["2d-array","uint"]};class ri extends i1.r{device;handle;vs;fs;introspectedLayout;uniforms={};bindings={};varyings=null;_uniformCount=0;_uniformSetters={};constructor(e,t){super(e,t),this.device=e,this.handle=this.props.handle||this.device.gl.createProgram(),this.device.setSpectorMetadata(this.handle,{id:this.props.id}),this.vs=t.vs,this.fs=t.fs;let{varyings:i,bufferMode:r=35981}=t;switch(i&&i.length>0&&(this.varyings=i,this.device.gl.transformFeedbackVaryings(this.handle,i,r)),this._linkShaders(),te.R.time(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=function(e,t){let i={attributes:[],bindings:[]};for(let r of(i.attributes=function(e,t){let i=[],r=e.getProgramParameter(t,35721);for(let s=0;s<r;s++){let r=e.getActiveAttrib(t,s);if(!r)throw Error("activeInfo");let{name:n,type:o}=r,a=e.getAttribLocation(t,n);if(a>=0){let{attributeType:e}=function(e){let t=i9[e];if(!t)throw Error("attribute");let[,i,,r,s]=t;return{attributeType:r,vertexFormat:s,components:i}}(o),t=/instance/i.test(n)?"instance":"vertex";i.push({name:n,location:a,stepMode:t,type:e})}}return i.sort((e,t)=>
1525e.location-t.location),i}(e,t),function(e,t){let i=(i,r)=>e.getActiveUniformBlockParameter(t,i,r),r=[],s=e.getProgramParameter(t,35382);for(let n=0;n<s;n++){let s={name:e.getActiveUniformBlockName(t,n)||"",location:i(n,35391),byteLength:i(n,35392),vertex:i(n,35396),fragment:i(n,35398),uniformCount:i(n,35394),uniforms:[]},o=i(n,35395)||[],a=e.getActiveUniforms(t,o,35383),l=e.getActiveUniforms(t,o,35384),h=e.getActiveUniforms(t,o,35387),u=e.getActiveUniforms(t,o,35388);for(let i=0;i<s.uniformCount;++i){let r=e.getActiveUniform(t,o[i]);if(!r)throw Error("activeInfo");s.uniforms.push({name:r.name,format:re(a[i]).format,type:a[i],arrayLength:l[i],byteOffset:h[i],byteStride:u[i]})}r.push(s)}return r.sort((e,t)=>e.location-t.location),r}(e,t))){let e=r.uniforms.map(e=>({name:e.name,format:e.format,byteOffset:e.byteOffset,byteStride:e.byteStride,arrayLength:e.arrayLength}));i.bindings.push({type:"uniform",name:r.name,location:r.location,visibility:!!r.vertex&2*!!r.fragment,minBindingSize:r.byteLength,uniforms:e})}let r=function(e,t){let i=[],r=e.getProgramParameter(t,35718);for(let s=0;s<r;s++){let r=e.getActiveUniform(t,s);if(!r)throw Error("activeInfo");let{name:n,size:o,type:a}=r,{name:l,isArray:h}=function(e){if("]"!==e[e.length-1])return{name:e,length:1,isArray:!1};let t=/([^[]*)(\[[0-9]+\])?/.exec(e);if(!t||t.length<2)throw Error(`Failed to parse GLSL uniform name ${e}`);return{name:t[1],length:+!!t[2],isArray:!!t[2]}}(n),u=e.getUniformLocation(t,l),c={location:u,name:l,size:o,type:a,isArray:h};if(i.push(c),c.size>1)for(let r=0;r<c.size;r++){let s=`${l}[${r}]`;u=e.getUniformLocation(t,s);let n={...c,name:s,location:u};i.push(n)}}return i}(e,t),s=0;for(let e of r)if(i7.includes(e.type)){let{viewDimension:t,sampleType:r}=function(e){let t=rt[e];if(!t)throw Error("sampler");let[i,r]=t;return{viewDimension:i,sampleType:r}}(e.type);i.bindings.push({type:"texture",name:e.name,location:s,viewDimension:t,sampleType:r}),e.textureUnit=s,s+=1}r.length&&(i.uniforms=r);let n=function(e,t){let i=[],r=e.getProgramParameter(t,35971);for(let s=0;s<r;s++){let r=e.getTransformFeedbackVarying(t,s);if(!r)throw Error("activeInfo");let{name:n,type:o,size:a}=r,{glType:l,components:h}=re(o),u={location:s,name:n,accessor:new i8({type:l,size:a*h})};i.push(u)}return i.sort((e,t)=>e.location-t.location),i}(e,t);return n?.length&&(i.varyings=n),i}(this.device.gl,this.handle),te.R.timeEnd(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=(0,i2.GE)(this.introspectedLayout,t.shaderLayout),this.props.topology){case"triangle-fan-webgl":case"line-loop-webgl":te.R.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`)}}destroy(){this.handle&&(this.device.gl.deleteProgram(this.handle),this.destroyed=!0)}setBindings(e,t){for(let[i,r]of Object.entries(e)){let e=this.shaderLayout.bindings.find(e=>e.name===i)||this.shaderLayout.bindings.find(e=>e.name===`${i}Uniforms`);if(!e){let e=this.shaderLayout.bindings.map(e=>`"${e.name}"`).join(", ");t?.disableWarnings||te.R.warn(`Unknown binding "${i}" in render pipeline "${this.id}", expected one of ${e}`)();continue}switch(!r&&te.R.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),e.type){case"uniform":if(!(r instanceof iM)&&!(r.buffer instanceof iM))throw Error("buffer value");break;case"texture":if(!(r instanceof iF||r instanceof iB||r instanceof iU))throw Error("texture value");break;case"sampler":te.R.warn(`Ignoring sampler ${i}`)();break;default:throw Error(e.type)}this.bindings[i]=r}}draw(e){let{renderPass:t,parameters:i=this.props.parameters,topology:r=this.props.topology,vertexArray:s,vertexCount:n,instanceCount:o,isInstanced:a=!1,firstVertex:l=0,transformFeedback:h}=e,u=function(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"line-loop-webgl":return 2;case"triangle-list":return 4;case"triangle-strip":return 5;case"triangle-fan-webgl":return 6;default:throw Error(e)}}(r),c=!!s.indexBuffer,d=s.indexBuffer?.glIndexType;return"success"!==this.linkStatus?(te.R.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1):this._areTexturesRenderable()&&0!==n?(0===n?te.R.info(2,`RenderPipeline:${this.id}.draw() aborted - no vertices to draw`)():(this.device.gl.useProgram(this.handle),s.bindBeforeRender(t),h&&h.begin(this.props.topology),this._applyBindings(),this._applyUniforms(),!function(e,t,i,r){if((0,ts.Z)(t))return r(e);tW(e.gl);try{return function(e,t){let{gl:i}=e;if(t.cullMode)switch(t.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029)}if(t.frontFace&&i.frontFace(iP("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),void 0!==t.depthBias&&(i.enable(32823),i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let i=e.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,r=iP("provokingVertex",t.provokingVertex,{first:36429,last:36430});i?.provokingVertexWEBGL(r)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let i=e.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,r=iP("polygonMode",t.polygonMode,{fill:6914,line:6913});i?.polygonModeWEBGL(1028,r),i?.polygonModeWEBGL(1029,r)}t.polygonOffsetLine&&i.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&i.enable(12288),t.clipDistance1&&i.enable(12289),t.clipDistance2&&i.enable(12290),t.clip
1525Distance3&&i.enable(12291),t.clipDistance4&&i.enable(12292),t.clipDistance5&&i.enable(12293),t.clipDistance6&&i.enable(12294),t.clipDistance7&&i.enable(12295)),void 0!==t.depthWriteEnabled&&i.depthMask(t.depthWriteEnabled),t.depthCompare&&("always"!==t.depthCompare?i.enable(2929):i.disable(2929),i.depthFunc(iT("depthCompare",t.depthCompare))),t.stencilWriteMask){let e=t.stencilWriteMask;i.stencilMaskSeparate(1028,e),i.stencilMaskSeparate(1029,e)}if(t.stencilReadMask&&te.R.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let e=t.stencilReadMask||0xffffffff,r=iT("depthCompare",t.stencilCompare);"always"!==t.stencilCompare?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,r,0,e),i.stencilFuncSeparate(1029,r,0,e)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let e=iR("stencilPassOperation",t.stencilPassOperation),r=iR("stencilFailOperation",t.stencilFailOperation),s=iR("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,r,s,e),i.stencilOpSeparate(1029,r,s,e)}if(t.blendColorOperation||t.blendAlphaOperation){i.enable(3042);let e=iS("blendColorOperation",t.blendColorOperation||"add"),r=iS("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(e,r);let s=iw("blendColorSrcFactor",t.blendColorSrcFactor||"one"),n=iw("blendColorDstFactor",t.blendColorDstFactor||"zero"),o=iw("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),a=iw("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(s,n,o,a)}}(e,t),tU(e.gl,i),r(e)}finally{tj(e.gl)}}(this.device,i,t.glParameters,()=>{c&&a?this.device.gl.drawElementsInstanced(u,n||0,d,l,o||0):c?this.device.gl.drawElements(u,n||0,d,l):a?this.device.gl.drawArraysInstanced(u,l,n||0,o||0):this.device.gl.drawArrays(u,l,n||0),h&&h.end()}),s.unbindAfterRender(t)),!0):(te.R.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1)}setUniformsWebGL(e){let{bindings:t}=(0,i3.l)(e);Object.keys(t).forEach(e=>{te.R.warn(`Unsupported value "${JSON.stringify(t[e])}" used in setUniforms() for key ${e}. Use setBindings() instead?`)()}),Object.assign(this.uniforms,e)}async _linkShaders(){let{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),te.R.time(4,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),te.R.timeEnd(4,`linkProgram for ${this.id}`)(),te.R.level,!this.device.features.has("compilation-status-async-webgl")){let e=this._getLinkStatus();this._reportLinkStatus(e);return}te.R.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),te.R.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let t=this._getLinkStatus();this._reportLinkStatus(t)}_reportLinkStatus(e){if("success"!==e){if("error"===this.vs.compilationStatus)throw this.vs.debugShader(),Error(`Error during compilation of shader ${this.vs.id}`);if(this.fs?.compilationStatus==="error")throw this.fs.debugShader(),Error(`Error during compilation of shader ${this.fs.id}`);throw Error(`Error during ${e}: ${this.device.gl.getProgramInfoLog(this.handle)}`)}}_getLinkStatus(){let{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715))?(this.linkStatus="success","success"):(this.linkStatus="error","validation"):(this.linkStatus="error","linking")}async _waitForLinkComplete(){let e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void await e(10);let{gl:t}=this.device;for(;;){if(t.getProgramParameter(this.handle,37297))return;await e(10)}}_areTexturesRenderable(){let e=!0;for(let[,t]of Object.entries(this.bindings))t instanceof iB&&(t.update(),e=e&&t.loaded);return e}_applyBindings(){if("success"!==this.linkStatus)return;let{gl:e}=this.device;e.useProgram(this.handle);let t=0,i=0;for(let r of this.shaderLayout.bindings){let s=this.bindings[r.name]||this.bindings[r.name.replace(/Uniforms$/,"")];if(!s)throw Error(`No value for binding ${r.name} in ${this.id}`);switch(r.type){case"uniform":let{name:n}=r,o=e.getUniformBlockIndex(this.handle,n);if(0xffffffff===o)throw Error(`Invalid uniform block name ${n}`);
1525e.uniformBlockBinding(this.handle,i,o),s instanceof iM?e.bindBufferBase(35345,i,s.handle):e.bindBufferRange(35345,i,s.buffer.handle,s.offset||0,s.size||s.buffer.byteLength-s.offset),i+=1;break;case"texture":let a;if(!(s instanceof iF||s instanceof iB||s instanceof iU))throw Error("texture");if(s instanceof iF)a=s.texture;else if(s instanceof iB)a=s;else if(s instanceof iU&&s.colorAttachments[0]instanceof iF)te.R.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),a=s.colorAttachments[0].texture;else throw Error("No texture");e.activeTexture(33984+t),e.bindTexture(a.target,a.handle),t+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw Error(`binding type '${r.type}' not supported in WebGL`)}}}_applyUniforms(){for(let e of this.shaderLayout.uniforms||[]){let{name:t,location:i,type:r,textureUnit:s}=e,n=this.uniforms[t]??s;void 0!==n&&function(e,t,i,r){let s=r;!0===s&&(s=1),!1===s&&(s=0);let n="number"==typeof s?[s]:s;switch(i){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if("number"!=typeof r)throw Error("samplers must be set to integers");return e.uniform1i(t,r);case 5126:return e.uniform1fv(t,n);case 35664:return e.uniform2fv(t,n);case 35665:return e.uniform3fv(t,n);case 35666:return e.uniform4fv(t,n);case 5124:case 35670:return e.uniform1iv(t,n);case 35667:case 35671:return e.uniform2iv(t,n);case 35668:case 35672:return e.uniform3iv(t,n);case 35669:case 35673:return e.uniform4iv(t,n);case 5125:return e.uniform1uiv(t,n,1);case 36294:return e.uniform2uiv(t,n,2);case 36295:return e.uniform3uiv(t,n,3);case 36296:return e.uniform4uiv(t,n,4);case 35674:return e.uniformMatrix2fv(t,!1,n);case 35675:return e.uniformMatrix3fv(t,!1,n);case 35676:return e.uniformMatrix4fv(t,!1,n);case 35685:return e.uniformMatrix2x3fv(t,!1,n);case 35686:return e.uniformMatrix2x4fv(t,!1,n);case 35687:return e.uniformMatrix3x2fv(t,!1,n);case 35688:return e.uniformMatrix3x4fv(t,!1,n);case 35689:return e.uniformMatrix4x2fv(t,!1,n);case 35690:return e.uniformMatrix4x3fv(t,!1,n)}throw Error("Illegal uniform")}(this.device.gl,i,r,n)}}}class rr extends im.F{static defaultProps={...im.F.defaultProps,measureExecutionTime:void 0};get[Symbol.toStringTag](){return"CommandEncoder"}constructor(e,t){super(e,t,rr.defaultProps)}}class rs extends im.F{static defaultProps={...im.F.defaultProps};get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,t){super(e,t,rs.defaultProps)}}class rn extends rs{device;commands=[];constructor(e){super(e,{}),this.device=e}submitCommands(e=this.commands){for(let t of e)switch(t.name){case"copy-buffer-to-buffer":!function(e,t){let i=t.source,r=t.destination;e.gl.bindBuffer(36662,i.handle),e.gl.bindBuffer(36663,r.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}(this.device,t.options);break;case"copy-buffer-to-texture":this.device,t.options;throw Error("Not implemented");case"copy-texture-to-buffer":!function(e,t){let i,{source:r,mipLevel:s=0,aspect:n="all",width:o=t.source.width,height:a=t.source.height,depthOrArrayLayers:l=0,origin:h=[0,0],destination:u,byteOffset:c=0,bytesPerRow:d,rowsPerImage:f}=t;if("all"!==n)throw Error("not supported");if(0!==s||0!==l||d||f)throw Error("not implemented");let{framebuffer:p,destroyFramebuffer:g}=ro(r);try{let t=o||p.width,r=a||p.height,s=ic(p.texture.props.format),n=s.dataFormat,l=s.type;e.gl.bindBuffer(35051,u.handle),i=e.gl.bindFramebuffer(36160,p.handle),e.gl.readPixels(h[0],h[1],t,r,n,l,c)}finally{e.gl.bindBuffer(35051,null),void 0!==i&&e.gl.bindFramebuffer(36160,i),g&&p.destroy()}}(this.device,t.options);break;case"copy-texture-to-texture":!function(e,t){let i,{source:r,destinationMipLevel:s=0,origin:n=[0,0],destinationOrigin:o=[0,0],destination:a}=t,{width:l=t.destination.width,height:h=t.destination.height}=t,{framebuffer:u,destroyFramebuffer:c}=ro(r),[d,f]=n,[p,g,_]=o,m=e.gl.bindFramebuffer(36160,u.handle),E=null;if(a instanceof iB)E=a,l=Number.isFinite(l)?l:E.width,h=Number.isFinite(h)?h:E.height,E.bind(0),i=E.target;else throw Error("invalid destination");switch(i){case 3553:case 34067:e.gl.copyTexSubImage2D(i,s,p,g,d,f,l,h);break;case 35866:case 32879:e.gl.copyTexSubImage3D(i,s,p,g,_,d,f,l,h)}E&&E.unbind(),e.gl.bindFramebuffer(36160,m),c&&u.destroy()}(this.device,t.options)}}}function ro(e){if(e instanceof iE.g){let{width:t,height:i,id:r}=e;
1525return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${r}`,width:t,height:i,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}class ra extends rr{device;commandBuffer;constructor(e,t){super(e,t),this.device=e,this.commandBuffer=new rn(e)}destroy(){}finish(){this.commandBuffer.submitCommands()}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,t,i){}}class rl extends im.F{static defaultProps={...im.F.defaultProps,renderPipeline:null};get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,t){super(e,t,rl.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=Array(this.maxVertexAttributes).fill(null),this.attributeInfos=(0,i2.Mr)(t.renderPipeline.shaderLayout,t.renderPipeline.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,t){throw Error("constant attributes not supported")}}var rh=i(83601),ru=i(948),rc=i(9445);class rd extends rl{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){var t;return"Chrome"===((0,e9.B)()?(0,ru.b)(t)?"Electron":(t||rc.gM.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown":"Node")}constructor(e,t){super(e,t),this.device=e,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){if(e&&34963!==e.glTarget)throw Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,e?e.handle:null),this.indexBuffer=e,this.device.gl.bindVertexArray(null)}setBuffer(e,t){if(34963===t.glTarget)throw Error("Use .setIndexBuffer()");let{size:i,type:r,stride:s,offset:n,normalized:o,integer:a,divisor:l}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,t.handle),a?this.device.gl.vertexAttribIPointer(e,i,r,s,n):this.device.gl.vertexAttribPointer(e,i,r,o,s,n),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,l||0),this.attributes[e]=t,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,t){this._enable(e,!1),this.attributes[e]=t}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e<this.maxVertexAttributes;++e){let t=this.attributes[e];ArrayBuffer.isView(t)&&this.device.setConstantAttributeWebGL(e,t)}}_getAccessor(e){let t=this.attributeInfos[e];if(!t)throw Error(`Unknown attribute location ${e}`);let i=tY(t.bufferDataType);return{size:t.bufferComponents,type:i,stride:t.byteStride,offset:t.byteOffset,normalized:t.normalized,integer:t.integer,divisor:+("instance"===t.stepMode)}}_enable(e,t=!0){let i=rd.isConstantAttributeZeroSupported(this.device)||0!==e;(t||i)&&(e=Number(e),this.device.gl.bindVertexArray(this.handle),t?this.device.gl.enableVertexAttribArray(e):this.device.gl.disableVertexAttribArray(e),this.device.gl.bindVertexArray(null))}getConstantBuffer(e,t){var i;let r=Array.isArray(i=t)?new Float32Array(i):i,s=r.byteLength*e,n=r.length*e;if(this.buffer&&s!==this.buffer.byteLength)throw Error(`Buffer size is immutable, byte length ${s} !== ${this.buffer.byteLength}.`);let o=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:s}),o=o||!function(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}(r,this.bufferValue)){let e=(0,rh.oF)(t.constructor,n);(0,rh.R2)({target:e,source:r,start:0,count:n}),this.buffer.write(e),this.bufferValue=t}return this.buffer}}class rf extends im.F{static defaultProps={...im.F.defaultProps,layout:void 0,buffers:{}};get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,t){super(e,t,rf.defaultProps)}}class rp extends rf{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(e,t){super(e,t),this.device=e,this.gl=e.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,t.buffers&&this.setBuffers(t.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(e="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(function(e){switch(e){case"point-list":return 0;case"line-list":case"line-strip":case"line-loop-webgl":return 1;case"triangle-list":case"triangle-strip":case"triangle-fan-webgl":return 4;default:throw Error(e)}}(e))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(e){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let t in e)this.setBuffer(t,e[t])})}setBuffer(e,t){let i=this._getVaryingIndex(e),{buffer:r,byteLength:s,byteOffset:n}=this._getBufferRange(t);if(i<0){this.unusedBuffers[e]=r,te.R.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[i]={buffer:r,byteLength:s,byteOffset:n},this.bindOnUse||this._bindBuffer(i,r,n,s)}getBuffer(e){if(rg(e))return this.buffers[e]||null;let t=this._getVaryingIndex(e);return t>=0?this.buffers[t]:null}bind(e=this.handle){let t;return"function"!=typeof e?(this.gl.bindTransformFeedback(36386,e),this):(this._bound?t=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,t=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),t)}unbind(){this.bind(null)}
1525_getBufferRange(e){if(e instanceof iM)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:t,byteOffset:i=0,byteLength:r=e.buffer.byteLength}=e;return{buffer:t,byteOffset:i,byteLength:r}}_getVaryingIndex(e){if(rg(e))return Number(e);for(let t of this.layout.varyings)if(e===t.name)return t.location;return -1}_bindBuffers(){for(let e in this.buffers){let{buffer:t,byteLength:i,byteOffset:r}=this._getBufferRange(this.buffers[e]);this._bindBuffer(Number(e),t,r,i)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,t,i=0,r){let s=t&&t.handle;s&&void 0!==r?this.gl.bindBufferRange(35982,e,s,i,r):this.gl.bindBufferBase(35982,e,s)}}function rg(e){return"number"==typeof e?Number.isInteger(e):/^\d+$/.test(e)}class r_ extends im.F{static defaultProps={...im.F.defaultProps,type:void 0,count:void 0};get[Symbol.toStringTag](){return"QuerySet"}constructor(e,t){super(e,t,r_.defaultProps)}}class rm extends r_{device;handle;target=null;_queryPending=!1;_pollingPromise=null;get[Symbol.toStringTag](){return"Query"}constructor(e,t){if(super(e,t),this.device=e,t.count>1)throw Error("WebGL QuerySet can only have one value");this.handle=this.device.gl.createQuery(),Object.seal(this)}destroy(){this.device.gl.deleteQuery(this.handle)}beginTimestampQuery(){return this._begin(35007)}endTimestampQuery(){this._end()}beginOcclusionQuery(e){return this._begin(e?.conservative?36202:35887)}endOcclusionQuery(){this._end()}beginTransformFeedbackQuery(){return this._begin(35976)}endTransformFeedbackQuery(){this._end()}async resolveQuery(){return[await this.pollQuery()]}_begin(e){this._queryPending||(this.target=e,this.device.gl.beginQuery(this.target,this.handle))}_end(){!this._queryPending&&this.target&&(this.device.gl.endQuery(this.target),this.target=null,this._queryPending=!0)}isResultAvailable(){if(!this._queryPending)return!1;let e=this.device.gl.getQueryParameter(this.handle,34919);return e&&(this._queryPending=!1),e}isTimerDisjoint(){return this.device.gl.getParameter(36795)}getResult(){return this.device.gl.getQueryParameter(this.handle,34918)}getTimerMilliseconds(){return this.getResult()/1e6}pollQuery(e=1/0){if(this._pollingPromise)return this._pollingPromise;let t=0;return this._pollingPromise=new Promise((i,r)=>{let s=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):t++>e?(r("Timed out"),this._pollingPromise=null):requestAnimationFrame(s)};requestAnimationFrame(s)}),this._pollingPromise}}function rE(e){switch(e){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return(0,tp.v)(!1),0}}function rv(e){return e instanceof iv?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:function(e,t){let{device:i,width:r,height:s,id:n}=e;return i.createFramebuffer({...void 0,id:`framebuffer-for-${n}`,width:r,height:s,colorAttachments:[e]})}(e),deleteFramebuffer:!0}}class ry extends tf{static type="webgl";type="webgl";handle;features;limits;info;canvasContext;lost;_resolveContextLost;static isSupported(){return"undefined"!=typeof WebGL2RenderingContext}static attach(e){var t;if(e instanceof ry)return e;if(e?.device instanceof tf)return e.device;if(t=e,!("undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||t&&Number.isFinite(t._version)))throw Error("Invalid WebGL2RenderingContext");return new ry({gl:e})}static async create(e={}){te.R.groupCollapsed(1,"WebGLDevice created")();let t=[];for(let i of(e.debug&&t.push(iH()),e.spector&&t.push(iW()),"string"==typeof e.canvas&&t.push(tb.pageLoaded),await Promise.allSettled(t)))"rejected"===i.status&&te.R.error(`Failed to initialize debug libraries ${i.reason}`)();if(te.R.probe(2,"DOM is loaded")(),e.gl?.device)return te.R.warn("reattaching existing device")(),ry.attach(e.gl);let i=new ry(e),r=`\ 1526Created ${i.type}${i.debug?" debug":""} context: \ 1527${i.info.vendor}, ${i.info.renderer} for canvas: ${i.canvasContext.id}`;return te.R.probe(1,r)(),te.R.table(1,i.info)(),te.R.groupEnd(1)(),i}constructor(e){super({...e,id:e.id||(0,ts.L)("webgl-device")});let t=e.gl?.device;if(t)throw Error(`WebGL context already attached to device ${t.id}`);let i=e.gl?.canvas||e.canvas,r=!e.gl;this.canvasContext=new ik(this,{...e,autoResize:r,canvas:i}),this.lost=new Promise(e=>{this._resolveContextLost=e});let s=e.gl||null;if(!(s||=function(e,t){t={...t$,...t};let i=null,r=e=>i=e.statusMessage||i;e.addEventListener("webglcontextcreationerror",r,!1);let s=null;if(s||=e.getContext("webgl2",t),e.removeEventListener("webglcontextcreationerror",r,!1),!s)throw Error(`Failed to create WebGL context: ${i||"Unknown error"}`);if(t.onContextLost){let{onContextLost:i}=t;e.addEventListener("webglcontextlost",e=>i(e),!1)}if(t.onContextRestored){let{onContextRestored:i}=t;e.addEventListener("webglcontextrestored",e=>i(e),!1)}return s}(this.canvasContext.canvas,{...e,onContextLost:e=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."})})))throw Error("WebGL context creation failed");this.handle=s,this.gl=s,this.gl.device=this,this.gl._version=2,e.spector&&(this.spectorJS=function(e){if(e={...iG,...e},!e?.spector||(!iV&&globalThis.SPECTOR&&(te.R.probe(1,"SPECTOR foun
1527d and initialized")(),iV=new globalThis.SPECTOR.Spector,globalThis.luma&&(globalThis.luma.spector=iV)),!iV))return null;if(iz||(iz=!0,iV.spyCanvases(),iV?.onCaptureStarted.add(e=>te.R.info("Spector capture started:",e)()),iV?.onCapture.add(e=>{te.R.info("Spector capture complete:",e)(),iV?.getResultUI(),iV?.resultView.display(),iV?.resultView.addCapture(e)})),e?.canvas){if("string"==typeof e.spector&&e.spector!==e.canvas.id)return iV;iV?.startCapture(e?.canvas,500),new Promise(e=>setTimeout(e,2e3)).then(e=>{te.R.info("Spector capture stopped after 2 seconds")(),iV?.stopCapture()})}return iV}({...this.props,canvas:this.handle.canvas})),this.info=function(e,t){var i,r;let s=e.getParameter(7936),n=e.getParameter(7937);tX(e,"WEBGL_debug_renderer_info",t);let o=t.WEBGL_debug_renderer_info,a=e.getParameter(o?o.UNMASKED_VENDOR_WEBGL:7936),l=e.getParameter(o?o.UNMASKED_RENDERER_WEBGL:7937),h=a||s,u=l||n,c=e.getParameter(7938),d=tK(h,u),f=(i=h,r=u,/Metal/i.exec(i)||/Metal/i.exec(r)?"metal":/ANGLE/i.exec(i)||/ANGLE/i.exec(r)?"opengl":"unknown");return{type:"webgl",gpu:d,gpuType:function(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(tK(e,t)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}(h,u),gpuBackend:f,vendor:h,renderer:u,version:c,shadingLanguage:"glsl",shadingLanguageVersion:300}}(this.gl,this._extensions),this.limits=new i_(this.gl),this.features=new ig(this.gl,this._extensions,this.props.disabledFeatures),this.props.initalizeFeatures&&this.features.initializeFeatures(),r&&this.canvasContext.resize();let{enable:n=!0,copyState:a=!1}=e;tz(this.gl,{enable:n,copyState:a,log:(...e)=>te.R.log(1,...e)()}),e.debug&&(this.gl=function(e,t={}){return e?t.debug?function(e,t){if(!globalThis.WebGLDebugUtils)return te.R.warn("webgl-debug not loaded")(),e;let i=ij(e);if(i.debugContext)return i.debugContext;globalThis.WebGLDebugUtils.init({...o,...e});let r=globalThis.WebGLDebugUtils.makeDebugContext(e,iX.bind(null,t),iK.bind(null,t));for(let e in o)e in r||"number"!=typeof o[e]||(r[e]=o[e]);class s{}Object.setPrototypeOf(r,Object.getPrototypeOf(e)),Object.setPrototypeOf(s,r);let n=Object.create(s);return i.realContext=e,i.debugContext=n,n.debug=!0,n}(e,t):function(e){let t=ij(e);return t.realContext?t.realContext:e}(e):null}(this.gl,{...e,throwOnError:!0}),this.debug=!0,te.R.level=Math.max(te.R.level,1),te.R.warn("WebGL debug mode activated. Performance reduced.")())}destroy(){}get isLost(){return this.gl.isContextLost()}getSize(){return[this.gl.drawingBufferWidth,this.gl.drawingBufferHeight]}isTextureFormatSupported(e){return ih(this.gl,e,this._extensions)}isTextureFormatFilterable(e){var t=this.gl,i=this._extensions;if(!ih(t,e,i)||e.startsWith("depth")||e.startsWith("stencil"))return!1;try{if(th(e).signed)return!1}catch{return!1}return e.endsWith("32float")?!!tX(t,"OES_texture_float_linear, extensions",i):!e.endsWith("16float")||!!tX(t,"OES_texture_half_float_linear, extensions",i)}isTextureFormatRenderable(e){return!!ih(this.gl,e,this._extensions)&&"number"!=typeof e}createCanvasContext(e){throw Error("WebGL only supports a single canvas")}createBuffer(e){return new iM(this,this._getBufferProps(e))}_createTexture(e){return new iB(this,e)}createExternalTexture(e){throw Error("createExternalTexture() not implemented")}createSampler(e){return new iO(this,e)}createShader(e){return new iq(this,e)}createFramebuffer(e){return new iU(this,e)}createVertexArray(e){return new rd(this,e)}createTransformFeedback(e){return new rp(this,e)}createQuerySet(e){return new rm(this,e)}createRenderPipeline(e){return new ri(this,e)}beginRenderPass(e){return new i0(this,e)}createComputePipeline(e){throw Error("ComputePipeline not supported in WebGL")}beginComputePass(e){throw Error("ComputePass not supported in WebGL")}renderPass=null;createCommandEncoder(e){return new ra(this,e)}submit(){this.renderPass?.end(),this.renderPass=null}readPixelsToArrayWebGL(e,t){return function(e,t){var i,r,s,n,o;let{sourceX:a=0,sourceY:l=0,sourceFormat:h=6408,sourceAttachment:u=36064}=t||{}
1527,{target:c=null,sourceWidth:d,sourceHeight:f,sourceType:p}=t||{},{framebuffer:g,deleteFramebuffer:_}=rv(e);(0,tp.v)(g);let{gl:m,handle:E}=g;d=d||g.width,f=f||g.height,i=c,r=p=p||g.colorAttachments[u-36064]?.texture?.type||5121,s=h,n=d,o=f,c=i?i:new(i6(r=r||5121,{clamped:!1}))(n*o*rE(s)),p=p||function(e){switch(ArrayBuffer.isView(e)?e.constructor:e){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw Error("Failed to deduce GL constant from typed array")}}(c);let v=m.bindFramebuffer(36160,E);return m.readPixels(a,l,d,f,h,p,c),m.bindFramebuffer(36160,v||null),_&&g.destroy(),c}(e,t)}readPixelsToBufferWebGL(e,t){return function(e,t){let{target:i,sourceX:r=0,sourceY:s=0,sourceFormat:n=6408,targetByteOffset:o=0}=t||{},{sourceWidth:a,sourceHeight:l,sourceType:h}=t||{},{framebuffer:u,deleteFramebuffer:c}=rv(e);(0,tp.v)(u),a=a||u.width,l=l||u.height,h=h||5121;let d=i;if(!d){let e=o+a*l*rE(n)*function(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return(0,tp.v)(!1),0}}(h);d=u.device.createBuffer({byteLength:e})}let f=e.device.createCommandEncoder();return f.copyTextureToBuffer({source:e,width:a,height:l,origin:[r,s],destination:d,byteOffset:o}),f.destroy(),c&&u.destroy(),d}(e,t)}setParametersWebGL(e){tU(this.gl,e)}getParametersWebGL(e){return tk(this.gl,e)}withParametersWebGL(e,t){return iA(this.gl,e,t)}clearWebGL(e){!function(e,t){let{framebuffer:i=null,color:r=null,depth:s=null,stencil:n=null}=t||{},o={};i&&(o.framebuffer=i);let a=0;r&&(a|=16384,!0!==r&&(o.clearColor=r)),s&&(a|=256,!0!==s&&(o.clearDepth=s)),n&&(a|=1024,!0!==s&&(o.clearStencil=s)),(0,tp.v)(0!==a,"clear: bad arguments");let l=e.gl;iA(l,o,()=>{l.clear(a)})}(this,e)}resetWebGL(){te.R.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),tU(this.gl,tR)}gl;debug=!1;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};_extensions={};_polyfilled=!1;spectorJS;loseDevice(){let e=!1,t=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return t&&(e=!0,t.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),e}pushState(){tW(this.gl)}popState(){tj(this.gl)}setSpectorMetadata(e,t){e.__SPECTOR_Metadata=t}getGLKey(e,t){t=t||this.gl2||this.gl;let i=Number(e);for(let e in t)if(t[e]===i)return`GL.${e}`;return String(e)}_constants;setConstantAttributeWebGL(e,t){let i=this.limits.maxVertexAttributes;this._constants=this._constants||Array(i).fill(null);let r=this._constants[e];switch(r&&function(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}(r,t)&&te.R.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=t,t.constructor){case Float32Array:var s,n,o,a,l,h,u=this,c=e,d=t;switch(d.length){case 1:u.gl.vertexAttrib1fv(c,d);break;case 2:u.gl.vertexAttrib2fv(c,d);break;case 3:u.gl.vertexAttrib3fv(c,d);break;case 4:u.gl.vertexAttrib4fv(c,d);break;default:(0,tp.v)(!1)}break;case Int32Array:s=this,n=e,o=t,s.gl.vertexAttribI4iv(n,o);break;case Uint32Array:a=this,l=e,h=t,a.gl.vertexAttribI4uiv(l,h);break;default:(0,tp.v)(!1)}}getExtension(e){return tX(this.gl,e,this._extensions),this._extensions}}let rb=0,rA={device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>console.error(e),stats:t_.stats.get(`animation-loop-${rb++}`),useDevicePixels:!0,autoResizeViewport:!1,autoResizeDrawingBuffer:!1};class rT{device=null;canvas=null;props;animationProps=null;timeline=null;stats;cpuTime;gpuTime;frameRate;display;needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;constructor(e){if(this.props={...rA,...e}
1527,!(e=this.props).device)throw Error("No device provided");let{useDevicePixels:t=!0}=this.props;this.stats=e.stats||new E({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:e.autoResizeViewport,autoResizeDrawingBuffer:e.autoResizeDrawingBuffer,useDevicePixels:t}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}setNeedsRedraw(e){return this.needsRedraw=this.needsRedraw||e,this}setProps(e){return"autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),"autoResizeDrawingBuffer"in e&&(this.props.autoResizeDrawingBuffer=e.autoResizeDrawingBuffer||!1),"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1),this}async start(){if(this._running)return this;this._running=!0;try{let e;if(this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),!this._running)return null;return!1!==e&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this}catch(t){let e=t instanceof Error?t:Error("Unknown error");throw this.props.onError(e),e}}stop(){return this._running&&(this.animationProps&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){return this.device?.isLost||(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers()),this}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){if(this._running){var e;this._animationFrameId=(e=this._animationFrame.bind(this),"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60))}}_cancelAnimationFrame(){if(null!==this._animationFrameId){var e;e=this._animationFrameId,"undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e),this._animationFrameId=null}}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(e){if(this.display)return void this.display._renderFrame(e);this.props.onRender(this._getAnimationProps()),this.device.submit()}_clearNeedsRedraw(){this.needsRedraw=!1}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_initializeAnimationProps(){if(!this.device)throw Error("loop");this.animationProps={animationLoop:this,device:this.device,canvas:this.device?.canvasContext?.canvas,timeline:this.timeline,useDevicePixels:this.props.useDevicePixels,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:e,height:t,aspect:i}=this._getSizeAndAspect();(e!==this.animationProps.width||t!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=t,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw Error("No device provided");this.canvas=this.device.canvasContext?.canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";let t=document.createElement("div");t.style.position="absolute",t.style.left="10px",t.style.bottom="10px",t.style.width="300px",t.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(t);let i=this.props.onAddHTML(t);i&&(t.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[e,t]=this.device?.canvasContext?.getPixelSize()||[1,1],i=1,r=this.device?.canvasContext?.canvas;return r&&r.clientHeight?i=r.clientWidth/r.clientHeight:e>0&&t>0&&(i=e/t),{width:e,height:t,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.props.autoResizeDrawingBuffer&&this.device?.canvasContext?.resize({useDevicePixels:this.props.useDevicePixels})}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}}var rR=i(49656);
1527let rS={mousedown:1,mousemove:2,mouseup:4};!function(e){let t=e.prototype.handler;e.prototype.handler=function(e){let i=this.store;e.button>0&&"pointerdown"===e.type&&!function(e,t){for(let i=0;i<e.length;i++)if(t(e[i]))return!0;return!1}(i,t=>t.pointerId===e.pointerId)&&i.push(e),t.call(this,e)}}(rR.PointerEventInput),rR.MouseInput.prototype.handler=function(e){let t=rS[e.type];1&t&&e.button>=0&&(this.pressed=!0),2&t&&0===e.buttons&&(t=4),this.pressed&&(4&t&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:"mouse",srcEvent:e}))};let rw=rR.Manager;class rP{constructor(e,t,i){this.element=e,this.callback=t,this.options={enable:!0,...i}}}let rC=rR?[[rR.Pan,{event:"tripan",pointers:3,threshold:0,enable:!1}],[rR.Rotate,{enable:!1}],[rR.Pinch,{enable:!1}],[rR.Swipe,{enable:!1}],[rR.Pan,{threshold:0,enable:!1}],[rR.Press,{enable:!1}],[rR.Tap,{event:"doubletap",taps:2,enable:!1}],[rR.Tap,{event:"anytap",enable:!1}],[rR.Tap,{enable:!1}]]:null,rx={tripan:["rotate","pinch","pan"],rotate:["pinch"],pinch:["pan"],pan:["press","doubletap","anytap","tap"],doubletap:["anytap"],anytap:["tap"]},rL={doubletap:["tap"]},rM={pointerdown:"pointerdown",pointermove:"pointermove",pointerup:"pointerup",touchstart:"pointerdown",touchmove:"pointermove",touchend:"pointerup",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup"},rI={KEY_EVENTS:["keydown","keyup"],MOUSE_EVENTS:["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],WHEEL_EVENTS:["wheel","mousewheel"]},rO={tap:"tap",anytap:"anytap",doubletap:"doubletap",press:"press",pinch:"pinch",pinchin:"pinch",pinchout:"pinch",pinchstart:"pinch",pinchmove:"pinch",pinchend:"pinch",pinchcancel:"pinch",rotate:"rotate",rotatestart:"rotate",rotatemove:"rotate",rotateend:"rotate",rotatecancel:"rotate",tripan:"tripan",tripanstart:"tripan",tripanmove:"tripan",tripanup:"tripan",tripandown:"tripan",tripanleft:"tripan",tripanright:"tripan",tripanend:"tripan",tripancancel:"tripan",pan:"pan",panstart:"pan",panmove:"pan",panup:"pan",pandown:"pan",panleft:"pan",panright:"pan",panend:"pan",pancancel:"pan",swipe:"swipe",swipeleft:"swipe",swiperight:"swipe",swipeup:"swipe",swipedown:"swipe"},rN={click:"tap",anyclick:"anytap",dblclick:"doubletap",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseover:"pointerover",mouseout:"pointerout",mouseleave:"pointerleave"},rF="undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():"",rD="undefined"!=typeof window?window:i.g;void 0!==i.g?i.g:window;let rB=!1;try{rD.addEventListener("test",null,{get passive(){return rB=!0,!0}}),rD.removeEventListener("test",null)}catch(e){rB=!1}let rU=-1!==rF.indexOf("firefox"),{WHEEL_EVENTS:rk}=rI,rG="wheel";class rV extends rP{constructor(e,t,i){super(e,t,i),this.handleEvent=e=>{if(!this.options.enable)return;let t=e.deltaY;rD.WheelEvent&&(rU&&e.deltaMode===rD.WheelEvent.DOM_DELTA_PIXEL&&(t/=rD.devicePixelRatio),e.deltaMode===rD.WheelEvent.DOM_DELTA_LINE&&(t*=40)),0!==t&&t%4.000244140625==0&&(t=Math.floor(t/4.000244140625)),e.shiftKey&&t&&(t*=.25),this.callback({type:rG,center:{x:e.clientX,y:e.clientY},delta:-t,srcEvent:e,pointerType:"mouse",target:e.target})},this.events=(this.options.events||[]).concat(rk),this.events.forEach(t=>e.addEventListener(t,this.handleEvent,!!rB&&{passive:!1}))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,t){e===rG&&(this.options.enable=t)}}let{MOUSE_EVENTS:rz}=rI,rW="pointermove",rj="pointerover",rH="pointerout",r$="pointerenter",rX="pointerleave";class rK extends rP{constructor(e,t,i){super(e,t,i),this.handleEvent=e=>{this.handleOverEvent(e),this.handleOutEvent(e),this.handleEnterEvent(e),this.handleLeaveEvent(e),this.handleMoveEvent(e)},this.pressed=!1;let{enable:r}=this.options;this.enableMoveEvent=r,this.enableLeaveEvent=r,this.enableEnterEvent=r,this.enableOutEvent=r,this.enableOverEvent=r,this.events=(this.options.events||[]).concat(rz),this.events.forEach(t=>e.addEventListener(t,this.handleEvent))}
1527destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,t){e===rW&&(this.enableMoveEvent=t),e===rj&&(this.enableOverEvent=t),e===rH&&(this.enableOutEvent=t),e===r$&&(this.enableEnterEvent=t),e===rX&&(this.enableLeaveEvent=t)}handleOverEvent(e){this.enableOverEvent&&"mouseover"===e.type&&this._emit(rj,e)}handleOutEvent(e){this.enableOutEvent&&"mouseout"===e.type&&this._emit(rH,e)}handleEnterEvent(e){this.enableEnterEvent&&"mouseenter"===e.type&&this._emit(r$,e)}handleLeaveEvent(e){this.enableLeaveEvent&&"mouseleave"===e.type&&this._emit(rX,e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":0===e.buttons&&(this.pressed=!1),this.pressed||this._emit(rW,e);break;case"mouseup":this.pressed=!1}}_emit(e,t){this.callback({type:e,center:{x:t.clientX,y:t.clientY},srcEvent:t,pointerType:"mouse",target:t.target})}}let{KEY_EVENTS:rY}=rI,rZ="keydown",rq="keyup";class rQ extends rP{constructor(e,t,i){super(e,t,i),this.handleEvent=e=>{let t=e.target||e.srcElement;("INPUT"!==t.tagName||"text"!==t.type)&&"TEXTAREA"!==t.tagName&&(this.enableDownEvent&&"keydown"===e.type&&this.callback({type:rZ,srcEvent:e,key:e.key,target:e.target}),this.enableUpEvent&&"keyup"===e.type&&this.callback({type:rq,srcEvent:e,key:e.key,target:e.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(rY),e.tabIndex=this.options.tabIndex||0,e.style.outline="none",this.events.forEach(t=>e.addEventListener(t,this.handleEvent))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,t){e===rZ&&(this.enableDownEvent=t),e===rq&&(this.enableUpEvent=t)}}let rJ="contextmenu";class r0 extends rP{constructor(e,t,i){super(e,t,i),this.handleEvent=e=>{this.options.enable&&this.callback({type:rJ,center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,t){e===rJ&&(this.options.enable=t)}}let r1={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},r3={srcElement:"root",priority:0};class r2{constructor(e){this.handleEvent=e=>{if(this.isEmpty())return;let t=this._normalizeEvent(e),i=e.srcEvent.target;for(;i&&i!==t.rootElement;){if(this._emit(t,i),t.handled)return;i=i.parentNode}this._emit(t,"root")},this.eventManager=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,t,i,r=!1,s=!1){let{handlers:n,handlersByElement:o}=this,a=r3;"string"==typeof i||i&&i.addEventListener?a={...r3,srcElement:i}:i&&(a={...r3,...i});let l=o.get(a.srcElement);l||(l=[],o.set(a.srcElement,l));let h={type:e,handler:t,srcElement:a.srcElement,priority:a.priority};r&&(h.once=!0),s&&(h.passive=!0),n.push(h),this._active=this._active||!h.passive;let u=l.length-1;for(;u>=0&&!(l[u].priority>=h.priority);)u--;l.splice(u+1,0,h)}remove(e,t){let{handlers:i,handlersByElement:r}=this;for(let s=i.length-1;s>=0;s--){let n=i[s];if(n.type===e&&n.handler===t){i.splice(s,1);let e=r.get(n.srcElement);e.splice(e.indexOf(n),1),0===e.length&&r.delete(n.srcElement)}}this._active=i.some(e=>!e.passive)}_emit(e,t){let i=this.handlersByElement.get(t);if(i){let t=!1,r=()=>{e.handled=!0},s=()=>{e.handled=!0,t=!0},n=[];for(let o=0;o<i.length;o++){let{type:a,handler:l,once:h}=i[o];if(l({...e,type:a,stopPropagation:r,stopImmediatePropagation:s}),h&&n.push(i[o]),t)break}for(let e=0;e<n.length;e++){let{type:t,handler:i}=n[e];this.remove(t,i)}}}_normalizeEvent(e){let t=this.eventManager.getElement();return{...e,...function(e){let t=r1[e.srcEvent.type];if(!t)return null;let{buttons:i,button:r}=e.srcEvent,s=!1,n=!1,o=!1;return 2===t?(s=!!(1&i),n=!!(4&i),o=!!(2&i)):(s=0===r,n=1===r,o=2===r),{leftButton:s,middleButton:n,rightButton:o}}(e),...function(e,t){let i=e.center;if(!i)return null;let r=t.getBoundingClientRect(),s=r.width/t.offsetWidth||1,n=r.height/t.offsetHeight||1,o={x:(i.x-r.left-t.clientLeft)/s,y:(i.y-r.top-t.clientTop)/n};return{center:i,offsetCenter:o}}(e,t),preventDefault:()=>{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:t}}}let r6={events:null,recognizers:null,recognizerOptions:{},Manager:rw,touchAction:"none",tabIndex:0};class r4{constructor(e=null,t){this._onBasicInput=e=>{let{srcEvent:t}=e,i=rM[t.type];i&&this.manager.emit(i,e)},this._onOtherEvent=e=>{this.manager.emit(e.type,e)},this.options={...r6,...t},this.events=new Map,this.setElement(e);let{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}
1527setElement(e){if(this.element&&this.destroy(),this.element=e,!e)return;let{options:t}=this,i=t.Manager;for(let r in this.manager=new i(e,{touchAction:t.touchAction,recognizers:t.recognizers||rC}).on("hammer.input",this._onBasicInput),t.recognizers||Object.keys(rx).forEach(e=>{let t=this.manager.get(e);t&&rx[e].forEach(e=>{t.recognizeWith(e)})}),t.recognizerOptions){let e=this.manager.get(r);if(e){let i=t.recognizerOptions[r];delete i.enable,e.set(i)}}for(let[i,r]of(this.wheelInput=new rV(e,this._onOtherEvent,{enable:!1}),this.moveInput=new rK(e,this._onOtherEvent,{enable:!1}),this.keyInput=new rQ(e,this._onOtherEvent,{enable:!1,tabIndex:t.tabIndex}),this.contextmenuInput=new r0(e,this._onOtherEvent,{enable:!1}),this.events))r.isEmpty()||(this._toggleRecognizer(r.recognizerName,!0),this.manager.on(i,r.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput
1527=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(e,t,i){this._addEventHandler(e,t,i,!1)}once(e,t,i){this._addEventHandler(e,t,i,!0)}watch(e,t,i){this._addEventHandler(e,t,i,!1,!0)}off(e,t){this._removeEventHandler(e,t)}_toggleRecognizer(e,t){let{manager:i}=this;if(!i)return;let r=i.get(e);if(r&&r.options.enable!==t){r.set({enable:t});let s=rL[e];s&&!this.options.recognizers&&s.forEach(s=>{let n=i.get(s);t?(n.requireFailure(e),r.dropRequireFailure(s)):n.dropRequireFailure(e)})}this.wheelInput.enableEventType(e,t),this.moveInput.enableEventType(e,t),this.keyInput.enableEventType(e,t),this.contextmenuInput.enableEventType(e,t)}_addEventHandler(e,t,i,r,s){if("string"!=typeof e){for(let n in i=t,e)this._addEventHandler(n,e[n],i,r,s);return}let{manager:n,events:o}=this,a=rN[e]||e,l=o.get(a);!l&&(l=new r2(this),o.set(a,l),l.recognizerName=rO[a]||a,n&&n.on(a,l.handleEvent)),l.add(e,t,i,r,s),l.isEmpty()||this._toggleRecognizer(l.recognizerName,!0)}_removeEventHandler(e,t){if("string"!=typeof e){for(let t in e)this._removeEventHandler(t,e[t]);return}let{events:i}=this,r=rN[e]||e,s=i.get(r);if(s&&(s.remove(e,t),s.isEmpty())){let{recognizerName:e}=s,t=!1;for(let r of i.values())if(r.recognizerName===e&&!r.isEmpty()){t=!0;break}t||this._toggleRecognizer(e,!1)}}}function r5(){}let r8={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{type:"webgl"},gl:null,glOptions:{},canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:r5,onWebGLInitialized:r5,onResize:r5,onViewStateChange:r5,onInteractionStateChange:r5,onBeforeRender:r5,onAfterRender:r5,onLoad:r5,onError:e=>d.A.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:({isDragging:e})=>e?"grabbing":"grab",getTooltip:null,debug:!1,drawPickingColors:!1};class r7{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new E({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=e=>{let{_pickRequest:t}=this;if("pointerleave"===e.type)t.x=-1,t.y=-1,t.radius=0;else{if(e.leftButton||e.rightButton)return;let i=e.offsetCenter;if(!i)return;t.x=i.x,t.y=i.y,t.radius=this.props.pickingRadius}this.layerManager&&(this.layerManager.context.mousePosition={x:t.x,y:t.y}),t.event=e},this._onEvent=e=>{let t=ec.qY[e.type],i=e.offsetCenter;if(!t||!i||!this.layerManager)return;let r=this.layerManager.getLayers(),s=this.deckPicker.getLastPickedObject({x:i.x,y:i.y,layers:r,viewports:this.getViewports(i)},this._lastPointerDownInfo),{layer:n}=s,o=n&&(n[t.handler]||n.props[t.handler]),a=this.props[t.handler],l=!1;o&&(l=o.call(n,s,e)),l||(a?.(s,e),this.widgetManager.onEvent(s,e))},this._onPointerDown=e=>{let t=e.offsetCenter,i=this._pick("pickObject","pickObject Time",{x:t.x,y:t.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=i.result[0]||i.emptyInfo},this.props={...r8,...e},(e=this.props).viewState&&e.initialViewState&&d.A.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device?this.device=e.device:e.gl&&(e.gl instanceof WebGLRenderingContext&&d.A.error("WebGL1 context not supported.")(),this.device=ry.attach(e.gl));let t=this.device;t||(t_.registerDevices([ry]),t=t_.createDevice({...e.deviceProps,canvas:this._createCanvas(e)})),this.animationLoop=this._createAnimationLoop(t,e),this.setProps(e),e._typedArrayManagerProps&&eG.A.
1527setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,this.props.canvas||this.props.device||this.props.gl||!this.canvas||(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&d.A.removed("onLayerHover","onHover")(),"onLayerClick"in e&&d.A.removed("onLayerClick","onClick")(),e.initialViewState&&!(0,R.b)(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);let t=Object.create(this.props);Object.assign(t,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop?.setProps(t),this.layerManager&&(this.viewManager.setProps(t),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(t),this.effectManager.setProps(t),this.deckRenderer.setProps(t),this.deckPicker.setProps(t),this.widgetManager.setProps(t)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let t=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(e),r=this.layerManager.needsRedraw(e),s=this.effectManager.needsRedraw(e),n=this.deckRenderer.needsRedraw(e);return t||i||r||s||n}redraw(e){if(!this.layerManager)return;let t=this.needsRedraw({clearRedrawFlags:!0});(t=e||t)&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(t):this._drawLayers(t))}get isInitialized(){return null!==this.viewManager}getViews(){return(0,U.A)(this.viewManager),this.viewManager.views}getViewports(e){return(0,U.A)(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){let t=this._pick("pickObject","pickObject Time",e).result;return t.length?t[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,t=!1){for(let i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],force
1527Update:t})}_removeResources(e){for(let t of e)this.layerManager.resourceManager.remove(t)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_pick(e,t,i){(0,U.A)(this.deckPicker);let{stats:r}=this;r.get("Pick Count").incrementCount(),r.get(t).timeStart();let s=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return r.get(t).timeEnd(),s}_createCanvas(e){let t=e.canvas;return"string"==typeof t&&(t=document.getElementById(t),(0,U.A)(t)),t||((t=document.createElement("canvas")).id=e.id||"deckgl-overlay",(e.parent||document.body).appendChild(t)),Object.assign(t.style,e.style),t}_setCanvasSize(e){if(!this.canvas)return;let{width:t,height:i}=e;if(t||0===t){let e=Number.isFinite(t)?`${t}px`:t;this.canvas.style.width=e}if(i||0===i){let t=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=t}}_updateCanvasSize(){let{canvas:e}=this;if(!e)return;let t=e.clientWidth??e.width,i=e.clientHeight??e.height;(t!==this.width||i!==this.height)&&(this.width=t,this.height=i,this.viewManager?.setProps({width:t,height:i}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:t,height:i}))}_createAnimationLoop(e,t){let{gl:i,onError:r,useDevicePixels:s}=t;return new rT({device:e,useDevicePixels:s,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:e=>this._setDevice(e.device),onRender:this._onRenderFrame.bind(this),onError:r})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,t=Array.isArray(e)?e:e?[e]:[new Q({id:"default-view"})];return t.length&&this.props.controller&&(t[0].props.controller=this.props.controller),t}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(Error("WebGL context is lost"))}_pickAndCallback(){let{_pickRequest:e}=this;if(e.event){let{result:t,emptyInfo:i}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=t.length>0;let r=i,s=!1;for(let i of t)r=i,s=i.layer?.onHover(i,e.event)||s;s||(this.props.onHover?.(r,e.event),this.widgetManager.onHover(r,e.event)),e.event=null}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas),this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device instanceof ry&&this.props.onWebGLInitialized(this.device.gl);let t=new n;for(let e in t.play(),this.animationLoop.attachTimeline(t),this.eventManager=new r4(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}}),ec.qY)this.eventManager.on(e,this._onEvent);this.viewManager=new S({timeline:t,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new T(this.device,{deck:this,stats:this.stats,viewport:i,timeline:t}),this.effectManager=new eS({deck:this,device:this.device}),this.deckRenderer=new eL(this.device),this.deckPicker=new eN(this.device),this.widgetManager=new eB({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new ek),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,t){let{device:i,gl:r}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:r});let s={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...t};this.deckRenderer?.renderLayers(s),"screen"===s.pass&&this.widgetManager.onRedraw({viewports:s.viewports,layers:s.layers}),this.props.onAfterRender({device:i,gl:r})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60==0&&(this._getMetrics(),this.stats.reset(),d.A.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(
1527),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let t=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:t},!this.props.viewState&&this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let t=this.animationLoop.stats;e.get("GPU Time").addTime(t.get("GPU Time").lastTiming),e.get("CPU Time").addTime(t.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:t}=this;e.fps=t.get("frameRate").getHz(),e.setPropsTime=t.get("setProps Time").time,e.updateAttributesTime=t.get("Update Attributes").time,e.framesRedrawn=t.get("Redraw Count").count,e.pickTime=t.get("pickObject Time").time+t.get("pickMultipleObjects Time").time+t.get("pickObjects Time").time,e.pickCount=t.get("Pick Count").count,e.gpuTime=t.get("GPU Time").time,e.cpuTime=t.get("CPU Time").time,e.gpuTimePerFrame=t.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=t.get("CPU Time").getAverageTime();let i=t_.stats.get("Memory Usage");e.bufferMemory=i.get("Buffer Memory").count,e.textureMemory=i.get("Texture Memory").count,e.renderbufferMemory=i.get("Renderbuffer Memory").count,e.gpuMemory=i.get("GPU Memory").count}}r7.defaultProps=r8,r7.VERSION=e7;var r9=i(23459),se=i(28760),st=i(2595),si=i(2186);class sr extends r9.M{constructor(e=0,t=0){super(2),(0,M.cy)(e)&&1==arguments.length?this.copy(e):(M.$W.debug&&((0,se.ws)(e),(0,se.ws)(t)),this[0]=e,this[1]=t)}set(e,t){return this[0]=e,this[1]=t,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this.check()}fromObject(e){return M.$W.debug&&((0,se.ws)(e.x),(0,se.ws)(e.y)),this[0]=e.x,this[1]=e.y,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return(0,st.Z0)(this,this,e),this.check()}transformAsVector(e){return(0,si.B$)(this,this,e),this.check()}transformByMatrix3(e){return(0,st.ei)(this,this,e),this.check()}transformByMatrix2x3(e){return(0,st.l0)(this,this,e),this.check()}transformByMatrix2(e){return(0,st.ZF)(this,this,e),this.check()}}function ss(e,t,i,r){if(i){if(i.userData._googleMap===e)return i;sn(i)}let s={click:null,rightclick:null,dblclick:null,mousemove:null,mouseout:null},n=new r7({...r,useDevicePixels:!!r.interleaved||r.useDevicePixels,style:r.interleaved?null:{pointerEvents:"none"},parent:function(e,t){let i=document.createElement("div");return i.style.position="absolute",Object.assign(i.style,t),"getPanes"in e?e.getPanes()?.overlayLayer.appendChild(i):e.getMap()?.getDiv().appendChild(i),i}(t,r.style),views:new Q({repeat:!0}),initialViewState:{longitude:0,latitude:0,zoom:1},controller:!1});for(let t in s)s[t]=e.addListener(t,e=>(function(e,t,i){if(!e.isInitialized)return;let r={type:t,offsetCenter:function(e,t){if(e.pixel)return e.pixel;let i=t.getViewports()[0].project([e.latLng.lng(),e.latLng.lat()]);return{x:i[0],y:i[1]}}(i,e),srcEvent:i};switch(t){case"click":case"rightclick":r.type="click",r.tapCount=1,e._onPointerDown(r),e._onEvent(r);break;case"dblclick":r.type="click",r.tapCount=2,e._onEvent(r);break;case"mousemove":r.type="pointermove",e._onPointerMove(r);break;case"mouseout":r.type="pointerleave",e._onPointerMove(r);break;default:return}})(n,t,e));return n.userData._googleMap=e,n.userData._eventListeners=s,n}function sn(e){let{_eventListeners:t}=e.userData;for(let e in t)t[e]&&t[e].remove();e.finalize()}function so(e,t){let{width:i,height:r}=sa(e),{center:s,heading:n,tilt:o,zoom:a}=t.getCameraParams(),l=new ea.k().perspective({fovy:25*Math.PI/180,aspect:r?i/r:1,near:.75,far:3e14});return{width:i,height:r,viewState:{altitude:.5*l[5],bearing:n,latitude:s.lat(),longitude:s.lng(),pitch:o,projectionMatrix:l,repeat:!0,zoom:a-1}}}function sa(e){let t=e.getDiv().firstChild;return{width:t.offsetWidth,height:t.offsetHeight}}function sl(e,t,i){let r=new google.maps.Point(t,i),s=e.fromContainerPixelToLatLng(r);return[s.lng(),s.lat()]}let sh=()=>!1,su={depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],blendEquation:32774};function sc(){}let sd={interleaved:!0};class sf{constructor(e){this.props={},this._map=null,this._deck=null,this._overlay=null,this.setProps({...sd,...e})}setMap(e){if(e===this._map)return;let{VECTOR:t,UNINITIALIZED:i}=google.maps.RenderingType;this._map&&(!e&&this._map.getRenderingType()===t&&this.props.interleaved&&this._overlay.requestRedraw(),this._overlay?.setMap(null),this._map=null),e&&(this._map=e,e.getRenderingType()!==i?this._createOverlay(e):e.addListener("renderingtype_changed",()=>{this._createOverlay(e)}))}setProps(e){if(Object.assign(this.props,e),this._deck){let t=this._deck.getCanvas();e.style&&t?.parentElement&&(Object.assign(t.parentElement.style,e.style),e.style=null),this._deck.setProps(e)}}pickObject(e){return this._deck&&this._deck.pickObject(e)}pickMultipleObjects(e){return this._deck&&this._deck.pickMultipleObjects(e)}pickObjects(e){return this._deck&&this._deck.pickObjects(e)}finalize(){this.setMap(null),this._deck&&(sn(this._deck),this._deck=null)}_createOverlay(e){let{interleaved:t}=this.props,{VECTOR:i,UNINITIALIZED:r}=google.maps.RenderingType,s=e.getRenderingType();if(s===r)return;let n=new(s===i&&google.maps.WebGLOverlayView?google.maps.WebGLOverlayView:google.maps.OverlayView);n instanceof google.maps.WebGLOverlayView?(t?(n.onAdd=sc,n.onContextRestored=this._onContextRestored.bind(this),n.onDraw=this._onDrawVectorInterleaved.bind(this)):(n.onAdd=this._onAdd.bind(this),n.onContextRestored=sc,n.onDraw=this._onDrawVectorOverlay.bind(this)),n.onContextLost=this._onContextLost.bind(this)):(n.onAdd=this._onAdd.bind(this),n.draw=this._onDrawRaster.bind(this)),n.onRemove=this._onRemove.bind(this),this._overlay=n,this._overlay.setMap(e)}_onAdd(){this._deck=ss(this._map,this._overlay,this._deck,this.props)}_onContextRestored({gl:e}){if(!this._map||!this._overlay)return;let t=()=>{this._overlay&&this._overlay.requestRedraw()},i=ss(this._map,this._overlay,this._deck,{gl:e,_customRender:t,...this.props});this._deck=i;let r=i.animationLoop;r._renderFrame=()=>{let t=e.getParameter(34964);i.device.withParametersWebGL({},()=>{r.props.onRender(r.animationProps)}),e.bindBuffer(34962,t)}}_onContextLost(){this._deck&&(sn(this._deck),this._deck=null)}_onRemove(){this._deck?.setProps({layerFilter:sh})}_onDrawRaster(){if(!this._deck||!this._map)return;let e=this._deck,{width:t,height:i,left:r,top:s,...n}=function(e,t){let i,{width:r,height:s}=sa(e),n=t.getProjection(),o=e.getBounds();if(!o)return{width:r,height:s,left:0,top:0};
1527let a=o.getNorthEast(),l=o.getSouthWest(),h=n.fromLatLngToDivPixel(a),u=n.fromLatLngToDivPixel(l),c=sl(n,r/2,s/2),d=new google.maps.LatLng(0,c[0]),f=n.fromLatLngToContainerPixel(d),p=n.fromLatLngToDivPixel(d);if(!h||!u||!p||!f)return{width:r,height:s,left:0,top:0};let g=Math.round(p.x-f.x),_=p.y-f.y,m=sl(n,r/2,0),E=sl(n,r/2,s),v=c[1],y=c[0];if(Math.abs(v)>85.05113){v=v>0?85.05113:-85.05113;let e=new google.maps.LatLng(v,y);_+=n.fromLatLngToContainerPixel(e).y-s/2}_=Math.round(_);let b=180*new sr(m).sub(E).verticalAngle()/Math.PI;b<0&&(b+=360);let A=e.getHeading()||0,T=e.getZoom()-1;if(0===b)i=s?(u.y-h.y)/s:1;else if(b===A){let e=new sr([h.x,h.y]).sub([u.x,u.y]).len(),t=new sr([r,-s]).len();i=t?e/t:1}return{width:r,height:s,left:g,top:_,zoom:T+=Math.log2(i||1),bearing:b,pitch:e.getTilt(),latitude:v,longitude:y}}(this._map,this._overlay),o=e.getCanvas(),a=o?.parentElement||e.props.parent;if(a){let e=a.style;e.left=`${r}px`,e.top=`${s}px`}e.setProps({width:t,height:i,viewState:{altitude:1e4,...n}}),e.redraw()}_onDrawVectorInterleaved({gl:e,transformer:t}){if(!this._deck||!this._map)return;let i=this._deck;if(i.setProps({...so(this._map,t),width:null,height:null}),i.isInitialized){let t=i.device,r=t.getParametersWebGL(36006);i.setProps({_framebuffer:r}),t.getCanvasContext().resize(),i.needsRedraw({clearRedrawFlags:!0}),t.setParametersWebGL({viewport:[0,0,e.canvas.width,e.canvas.height],scissor:[0,0,e.canvas.width,e.canvas.height],stencilFunc:[519,0,255,519,0,255]}),t.withParametersWebGL(su,()=>{i._drawLayers("google-vector",{clearCanvas:!1})})}}_onDrawVectorOverlay({transformer:e}){if(!this._deck||!this._map)return;let t=this._deck;t.setProps({...so(this._map,e)}),t.redraw()}}},49528:(e,t,i)=>{"use strict";i.d(t,{h:()=>s});var r=i(28970);class s extends r.F{static defaultProps={...r.F.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",mappedAtCreation:!1};static MAP_READ=1;static MAP_WRITE=2;static COPY_SRC=4;static COPY_DST=8;static INDEX=16;static VERTEX=32;static UNIFORM=64;static STORAGE=128;static INDIRECT=256;static QUERY_RESOLVE=512;get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,t){let i={...t};(t.usage||0)&s.INDEX&&!t.indexType&&(t.data instanceof Uint32Array?i.indexType="uint32":t.data instanceof Uint16Array&&(i.indexType="uint16")),super(e,i,s.defaultProps),this.usage=t.usage||0,this.indexType=i.indexType,this.updateTimestamp=e.incrementTimestamp()}readSyncWebGL(e,t){throw Error("not implemented")}static DEBUG_DATA_MAX_LENGTH=32;debugData=new ArrayBuffer(0);_setDebugData(e,t,i){let r=ArrayBuffer.isView(e)?e.buffer:e,n=Math.min(e?e.byteLength:i,s.DEBUG_DATA_MAX_LENGTH);null===e?this.debugData=new ArrayBuffer(n):0===t&&i===e.byteLength?this.debugData=r.slice(0,n):this.debugData=r.slice(t,t+n)}}},49656:(e,t,i)=>{var r;!function(s,n,o,a){"use strict";var l,h=["","webkit","Moz","MS","ms","o"],u=n.createElement("div"),c=Math.round,d=Math.abs,f=Date.now;function p(e,t,i){return setTimeout(b(e,i),t)}function g(e,t,i){return!!Array.isArray(e)&&(_(e,i[t],i),!0)}function _(e,t,i){var r;if(e)if(e.forEach)e.forEach(t,i);else if(e.length!==a)for(r=0;r<e.length;)t.call(i,e[r],r,e),r++;else for(r in e)e.hasOwnProperty(r)&&t.call(i,e[r],r,e)}function m(e,t,i){var r="DEPRECATED METHOD: "+t+"\n"+i+" AT \n";return function(){var t=Error("get-stack-trace"),i=t&&t.stack?t.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",n=s.console&&(s.console.warn||s.console.log);return n&&n.call(s.console,r,i),e.apply(this,arguments)}}l="function"!=typeof Object.assign?function(e){if(null==e)throw TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var s in r)r.hasOwnProperty(s)&&(t[s]=r[s])}return t}:Object.assign;var E=m(function(e,t,i){for(var r=Object.keys(t),s=0;s<r.length;)(!i||i&&e[r[s]]===a)&&(e[r[s]]=t[r[s]]),s++;return e},"extend","Use `assign`."),v=m(function(e,t){return E(e,t,!0)},"merge","Use `assign`.");function y(e,t,i){var r,s=t.prototype;(r=e.prototype=Object.create(s)).constructor=e,r._super=s,i&&l(r,i)}function b(e,t){return function(){return e.apply(t,arguments)}}function A(e,t){return"function"==typeof e?e.apply(t&&t[0]||a,t):e}function T(e,t,i){_(P(t),function(t){e.addEventListener(t,i,!1)})}function R(e,t,i){_(P(t),function(t){e.removeEventListener(t,i,!1)})}function S(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function w(e,t){return e.indexOf(t)>-1}function P(e){return e.trim().split(/\s+/g)}
1527function C(e,t,i){if(e.indexOf&&!i)return e.indexOf(t);for(var r=0;r<e.length;){if(i&&e[r][i]==t||!i&&e[r]===t)return r;r++}return -1}function x(e){return Array.prototype.slice.call(e,0)}function L(e,t,i){for(var r=[],s=[],n=0;n<e.length;){var o=t?e[n][t]:e[n];0>C(s,o)&&r.push(e[n]),s[n]=o,n++}return i&&(r=t?r.sort(function(e,i){return e[t]>i[t]}):r.sort()),r}function M(e,t){for(var i,r,s=t[0].toUpperCase()+t.slice(1),n=0;n<h.length;){if((r=(i=h[n])?i+s:t)in e)return r;n++}return a}var I=1;function O(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow||s}var N="ontouchstart"in s,F=M(s,"PointerEvent")!==a,D=N&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),B="touch",U="mouse",k=["x","y"],G=["clientX","clientY"];function V(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){A(e.options.enable,[e])&&i.handler(t)},this.init()}function z(e,t,i){var r,s,n,o,l,h,u,c,p,g,_,m,E,v,y,b,A,T,R,w,P,C=i.pointers.length,x=i.changedPointers.length,L=1&t&&C-x==0,M=12&t&&C-x==0;i.isFirst=!!L,i.isFinal=!!M,L&&(e.session={}),i.eventType=t,r=e,s=i,n=r.session,l=(o=s.pointers).length,n.firstInput||(n.firstInput=W(s)),l>1&&!n.firstMultiple?n.firstMultiple=W(s):1===l&&(n.firstMultiple=!1),h=n.firstInput,c=(u=n.firstMultiple)?u.center:h.center,p=s.center=j(o),s.timeStamp=f(),s.deltaTime=s.timeStamp-h.timeStamp,s.angle=K(c,p),s.distance=X(c,p),g=n,m=(_=s).center,E=g.offsetDelta||{},v=g.prevDelta||{},y=g.prevInput||{},(1===_.eventType||4===y.eventType)&&(v=g.prevDelta={x:y.deltaX||0,y:y.deltaY||0},E=g.offsetDelta={x:m.x,y:m.y}),_.deltaX=v.x+(m.x-E.x),_.deltaY=v.y+(m.y-E.y),s.offsetDirection=$(s.deltaX,s.deltaY),b=H(s.deltaTime,s.deltaX,s.deltaY),s.overallVelocityX=b.x,s.overallVelocityY=b.y,s.overallVelocity=d(b.x)>d(b.y)?b.x:b.y,s.scale=u?(A=u.pointers,X((T=o)[0],T[1],G)/X(A[0],A[1],G)):1,s.rotation=u?(R=u.pointers,K((w=o)[1],w[0],G)+K(R[1],R[0],G)):0,s.maxPointers=n.prevInput?s.pointers.length>n.prevInput.maxPointers?s.pointers.length:n.prevInput.maxPointers:s.pointers.length,function(e,t){var i,r,s,n,o=e.lastInterval||t,l=t.timeStamp-o.timeStamp;if(8!=t.eventType&&(l>25||o.velocity===a)){var h=t.deltaX-o.deltaX,u=t.deltaY-o.deltaY,c=H(l,h,u);r=c.x,s=c.y,i=d(c.x)>d(c.y)?c.x:c.y,n=$(h,u),e.lastInterval=t}else i=o.velocity,r=o.velocityX,s=o.velocityY,n=o.direction;t.velocity=i,t.velocityX=r,t.velocityY=s,t.direction=n}(n,s),P=r.element,S(s.srcEvent.target,P)&&(P=s.srcEvent.target),s.target=P,e.emit("hammer.input",i),e.recognize(i),e.session.prevInput=i}function W(e){for(var t=[],i=0;i<e.pointers.length;)t[i]={clientX:c(e.pointers[i].clientX),clientY:c(e.pointers[i].clientY)},i++;return{timeStamp:f(),pointers:t,center:j(t),deltaX:e.deltaX,deltaY:e.deltaY}}function j(e){var t=e.length;if(1===t)return{x:c(e[0].clientX),y:c(e[0].clientY)};for(var i=0,r=0,s=0;s<t;)i+=e[s].clientX,r+=e[s].clientY,s++;return{x:c(i/t),y:c(r/t)}}function H(e,t,i){return{x:t/e||0,y:i/e||0}}function $(e,t){return e===t?1:d(e)>=d(t)?e<0?2:4:t<0?8:16}function X(e,t,i){i||(i=k);var r=t[i[0]]-e[i[0]],s=t[i[1]]-e[i[1]];return Math.sqrt(r*r+s*s)}function K(e,t,i){i||(i=k);var r=t[i[0]]-e[i[0]];return 180*Math.atan2(t[i[1]]-e[i[1]],r)/Math.PI}V.prototype={handler:function(){},init:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&R(this.element,this.evEl,this.domHandler),this.evTarget&&R(this.target,this.evTarget,this.domHandler),this.evWin&&R(O(this.element),this.evWin,this.domHandler)}};var Y={mousedown:1,mousemove:2,mouseup:4};function Z(){this.evEl="mousedown",this.evWin="mousemove mouseup",this.pressed=!1,V.apply(this,arguments)}y(Z,V,{handler:function(e){var t=Y[e.type];1&t&&0===e.button&&(this.pressed=!0),2&t&&1!==e.which&&(t=4),this.pressed&&(4&t&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:U,srcEvent:e}))}});var q={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Q={2:B,3:"pen",4:U,5:"kinect"},J="pointerdown",ee="pointermove pointerup pointercancel";function et(){this.evEl=J,this.evWin=ee,V.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}s.MSPointerEvent&&!s.PointerEvent&&(J="MSPointerDown",ee="MSPointerMove MSPointerUp MSPointerCancel"),y(et,V,{handler:function(e){var t=this.store,i=!1,r=q[e.type.toLowerCase().replace("ms","")],s=Q[e.pointerType]||e.pointerType,n=s==B,o=C(t,e.pointerId,"pointerId");1&r&&(0===e.button||n)?o<0&&(t.push(e),o=t.length-1):12&r&&(i=!0),!(o<0)&&(t[o]=e,this.callback(this.manager,r,{pointers:t,changedPointers:[e],pointerType:s,srcEvent:e}),i&&t.splice(o,1))}});var ei={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function er(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,V.apply(this,arguments)}function es(e,t){var i=x(e.touches),r=x(e.changedTouches);return 12&t&&(i=L(i.concat(r),"identifier",!0)),[i,r]}y(er,V,{handler:function(e){var t=ei[e.type];if(1===t&&(this.started=!0),this.started){var i=es.call(this,e,t);12&t&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:B,srcEvent:e})}}});var en={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function eo(){this.evTarget="touchstart touchmove touchend touchcancel",this.targetIds={},V.apply(this,arguments)}function ea(e,t){var i=x(e.touches),r=this.targetIds;if(3&t&&1===i.length)return r[i[0].identifier]=!0,[i,i];var s,n,o=x(e.changedTouches),a=[],l=this.target;if(n=i.filter(function(e){return S(e.target,l)}),1===t)for(s=0;s<n.length;)r[n[s].identifier]=!0,s++;for(s=0;s<o.length;)r[o[s].identifier]&&a.push(o[s]),12&t&&delete r[o[s].identifier],s++;if(a.length)return[L(n.concat(a),"identifier",!0),a]}function el(){V.apply(this,arguments);var e=b(this.handler,this);this.touch=new eo(this.manager,e),this.mouse=new Z(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}function eh(e,t){1&e?(this.primaryTouch=t.changedPointers[0].identifier,eu.call(this,t)):12&e&&eu.call(this,t)}function eu(e){var t=e.changedPointers[0];if(t.identifier===this.primaryTouch){var i={x:t.clientX,y:t.clientY};this.lastTouches.push(i);var r=this.lastTouches;setTimeout(function(){var e=r.indexOf(i);e>-1&&r.splice(e,1)},2500)}}function ec(e){for(var t=e.srcEvent.clientX,i=e.srcEvent.clientY,r=0;r<this.lastTouches.length;r++){var s=this.lastTouches[r],n=Math.abs(t-s.x),o=Math.abs(i-s.y);if(n<=25&&o<=25)return!0}return!1}y(eo,V,{handler:function(e){var t=en[e.type],i=ea.call(this,e,t);i&&this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:B,srcEvent:e})}}),y(el,V,{handler:function(e,t,i){var r=i.pointerType==B,s=i.pointerType==U;if(!s||!i.sourceCapabilities||!i.sourceCapabilities.firesTouchEvents){if(r)eh.call(this,t,i);else if(s&&ec.call(this,i))return;this.callback(e,t,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var ed=M(u.style,"touchAction"),ef=a!==ed,ep="compute",eg="auto",e_="manipulation",em="none",eE="pan-x",ev="pan-y",ey=function(){if(!ef)return!1;var e={},t=s.CSS&&s.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(i){e[i]=!t||s.CSS.supports("touch-action",i)}),e}();function eb(e,t){this.manager=e,this.set(t)}function eA(e){var t;this.options=l({},this.defaults,e||{}),this.id=I++,this.manager=null,this.options.enable=(t=this.options.enable,a===t||t),this.state=1,this.simultaneous={},this.requireFail=[]}function eT(e){return 16&e?"cancel":8&e?"end":4&e?"move":2&e?"start":""}
1527function eR(e){return 16==e?"down":8==e?"up":2==e?"left":4==e?"right":""}function eS(e,t){var i=t.manager;return i?i.get(e):e}function ew(){eA.apply(this,arguments)}function eP(){ew.apply(this,arguments),this.pX=null,this.pY=null}function eC(){ew.apply(this,arguments)}function ex(){eA.apply(this,arguments),this._timer=null,this._input=null}function eL(){ew.apply(this,arguments)}function eM(){ew.apply(this,arguments)}function eI(){eA.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eO(e,t){var i,r;return(t=t||{}).recognizers=(i=t.recognizers,r=eO.defaults.preset,a===i?r:i),new eN(e,t)}function eN(e,t){var i;this.options=l({},eO.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new((i=this.options.inputClass)?i:F?et:D?eo:N?el:Z)(this,z),this.touchAction=new eb(this,this.options.touchAction),eF(this,!0),_(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}function eF(e,t){var i,r=e.element;r.style&&(_(e.options.cssProps,function(s,n){i=M(r.style,n),t?(e.oldCssProps[i]=r.style[i],r.style[i]=s):r.style[i]=e.oldCssProps[i]||""}),t||(e.oldCssProps={}))}eb.prototype={set:function(e){e==ep&&(e=this.compute()),ef&&this.manager.element.style&&ey[e]&&(this.manager.element.style[ed]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return _(this.manager.recognizers,function(t){A(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),function(e){if(w(e,em))return em;var t=w(e,eE),i=w(e,ev);return t&&i?em:t||i?t?eE:ev:w(e,e_)?e_:eg}(e.join(" "))},preventDefaults:function(e){var t=e.srcEvent,i=e.offsetDirection;if(this.manager.session.prevented)return void t.preventDefault();var r=this.actions,s=w(r,em)&&!ey[em],n=w(r,ev)&&!ey[ev],o=w(r,eE)&&!ey[eE];if(s){var a=1===e.pointers.length,l=e.distance<2,h=e.deltaTime<250;if(a&&l&&h)return}if((!o||!n)&&(s||n&&6&i||o&&24&i))return this.preventSrc(t)},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}},eA.prototype={defaults:{},set:function(e){return l(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(g(e,"recognizeWith",this))return this;var t=this.simultaneous;return t[(e=eS(e,this)).id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return g(e,"dropRecognizeWith",this)||(e=eS(e,this),delete this.simultaneous[e.id]),this},requireFailure:function(e){if(g(e,"requireFailure",this))return this;var t=this.requireFail;return -1===C(t,e=eS(e,this))&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(g(e,"dropRequireFailure",this))return this;e=eS(e,this);var t=C(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,i=this.state;function r(i){t.manager.emit(i,e)}i<8&&r(t.options.event+eT(i)),r(t.options.event),e.additionalEvent&&r(e.additionalEvent),i>=8&&r(t.options.event+eT(i))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=32},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(33&this.requireFail[e].state))return!1;e++}return!0},recognize:function(e){var t=l({},e);if(!A(this.options.enable,[this,t])){this.reset(),this.state=32;return}56&this.state&&(this.state=1),this.state=this.process(t),30&this.state&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}},y(ew,eA,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return 0===t||e.pointers.length===t},process:function(e){var t=this.state,i=e.eventType,r=6&t,s=this.attrTest(e);return r&&(8&i||!s)?16|t:r||s?4&i?8|t:2&t?4|t:2:32}}),y(eP,ew,{defaults:{event:"pan",threshold:10,pointers:1,direction:30},getTouchAction:function(){var e=this.options.direction,t=[];return 6&e&&t.push(ev),24&e&&t.push(eE),t},directionTest:function(e){var t=this.options,i=!0,r=e.distance,s=e.direction,n=e.deltaX,o=e.deltaY;return s&t.direction||(6&t.direction?(s=0===n?1:n<0?2:4,i=n!=this.pX,r=Math.abs(e.deltaX)):(s=0===o?1:o<0?8:16,i=o!=this.pY,r=Math.abs(e.deltaY))),e.direction=s,i&&r>t.threshold&&s&t.direction},attrTest:function(e){return ew.prototype.attrTest.call(this,e)&&(2&this.state||!(2&this.state)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=eR(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),y(eC,ew,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[em]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),y(ex,eA,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[eg]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,r=e.distance<t.threshold,s=e.deltaTime>t.time;if(this._input=e,r&&i&&(!(12&e.eventType)||s)){if(1&e.eventType)this.reset(),this._timer=p(function(){this.state=8,this.tryEmit()},t.time,this);else if(4&e.eventType)return 8}else this.reset();return 32},reset:function(){clearTimeout(this._timer)},emit:function(e){8===this.state&&(e&&4&e.eventType?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=f(),this.manager.emit(this.options.event,this._input)))}}),y(eL,ew,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[em]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)}}),y(eM,ew,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return eP.prototype.getTouchAction.call(this)},attrTest:function(e){var t,i=this.options.direction;return 30&i?t=e.overallVelocity:6&i?t=e.overallVelocityX:24&i&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&i&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&d(t)>this.options.velocity&&4&e.eventType},emit:function(e){var t=eR(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),y(eI,eA,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[e_]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,r=e.distance<t.threshold,s=e.deltaTime<t.time;if(this.reset(),1&e.eventType&&0===this.count)return this.failTimeout();
1527if(r&&s&&i){if(4!=e.eventType)return this.failTimeout();var n=!this.pTime||e.timeStamp-this.pTime<t.interval,o=!this.pCenter||X(this.pCenter,e.center)<t.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,o&&n?this.count+=1:this.count=1,this._input=e,0==this.count%t.taps)if(!this.hasRequireFailures())return 8;else return this._timer=p(function(){this.state=8,this.tryEmit()},t.interval,this),2}return 32},failTimeout:function(){return this._timer=p(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){8==this.state&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eO.VERSION="2.0.7",eO.defaults={domEvents:!1,touchAction:ep,enable:!0,inputTarget:null,inputClass:null,preset:[[eL,{enable:!1}],[eC,{enable:!1},["rotate"]],[eM,{direction:6}],[eP,{direction:6},["swipe"]],[eI],[eI,{event:"doubletap",taps:2},["tap"]],[ex]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},eN.prototype={set:function(e){return l(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?2:1},recognize:function(e){var t,i=this.session;if(!i.stopped){this.touchAction.preventDefaults(e);var r=this.recognizers,s=i.curRecognizer;(!s||s&&8&s.state)&&(s=i.curRecognizer=null);for(var n=0;n<r.length;)t=r[n],2!==i.stopped&&(!s||t==s||t.canRecognizeWith(s))?t.recognize(e):t.reset(),!s&&14&t.state&&(s=i.curRecognizer=t),n++}},get:function(e){if(e instanceof eA)return e;for(var t=this.recognizers,i=0;i<t.length;i++)if(t[i].options.event==e)return t[i];return null},add:function(e){if(g(e,"add",this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(g(e,"remove",this))return this;if(e=this.get(e)){var t=this.recognizers,i=C(t,e);-1!==i&&(t.splice(i,1),this.touchAction.update())}return this},on:function(e,t){if(a!==e&&a!==t){var i=this.handlers;return _(P(e),function(e){i[e]=i[e]||[],i[e].push(t)}),this}},off:function(e,t){if(a!==e){var i=this.handlers;return _(P(e),function(e){t?i[e]&&i[e].splice(C(i[e],t),1):delete i[e]}),this}},emit:function(e,t){this.options.domEvents&&(i=e,r=t,(s=n.createEvent("Event")).initEvent(i,!0,!0),s.gesture=r,r.target.dispatchEvent(s));var i,r,s,o=this.handlers[e]&&this.handlers[e].slice();if(o&&o.length){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var a=0;a<o.length;)o[a](t),a++}},destroy:function(){this.element&&eF(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},l(eO,{INPUT_START:1,INPUT_MOVE:2,INPUT_END:4,INPUT_CANCEL:8,STATE_POSSIBLE:1,STATE_BEGAN:2,STATE_CHANGED:4,STATE_ENDED:8,STATE_RECOGNIZED:8,STATE_CANCELLED:16,STATE_FAILED:32,DIRECTION_NONE:1,DIRECTION_LEFT:2,DIRECTION_RIGHT:4,DIRECTION_UP:8,DIRECTION_DOWN:16,DIRECTION_HORIZONTAL:6,DIRECTION_VERTICAL:24,DIRECTION_ALL:30,Manager:eN,Input:V,TouchAction:eb,TouchInput:eo,MouseInput:Z,PointerEventInput:et,TouchMouseInput:el,SingleTouchInput:er,Recognizer:eA,AttrRecognizer:ew,Tap:eI,Pan:eP,Swipe:eM,Pinch:eC,Rotate:eL,Press:ex,on:T,off:R,each:_,merge:v,extend:E,assign:l,inherit:y,bindFn:b,prefixed:M}),(void 0!==s?s:"undefined"!=typeof self?self:{}).Hammer=eO,a===(r=(function(){return eO}).call(t,i,t,e))||(e.exports=r)}(window,document,0)},52782:(e,t,i)=>{var r=i(88046),s=i(98825),n=i(76014),o=0/0,a=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,h=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(n(e))return o;if(s(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=s(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var i=l.test(e);return i||h.test(e)?u(e.slice(2),i?2:8):a.test(e)?o:+e}},54570:(e,t,i)=>{"use strict";let r;i.d(t,{P:()=>u});var s=i(23459),n=i(8014),o=i(28760),a=i(6992),l=i(2186);let h=[0,0,0];class u extends s.M{static get ZERO(){return r||Object.freeze(r=new u(0,0,0)),r}constructor(e=0,t=0,i=0){super(-0,-0,-0),1==arguments.length&&(0,n.cy)(e)?this.copy(e):(n.$W.debug&&((0,o.ws)(e),(0,o.ws)(t),(0,o.ws)(i)),this[0]=e,this[1]=t,this[2]=i)}set(e,t,i){return this[0]=e,this[1]=t,this[2]=i,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return n.$W.debug&&((0,o.ws)(e.x),(0,o.ws)(e.y),(0,o.ws)(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=(0,o.ws)(e)}angle(e){return(0,a.g7)(this,e)}cross(e){return(0,a.$A)(this,this,e),this.check()}rotateX({radians:e,origin:t=h}){return(0,a.eL)(this,this,t,e),this.check()}rotateY({radians:e,origin:t=h}){return(0,a.Z8)(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=h}){return(0,a.x6)(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return(0,a.Z0)(this,this,e),this.check()}transformAsVector(e){return(0,l.cL)(this,this,e),this.check()}transformByMatrix3(e){return(0,a.ei)(this,this,e),this.check()}transformByMatrix2(e){return(0,l.J4)(this,this,e),this.check()}transformByQuaternion(e){return(0,a.gL)(this,this,e),this.check()}}},54720:(e,t,i)=>{"use strict";function r(e,t=()=>!0){return Array.isArray(e)?function e(t,i,r){let s=-1;for(;++s<t.length;){let n=t[s];Array.isArray(n)?e(n,i,r):i(n)&&r.push(n)}return r}(e,t,[]):t(e)?[e]:[]}function s({target:e,source:t,start:i=0,count:r=1}){let s=t.length,n=r*s,o=0;for(let r=i;o<s;o++)e[r++]=t[o];for(;o<n;)o<n-o?(e.copyWithin(i+o,i,i+o),o*=2):(e.copyWithin(i+o,i,i+n-o),o=n);return e}i.d(t,{B:()=>r,R:()=>s})},60218:(e,t,i)=>{"use strict";i.d(t,{l:()=>s});var r=i(68318);function s(e){let t={bindings:{},uniforms:{}};return Object.keys(e).forEach(i=>
1527{let s=e[i];null!==(0,r.p)(s)||"number"==typeof s||"boolean"==typeof s?t.uniforms[i]=s:t.bindings[i]=s}),t}},60686:(e,t,i)=>{"use strict";i.d(t,{VD:()=>r,YN:()=>l,fW:()=>n,jA:()=>a,r3:()=>s,uH:()=>o,vf:()=>h});let r={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},s=Symbol.for("component"),n=Symbol.for("propTypes"),o=Symbol.for("deprecatedProps"),a=Symbol.for("asyncPropDefaults"),l=Symbol.for("asyncPropOriginal"),h=Symbol.for("asyncPropResolved")},61745:(e,t,i)=>{"use strict";i.d(t,{Z0:()=>n,hs:()=>s});var r=i(43210);function s(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e}function n(e,t,i){let r=t[0],s=t[1],n=t[2],o=t[3];return e[0]=i[0]*r+i[4]*s+i[8]*n+i[12]*o,e[1]=i[1]*r+i[5]*s+i[9]*n+i[13]*o,e[2]=i[2]*r+i[6]*s+i[10]*n+i[14]*o,e[3]=i[3]*r+i[7]*s+i[11]*n+i[15]*o,e}!function(){let e=new r.tb(4);r.tb!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0)}()},61773:(e,t,i)=>{"use strict";i.d(t,{Kx:()=>n,p5:()=>o,qY:()=>a,rf:()=>s});var r=i(91156);let s={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(s,"IDENTITY",{get:()=>(r.A.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});let n={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},o={common:0,meters:1,pixels:2},a={click:{handler:"onClick"},panstart:{handler:"onDragStart"},panmove:{handler:"onDrag"},panend:{handler:"onDragEnd"}}},63596:(e,t,i)=>{"use strict";function r(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function s(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}i.d(t,{iW:()=>r,pD:()=>s})},68038:(e,t,i)=>{"use strict";i.d(t,{B:()=>s}),i(948);var r=i(99742);function s(){return"object"==typeof r&&"[object process]"===String(r),!0}},68318:(e,t,i)=>{"use strict";function r(e){return Array.isArray(e)?0===e.length||"number"==typeof e[0]?e:null:!ArrayBuffer.isView(e)||e instanceof DataView?null:e}i.d(t,{p:()=>r})},73238:(e,t,i)=>{"use strict";i.d(t,{pp:()=>p,K2:()=>f,Rf:()=>_,a5:()=>g});var r=i(23294),s=i(63596);let n=new(i(25352)).hW({id:"loaders.gl"});class o{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}class a{console;constructor(){this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}}var l=i(13647);let h={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new a,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:l.Bd,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},u={baseUri:"core.baseUrl",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",maxMobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"core.baseUrl",method:"core.fetch.method",headers:"core.fetch.headers",body:"core.fetch.body",mode:"core.fetch.mode",credentials:"core.fetch.credentials",cache:"core.fetch.cache",redirect:"core.fetch.redirect",referrer:"core.fetch.referrer",referrerPolicy:"core.fetch.referrerPolicy",integrity:"core.fetch.integrity",keepalive:"
1527core.fetch.keepalive",signal:"core.fetch.signal"};var c=i(82896);let d=["baseUrl","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function f(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function p(){let e=f();return e.globalOptions=e.globalOptions||{...h,core:{...h.core}},_(e.globalOptions)}function g(e,t,i,r){return function(e,t){for(let i of(m(e,null,h,u,t),t)){let r=e&&e[i.id]||{},s=i.options&&i.options[i.id]||{},n=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};m(r,i.id,s,n,t)}}(e,i=Array.isArray(i=i||[])?i:[i]),_(function(e,t,i){var r,n;let a=e.options||{},l={...a};return a.core&&(l.core={...a.core}),v(l),l.core?.log===null&&(l.core={...l.core,log:new o}),E(l,_(p())),E(l,_(t)),r=l,(n=i)&&r.core?.baseUrl===void 0&&(r.core||={},r.core.baseUrl=s.pD((0,c.S3)(n))),function(e){let t=e.core;if(t)for(let i of d)void 0!==t[i]&&(e[i]=t[i])}(l),l}(t,e,r))}function _(e){let t=function(e){let t={...e};return e.core&&(t.core={...e.core}),t}(e);for(let e of(v(t),d))t.core&&void 0!==t.core[e]&&delete t[e];return t.core&&void 0!==t.core._workerType&&delete t._worker,t}function m(e,t,i,s,o){let a=t||"Top level",l=t?`${t}.`:"";for(let h in e){let u=!t&&(0,r.Gv)(e[h]),c="baseUri"===h&&!t,d="workerUrl"===h&&t;if(!(h in i)&&!c&&!d){if(h in s)n.level>0&&n.warn(`${a} loader option '${l}${h}' no longer supported, use '${s[h]}'`)();else if(!u&&n.level>0){let e=function(e,t){let i=e.toLowerCase(),r="";for(let s of t)for(let t in s.options){if(e===t)return`Did you mean '${s.id}.${t}'?`;let n=t.toLowerCase();(i.startsWith(n)||n.startsWith(i))&&(r=r||`Did you mean '${s.id}.${t}'?`)}return r}(h,o);n.warn(`${a} loader option '${l}${h}' not recognized. ${e}`)()}}}}function E(e,t){for(let i in t)if(i in t){let s=t[i];(0,r.aC)(s)&&(0,r.aC)(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function v(e){for(let t of(void 0!==e.baseUri&&(e.core||={},void 0===e.core.baseUrl&&(e.core.baseUrl=e.baseUri)),d))if(void 0!==e[t]){let i=e.core=e.core||{};void 0===i[t]&&(i[t]=e[t])}let t=e._worker;void 0!==t&&(e.core||={},void 0===e.core._workerType&&(e.core._workerType=t))}},73734:(e,t,i)=>{"use strict";i.d(t,{L:()=>s});var r=i(28970);class s extends r.F{static defaultProps={...r.F.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"nearest",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1};get[Symbol.toStringTag](){return"Sampler"}constructor(e,t){super(e,t,s.defaultProps)}}},74553:(e,t,i)=>{"use strict";i.d(t,{X:()=>s});var r=i(28970);class s extends r.F{static defaultProps={...r.F.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0};get[Symbol.toStringTag](){return"TextureView"}constructor(e,t){super(e,t,s.defaultProps)}}},75591:(e,t,i)=>{"use strict";i.d(t,{R:()=>r});let r=new(i(25352)).hW({id:"luma.gl"})},78069:(e,t,i)=>{"use strict";i.d(t,{M:()=>l});var r=i(28970),s=i(36063);function n(e,t,i,r){if(r?.inlineSource){let r=function(e,t,i){let r="";for(let i=t-2;i<=t;i++){let s=e[i-1];void 0!==s&&(r+=o(s,t,void 0))}return r}(t,i),s=e.linePos>0?`${" ".repeat(e.linePos+5)}^^^ 1528`:"";return` 1529${r}${s}${e.type.toUpperCase()}: ${e.message} 1530 1531`}return r?.html?`<div class='luma-compiler-log-error' style="color:red;"><b> ${e.type.toUpperCase()}: ${e.message}</b></div>`:`${e.type.toUpperCase()}: ${e.message}`}function o(e,t,i){let r=i?.html?e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):e;return`${function(e,t){let i="";for(let t=e.length;t<4;++t)i+=" ";return i+e}(String(t),4)}: ${r}${i?.html?"<br/>":"\n"}`}function a(e,t){return{name:function(e,t="unnamed"){let i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(e);return i?i[1]:t}(e,t),language:"glsl",version:function(e){let t=100,i=e.match(/[^\s]+/g);if(i&&i.length>=2&&"#version"===i[0]){let e=parseInt(i[1],10);Number.isFinite(e)&&(t=e)}return t}(e)}}class l extends r.F{static defaultProps={...r.F.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debug:"errors"};get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,t){super(e,{id:function(e){return a(e.source).name||e.
1531id||(0,s.L)(`unnamed ${e.stage}-shader`)}(t),...t},l.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(e=this.props.debug){switch(e){case"never":return;case"errors":if("success"===this.compilationStatus)return}let t=await this.getCompilationInfo();("warnings"!==this.props.debug||t?.length!==0)&&this._displayShaderLog(t)}_displayShaderLog(e){if("undefined"==typeof document||!document?.createElement)return;let t=a(this.source).name,i=`${this.stage} ${t}`,r=function(e,t,i){let r="",s=t.split(/\r?\n/),a=e.slice().sort((e,t)=>e.lineNum-t.lineNum);switch(i?.showSourceCode||"no"){case"all":let l=0;for(let e=1;e<=s.length;e++)for(r+=o(s[e-1],e,i);a.length>l&&a[l].lineNum===e;){let e=a[l++];r+=n(e,s,e.lineNum,{...i,inlineSource:!1})}return r;case"issues":case"no":for(let t of e)r+=n(t,s,t.lineNum,{inlineSource:i?.showSourceCode!=="no"});return r}}(e,this.source,{showSourceCode:"all",html:!0}),s=this.getTranslatedSource();s&&(r+=`<br /><br /><h1>Translated Source</h1><br /><br /><code style="user-select:text;"><pre>${s}</pre></code>`);let l=document.createElement("Button");l.innerHTML=` 1532<h1>Shader Compilation Error in ${i}</h1><br /><br /> 1533<code style="user-select:text;"><pre> 1534${r} 1535</pre></code>`,l.style.top="10px",l.style.left="10px",l.style.position="absolute",l.style.zIndex="9999",l.style.width="100%",l.style.textAlign="left",document.body.appendChild(l);let h=document.getElementsByClassName("luma-compiler-log-error");h[0]?.scrollIntoView&&h[0].scrollIntoView(),l.onclick=()=>{let e=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(e)}}}},80879:(e,t,i)=>{"use strict";i.d(t,{r:()=>s});var r=i(28970);class s extends r.F{static defaultProps={...r.F.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",parameters:{},bindings:{},uniforms:{}};get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";constructor(e,t){super(e,t,s.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[]}setUniformsWebGL(e){throw Error("Use uniform blocks")}}},82604:(e,t,i)=>{"use strict";i.d(t,{O_:()=>a,bv:()=>h,Uu:()=>l});let r={vertex:`\ 1536#ifdef MODULE_LOGDEPTH 1537logdepth_adjustPosition(gl_Position); 1538#endif 1539`,fragment:`\ 1540#ifdef MODULE_MATERIAL 1541gl_FragColor = material_filterColor(gl_FragColor); 1542#endif 1543#ifdef MODULE_LIGHTING 1544gl_FragColor = lighting_filterColor(gl_FragColor); 1545#endif 1546#ifdef MODULE_FOG 1547gl_FragColor = fog_filterColor(gl_FragColor); 1548#endif 1549#ifdef MODULE_PICKING 1550gl_FragColor = picking_filterHighlightColor(gl_FragColor); 1551gl_FragColor = picking_filterPickingColor(gl_FragColor); 1552#endif 1553#ifdef MODULE_LOGDEPTH 1554logdepth_setFragDepth(); 1555#endif 1556`},s=/void\s+main\s*\([^)]*\)\s*\{\n?/,n=/}\n?[^{}]*$/,o=[],a="__LUMA_INJECT_DECLARATIONS__";function l(e){let t={vertex:{},fragment:{}};for(let i in e){let r=e[i];"string"==typeof r&&(r={order:0,injection:r}),t[function(e){let t=e.slice(0,2);switch(t){case"vs":return"vertex";case"fs":return"fragment";default:throw Error(t)}}(i)][i]=r}return t}function h(e,t,i,l=!1){let u="vertex"===t;for(let t in i){let r=i[t];r.sort((e,t)=>e.order-t.order),o.length=r.length;for(let e=0,t=r.length;e<t;++e)o[e]=r[e].injection;let l=`${o.join("\n")} 1557`;switch(t){case"vs:#decl":u&&(e=e.replace(a,l));break;case"vs:#main-start":u&&(e=e.replace(s,e=>e+l));break;case"vs:#main-end":u&&(e=e.replace(n,e=>l+e));break;case"fs:#decl":u||(e=e.replace(a,l));break;case"fs:#main-start":u||(e=e.replace(s,e=>e+l));break;case"fs:#main-end":u||(e=e.replace(n,e=>l+e));break;default:e=e.replace(t,e=>e+l)}}return e=e.replace(a,""),l&&(e=e.replace(/\}\s*$/,e=>e+r[t])),e}},82896:(e,t,i)=>{"use strict";i.d(t,{E1:()=>o,S3:()=>n,by:()=>s});let r=/\?.*/;function s(e){let t=e.match(r);return t&&t[0]}function n(e){return e.replace(r,"")}function o(e){if(e.length<50)return e;let t=e.slice(e.length-15),i=e.substr(0,32);return`${i}...${t}`}},83601:(e,t,i)=>{"use strict";let r;function s(e){return(!r||r.byteLength<e)&&(r=new ArrayBuffer(e)),r}function n(e,t){let i=s(e.BYTES_PER_ELEMENT*t);return new e(i,0,t)}function o(e){let{target:t,source:i,start:r=0,count:s=1}=e,n=i.length,o=s*n,a=0;for(let e=r;a<n;
1557a++)t[e++]=i[a];for(;a<o;)a<o-a?(t.copyWithin(r+a,r,r+a),a*=2):(t.copyWithin(r+a,r,r+o-a),a=o);return e.target}i.d(t,{R2:()=>o,oF:()=>n,oK:()=>s})},86028:(e,t,i)=>{"use strict";i.d(t,{A:()=>o,k:()=>n});var r=i(91156);let s={};function n(e){s=e}function o(e,t,i,n){r.A.level>0&&s[e]&&s[e].call(null,t,i,n)}},88046:(e,t,i)=>{var r=i(39824),s=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(s,""):e}},88346:(e,t,i)=>{"use strict";i.d(t,{Mr:()=>h,PV:()=>l,GE:()=>u});var r=i(75591);let s={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},n={f32:4,f16:2,i32:4,u32:4};var o=i(88857);function a(e){let t;e.endsWith("-webgl")&&(e.replace("-webgl",""),t=!0);let[i,r]=e.split("x"),s=r?parseInt(r):1,n=(0,o.l)(i),a={type:i,components:s,byteLength:n.byteLength*s,integer:n.integer,signed:n.signed,normalized:n.normalized};return t&&(a.webglOnly=!0),a}function l(e,t){let i={};for(let o of e.attributes)i[o.name]=function(e,t,i){let o=function(e,t){let i=e.attributes.find(e=>e.name===t);return i||r.R.warn(`shader layout attribute "${t}" not present in shader`),i||null}(e,i),l=function(e,t){var i=e;for(let e of i)(e.attributes&&e.format||!e.attributes&&!e.format)&&r.R.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`);let s=function(e,t){for(let i of e)if(i.format&&i.name===t)return{attributeName:i.name,bufferName:t,stepMode:i.stepMode,vertexFormat:i.format,byteOffset:0,byteStride:i.byteStride||0};return null}(e,t);return s||(s=function(e,t){for(let i of e){let e=i.byteStride;if("number"!=typeof i.byteStride)for(let t of i.attributes||[])e+=a(t.format).byteLength;let r=i.attributes?.find(e=>e.attribute===t);if(r)return{attributeName:r.attribute,bufferName:i.name,stepMode:i.stepMode,vertexFormat:r.format,byteOffset:r.byteOffset,byteStride:e}}return null}(e,t))?s:(r.R.warn(`layout for attribute "${t}" not present in buffer layout`),null)}(t,i);if(!o)return null;let h=function(e){let[t,i]=s[e],r="i32"===t||"u32"===t,o="u32"!==t,a=n[t]*i,l=function(e,t){let i;switch(e){case"f32":i="float32";break;case"i32":i="sint32";break;case"u32":i="uint32";break;case"f16":return t<=2?"float16x2":"float16x4"}return 1===t?i:`${i}x${t}`}(t,i);return{dataType:t,components:i,defaultVertexFormat:l,byteLength:a,integer:r,signed:o}}(o.type),u=l?.vertexFormat||h.defaultVertexFormat,c=a(u);return{attributeName:l?.attributeName||o.name,bufferName:l?.bufferName||o.name,location:o.location,shaderType:o.type,shaderDataType:h.dataType,shaderComponents:h.components,vertexFormat:u,bufferDataType:c.type,bufferComponents:c.components,normalized:c.normalized,integer:h.integer,stepMode:l?.stepMode||o.stepMode,byteOffset:l?.byteOffset||0,byteStride:l?.byteStride||0}}(e,t,o.name);return i}function h(e,t,i=16){let r=l(e,t),s=Array(i).fill(null);for(let e of Object.values(r))s[e.location]=e;return s}function u(e,t){let i={...e,attributes:e.attributes.map(e=>({...e}))};for(let e of t?.attributes||[]){let t=i.attributes.find(t=>t.name===e.name);t?(t.type=e.type||t.type,t.stepMode=e.stepMode||t.stepMode):r.R.warn(`shader layout attribute ${e.name} not present in shader`)}return i}},88857:(e,t,i)=>{"use strict";function r(e){let t=n[s[e]],i=e.includes("norm"),r=!i&&!e.startsWith("float"),o=e.startsWith("s");return{dataType:s[e],byteLength:t,integer:r,signed:o,normalized:i}}i.d(t,{l:()=>r});let s={uint8:"uint8",sint8:"sint8",unorm8:"uint8",snorm8:"sint8",uint16:"uint16",sint16:"sint16",unorm16:"uint16",snorm16:"sint16",float16:"float16",float32:"float32",uint32:"uint32",sint32:"sint32"},n={uint8:1,sint8:1,uint16:2,sint16:2,float16:2,float32:4,uint32:4,sint32:4}},89357:(e,t,i)=>{"use strict";i.d(t,{A:()=>h});var r=i(13402),s=i(24694),n=i(8014),o=i(98590),a=i(2595);class l extends r.A{constructor(e={}){let t,{latitude:i=0,longitude:r=0,zoom:a=0,pitch:l=0,bearing:h=0,nearZMultiplier:u=.1,farZMultiplier:c=1.01,nearZ:d,farZ:f,orthographic:p=!1,projectionMatrix:g,repeat:_=!1,worldOffset:m=0,position:E,padding:v,legacyMeterSizes:y=!1}=e,{width:b,height:A,altitude:T=1.5}=e,R=Math.pow(2,a);b=b||1,A=A||1;let S=null;if(g)T=g[5]/2,t=(0,s.Os)(T);else{let r;if(e.fovy?(t=e.fovy,T=(0,s.wZ)(t)):t=(0,s.Os)(T),v){let{top:e=0,bottom:t=0}=v;
1557r=[0,(0,n.qE)((e+A-t)/2,0,A)-A/2]}S=(0,s.om)({width:b,height:A,scale:R,center:E&&[0,0,E[2]*(0,s.mY)(i)],offset:r,pitch:l,fovy:t,nearZMultiplier:u,farZMultiplier:c}),Number.isFinite(d)&&(S.near=d),Number.isFinite(f)&&(S.far=f)}let w=(0,s.rY)({height:A,pitch:l,bearing:h,scale:R,altitude:T});m&&(w=new o.k().translate([512*m,0,0]).multiplyLeft(w)),super({...e,width:b,height:A,viewMatrix:w,longitude:r,latitude:i,zoom:a,...S,fovy:t,focalDistance:T}),this.latitude=i,this.longitude=r,this.zoom=a,this.pitch=l,this.bearing=h,this.altitude=T,this.fovy=t,this.orthographic=p,this._subViewports=_?[]:null,this._pseudoMeters=y,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let e=this.getBounds(),t=Math.floor((e[0]+180)/360),i=Math.ceil((e[2]-180)/360);for(let e=t;e<=i;e++){let t=e?new l({...this,worldOffset:e}):this;this._subViewports.push(t)}}return this._subViewports}projectPosition(e){if(this._pseudoMeters)return super.projectPosition(e);let[t,i]=this.projectFlat(e);return[t,i,(e[2]||0)*(0,s.mY)(e[1])]}unprojectPosition(e){if(this._pseudoMeters)return super.unprojectPosition(e);let[t,i]=this.unprojectFlat(e),r=(e[2]||0)/(0,s.mY)(i);return[t,i,r]}addMetersToLngLat(e,t){return(0,s.dT)(e,t)}panByPosition(e,t){let i=(0,s.xJ)(t,this.pixelUnprojectionMatrix),r=this.projectFlat(e),n=a.WQ([],r,a.ze([],i)),o=a.WQ([],this.center,n),[l,h]=this.unprojectFlat(o);return{longitude:l,latitude:h}}getBounds(e={}){let t=(0,s.gW)(this,e.z||0);return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1]),Math.max(t[0][0],t[1][0],t[2][0],t[3][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1])]}fitBounds(e,t={}){let{width:i,height:r}=this,{longitude:n,latitude:o,zoom:a}=(0,s.Fe)({width:i,height:r,bounds:e,...t});return new l({width:i,height:r,longitude:n,latitude:o,zoom:a})}}l.displayName="WebMercatorViewport";let h=l},91156:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});let r=new(i(25352)).hW({id:"deck"})},93032:(e,t,i)=>{"use strict";i.d(t,{z:()=>l});var r=i(23237);let s={number:{type:"number",validate:(e,t)=>Number.isFinite(e)&&"object"==typeof t&&(void 0===t.max||e<=t.max)&&(void 0===t.min||e>=t.min)},array:{type:"array",validate:(e,t)=>Array.isArray(e)||ArrayBuffer.isView(e)}};function n(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var o=i(82604);let a=1;class l{name;vs;fs;getModuleUniforms;dependencies;deprecations;defines;injections;uniforms={};uniformTypes={};static instantiateModules(e){return e.map(e=>{if(e instanceof l)return e;(0,r.v)("string"!=typeof e,`Shader module use by name is deprecated. Import shader module '${JSON.stringify(e)}' and use it directly.`),e.name||(console.warn("shader module has no name"),e.name=`shader-module-${a++}`);let t=new l(e);return t.dependencies=l.instantiateModules(e.dependencies||[]),t})}constructor(e){let{name:t,vs:i,fs:a,dependencies:h=[],uniformTypes:u={},uniformPropTypes:c={},getUniforms:d,deprecations:f=[],defines:p={},inject:g={}}=e;(0,r.v)("string"==typeof t),this.name=t,this.vs=i,this.fs=a,this.getModuleUniforms=d,this.dependencies=l.instantiateModules(h),this.deprecations=this._parseDeprecationDefinitions(f),this.defines=p,this.injections=(0,o.Uu)(g),this.uniformTypes=u,c&&(this.uniforms=function(e){let t={};for(let[i,r]of Object.entries(e))t[i]=function(e){let t=n(e);if("object"!==t)return{value:e,...s[t],type:t};if("object"==typeof e)return e?void 0!==e.type?{...e,...s[e.type],type:e.type}:void 0===e.value?{type:"object",value:e}:(t=n(e.value),{...e,...s[t],type:t}):{type:"object",value:null};throw Error("props")}(r);return t}(c))}getModuleSource(e){let t;switch(e){case"vertex":t=this.vs||"";break;case"fragment":t=this.fs||"";break;default:(0,r.v)(!1)}let i=this.name.toUpperCase().replace(/[^0-9a-z]/gi,"_");return`\ 1558// ----- MODULE ${this.name} --------------- 1559 1560#define MODULE_${i} 1561${t}\ 1562 1563 1564`}getUniforms(e,t){return this.getModuleUniforms?this.getModuleUniforms(e,t):function(e,t,i){let s={};for(let[n,o]of Object.entries(t))e&&n in e&&!o.private?(o.validate&&(0,r.v)(o.validate(e[n],o),`${i}: invalid ${n}`),s[n]=e[n]):s[n]=o.value;return s}(e,this.uniforms,this.name)}getDefines(){return this.defines}checkDeprecations(e,t){this.deprecations.forEach(i=>
1564{i.regex?.test(e)&&(i.deprecated?t.deprecated(i.old,i.new)():t.removed(i.old,i.new)())})}_parseDeprecationDefinitions(e){return e.forEach(e=>{"function"===e.type?e.regex=RegExp(`\\b${e.old}\\(`):e.regex=RegExp(`${e.type} ${e.old};`)}),e}_defaultGetUniforms(e={}){let t={},i=this.uniforms;for(let s in i){let n=i[s];s in e&&!n.private?(n.validate&&(0,r.v)(n.validate(e[s],n),`${this.name}: invalid ${s}`),t[s]=e[s]):t[s]=n.value}return t}}},95037:(e,t,i)=>{"use strict";i.d(t,{b:()=>function e(t,i,r){if(t===i)return!0;if(!r||!t||!i)return!1;if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(let s=0;s<t.length;s++)if(!e(t[s],i[s],r-1))return!1;return!0}if(Array.isArray(i))return!1;if("object"==typeof t&&"object"==typeof i){let s=Object.keys(t),n=Object.keys(i);if(s.length!==n.length)return!1;for(let n of s)if(!i.hasOwnProperty(n)||!e(t[n],i[n],r-1))return!1;return!0}return!1}})},98454:(e,t,i)=>{"use strict";i.d(t,{a:()=>s});var r=i(8014);class s extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let i=0;i<this.ELEMENTS;++i)this[i]=e[i+t];return this.check()}toArray(e=[],t=0){for(let i=0;i<this.ELEMENTS;++i)e[t+i]=this[i];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:(0,r.cy)(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(r.$W)}formatString(e){let t="";for(let i=0;i<this.ELEMENTS;++i)t+=(i>0?", ":"")+(0,r.Fl)(this[i],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!(0,r.aI)(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,i){if(void 0===i)return this.lerp(this,e,t);for(let r=0;r<this.ELEMENTS;++r){let s=e[r],n="number"==typeof t?t:t[r];this[r]=s+i*(n-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e[i]),t[i]);return this.check()}add(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]+=t[e];return this.check()}subtract(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]-=t[e];return this.check()}scale(e){if("number"==typeof e)for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(r.$W.debug&&!this.validate())throw Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e),t);return this.check()}get elements(){return this}}},98590:(e,t,i)=>{"use strict";let r,s;i.d(t,{k:()=>m});var n,o=i(98454),a=i(28760),l=i(8014);class h extends o.a{toString(){let e="[";if(l.$W.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let i=0;i<this.RANK;++i)e+=` ${this[i*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+"]"}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,i){return this[t*this.RANK+e]=(0,a.ws)(i),this}getColumn(e,t=Array(this.RANK).fill(-0)){let i=e*this.RANK;for(let e=0;e<this.RANK;++e)t[e]=this[i+e];return t}setColumn(e,t){let i=e*this.RANK;for(let e=0;e<this.RANK;++e)this[i+e]=t[e];return this}}var u=i(2186),c=i(28089),d=i(2595),f=i(6992),p=i(61745);!function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"}(n||(n={}));let g=45*Math.PI/180,_=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class m extends h{static get IDENTITY(){return s||Object.freeze(s=new m),s}
1564static get ZERO(){return r||Object.freeze(r=new m([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])),r}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return n}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),1==arguments.length&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,t,i,r,s,n,o,a,l,h,u,c,d,f,p,g){return this[0]=e,this[1]=t,this[2]=i,this[3]=r,this[4]=s,this[5]=n,this[6]=o,this[7]=a,this[8]=l,this[9]=h,this[10]=u,this[11]=c,this[12]=d,this[13]=f,this[14]=p,this[15]=g,this.check()}setRowMajor(e,t,i,r,s,n,o,a,l,h,u,c,d,f,p,g){return this[0]=e,this[1]=s,this[2]=l,this[3]=d,this[4]=t,this[5]=n,this[6]=h,this[7]=f,this[8]=i,this[9]=o,this[10]=u,this[11]=p,this[12]=r,this[13]=a,this[14]=c,this[15]=g,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(_)}fromObject(e){return this.check()}fromQuaternion(e){return(0,c.I0)(this,e),this.check()}frustum(e){var t,i,r,s,n,o;let{left:a,right:l,bottom:h,top:u,near:d=.1,far:f=500}=e;return f===1/0?(t=this,i=a,r=l,s=h,n=u,o=d,t[0]=2*o/(r-i),t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*o/(n-s),t[6]=0,t[7]=0,t[8]=(r+i)/(r-i),t[9]=(n+s)/(n-s),t[10]=-1,t[11]=-1,t[12]=0,t[13]=0,t[14]=-2*o,t[15]=0):(0,c.$h)(this,a,l,h,u,d,f),this.check()}lookAt(e){let{eye:t,center:i=[0,0,0],up:r=[0,1,0]}=e;return(0,c.t5)(this,t,i,r),this.check()}ortho(e){let{left:t,right:i,bottom:r,top:s,near:n=.1,far:o=500}=e;return(0,c.v3)(this,t,i,r,s,n,o),this.check()}orthographic(e){let{fovy:t=g,aspect:i=1,focalDistance:r=1,near:s=.1,far:n=500}=e;E(t);let o=r*Math.tan(t/2),a=o*i;return this.ortho({left:-a,right:a,bottom:-o,top:o,near:s,far:n})}perspective(e){let{fovy:t=45*Math.PI/180,aspect:i=1,near:r=.1,far:s=500}=e;return E(t),(0,c.fN)(this,t,i,r,s),this.check()}determinant(){return(0,c.a4)(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,t){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],t=t||[-0,-0,-0];let i=this.getScale(t),r=1/i[0],s=1/i[1],n=1/i[2];return e[0]=this[0]*r,e[1]=this[1]*s,e[2]=this[2]*n,e[3]=0,e[4]=this[4]*r,e[5]=this[5]*s,e[6]=this[6]*n,e[7]=0,e[8]=this[8]*r,e[9]=this[9]*s,e[10]=this[10]*n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,t){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],t=t||[-0,-0,-0];let i=this.getScale(t),r=1/i[0],s=1/i[1],n=1/i[2];return e[0]=this[0]*r,e[1]=this[1]*s,e[2]=this[2]*n,e[3]=this[4]*r,e[4]=this[5]*s,e[5]=this[6]*n,e[6]=this[8]*r,e[7]=this[9]*s,e[8]=this[10]*n,e}transpose(){return(0,c.mg)(this,this),this.check()}invert(){return(0,c.B8)(this,this),this.check()}multiplyLeft(e){return(0,c.lw)(this,e,this),this.check()}multiplyRight(e){return(0,c.lw)(this,this,e),this.check()}rotateX(e){return(0,c.eL)(this,this,e),this.check()}rotateY(e){return(0,c.Z8)(this,this,e),this.check()}rotateZ(e){return(0,c.Qr)(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,t){return(0,c.e$)(this,this,e,t),this.check()}scale(e){return(0,c.hs)(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return(0,c.Tl)(this,this,e),this.check()}transform(e,t){return 4===e.length?(t=(0,p.Z0)(t||[-0,-0,-0,-0],e,this),(0,a.qk)(t,4),t):this.transformAsPoint(e,t)}transformAsPoint(e,t){let i,{length:r}=e;switch(r){case 2:i=(0,d.Z0)(t||[-0,-0],e,this);break;case 3:i=(0,f.Z0)(t||[-0,-0,-0],e,this);break;default:throw Error("Illegal vector")}return(0,a.qk)(i,e.length),i}transformAsVector(e,t){let i;switch(e.length){case 2:i=(0,u.B$)(t||[-0,-0],e,this);break;case 3:i=(0,u.cL)(t||[-0,-0,-0],e,this);break;default:throw Error("Illegal vector")}return(0,a.qk)(i,e.length),i}transformPoint(e,t){return this.transformAsPoint(e,t)}transformVector(e,t){return this.transformAsPoint(e,t)}transformDirection(e,t){return this.transformAsVector(e,t)}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,t,i){return this.identity().translate([e,t,i])}}function E(e){if(e>2*Math.PI)throw Error("expected radians")}},99276:(e,t,i)=>{"use strict";i.d(t,{Ph:()=>a,mk:()=>o});var r=i(18394),s=i(73238);let n=()=>{let e=(0,s.K2)();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function o(e){let t=n();for(let i of e=Array.isArray(e)?e:[e]){let e=(0,r.D)(i);t.find(t=>e===t)||t.unshift(e)}}function a(){return n()}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.